2009-02-14 15 views

risposta

16

Il trucco è che i percorsi cygwin non sono gli stessi dei percorsi di Windows, quindi è necessario un piccolo script che converta i percorsi cygwin in percorsi Windows prima di passarli come argomenti a WinMerge.

Ecco come si fa:

(1) Creare uno script di shell in /usr/bin/winmerge come segue:

#!/bin/sh 
"/cygdrive/c/Program Files/WinMerge/WinMergeU.EXE" /e /ub /dl other /dr local `cygpath -aw $1` `cygpath -aw $2` `cygpath -aw $3` 

Nota: cygpath converte i nomi di percorso. Se WinMerge non si trova nella posizione predefinita, modificare qui il percorso.

(2) fare quel file eseguibile

chmod +x /usr/bin/winmerge 

(3) Aggiungere la seguente al file ~/.hgrc:

[ui] 
merge = winmerge 

[merge-tools] 
winmergeu.executable=/usr/bin/winmerge 
winmergeu.args=$other $local $output 
winmergeu.fixeol=True 
winmergeu.checkchanged=True 
winmergeu.gui=False 

Nota! Probabilmente hai già una sezione [ui] con il tuo nome. Ricordati di unire le mie modifiche con le tue, non aggiungere solo una nuova sezione [ui]. Ad esempio, il mio .hgrc assomiglia a questo:

[ui] 
username = Joel Spolsky <[email protected]> 
merge = winmergeu 

[extensions] 
fetch = 

[merge-tools] 
winmergeu.executable=/usr/bin/winmerge 
winmergeu.args=$other $local $output 
winmergeu.fixeol=True 
winmergeu.checkchanged=True 
winmergeu.gui=False 
+0

Ora puoi accettare la tua risposta, vero? –

+0

devo aspettare 48 ore. –

+0

Probabilmente non avrei messo quello script in/usr/bin /. Stavo per inseguirti per non aver usato cygpath, ma poi ho fatto scorrere il blocco di codice e ho visto cosa stai facendo. –

0

Ecco la linea di script di shell che lavora per Subversion/Cygwin/WinMerge. La principale differenza è quali argomenti usare.

/cygdrive/c/Program\ Files/WinMerge/WinMergeU.exe /e /ub /dl "$3" /dr "$5" "`cygpath -aw $6`" "`cygpath -aw $7`" & 

Si noti che questo esempio imposta anche i campi di descrizione e lancia i confronti in background, in modo che tutte le diff sono lanciate in una sola volta. Se non ti piace, rimuovere "&".

Se non sai cosa ti passa il programma di controllo di revisione, prova ad aggiungere "echo $ @" allo script della shell. Stampa gli argomenti passati allo script.