Ho visto il posting this che spiegava come far funzionare BC3 come strumento di diff per Subversion ... ma per quanto riguarda l'utilizzo di Beyond Compare 3 per eseguire un unione/confronto a 3 vie?Come posso usare Beyond Compare 3 come diff3-cmd per svn?
risposta
Per fare ciò, creare un file batch chiamato (ad esempio) diff3wrap.bat e impostare diff3-cmd nella configurazione SVN in modo che punti.
Il seguente file diff3wrap.bat eseguirà il lavoro. Crea un nome file temporaneo per l'output di tipo merge e lo elimina dopo aver restituito il contenuto unito a SVN.
@ECHO OFF
SET DIFF3="C:\Program Files\BeyondCompare3\BComp.exe"
REM Subversion provides the paths we need as the last three parameters
REM These are parameters 9, 10, and 11.
REM Suitable titles for these three panes in the merge tool are in parameters 4, 6 and 8 respectively.
REM But we have access to only nine parameters at a time, so we shift our nine-parameter window
REM twice to let us get to what we need, thus changing the effective positions of the various parameters.
REM
SHIFT
SHIFT
SET MYTITLE=%2
SET OLDTITLE=%4
SET YOURTITLE=%6
SET MINE=%7
SET OLDER=%8
SET YOURS=%9
SET OUTPUTFILE=%OLDER%_%RANDOM%.merge
REM Call BeyondCompare to perform the actual merge
REM Note we give it a temporary output file and echo the output back out for SVN to use as the merged file
%DIFF3% /lefttitle=%MYTITLE% /centertitle=%OLDTITLE% /righttitle=%YOURTITLE% /outputtitle="Merge Output" %MINE% %YOURS% %OLDER% %OUTPUTFILE%
if NOT %errorlevel% == 0 goto :mergenotcomplete
REM Merge complete. Echo the output to stdout for SVN to pick up as the result, then throw away the temporary file
TYPE %OUTPUTFILE%
del /f /q %OUTPUTFILE%
exit 0
:mergenotcomplete
exit 1
Ho solo esperienza con BC3 e TFS, quindi prendi questo con un pizzico di sale. L'unione a 3 vie è stata l'unica funzione con cui ho avuto problemi. Più di una volta ho dovuto copiare e incollare le modifiche manualmente in BC3 per completare l'unione.
Io uso BC3 attraverso Tortoise su Windows. Posso dire che le decisioni prese da BC3 sono sempre più accurate di Tortoise o di SVN stesso. Creo anche profili personalizzati per determinati tipi di file/modelli su cui sovrascrivere i valori predefiniti. –
Mi piace file batch di liamf, ma penso che potrebbe prendere un tweak minore:
ho automerge e reviewconflicts al comando invocazione aggiunto, in modo che in caso di una fusione senza conflitti solo chiude senza intervento: l'interfaccia utente verrà visualizzata solo per esaminare i conflitti.
Così, la linea in questione diventa:
%DIFF3% /automerge /reviewconflicts /lefttitle=%MYTITLE% /centertitle=%OLDTITLE% /righttitle=%YOURTITLE% /outputtitle="Merge Output" %MINE% %YOURS% %OLDER% %OUTPUTFILE%
Bel miglioramento ... l'ho preso nel mio script di unione standard BC3. Grazie! – liamf
Ecco una versione Linux di sceneggiatura di liamf che funziona con svn 1.6.
#!/bin/bash
MYTITLE=$4
OLDTITLE=$6
YOURTITLE=$8
MINE=$9
OLDER=${10}
YOURS=${11}
OUTPUTFILE=${MINE}.merge
/usr/bin/bcompare -solo -automerge -force -reviewconflicts -favorleft -lefttitle=$MYTITLE -centertitle=$OLDTITLE -righttitle=$YOURTITLE -outputtitle=$OUTPUTFILE $MINE $YOURS $OLDER $OUTPUTFILE
RESULT=$?
if [ $RESULT -eq 0 ] ; then
cat $OUTPUTFILE
exit 0
else
exit 1
fi
Ecco un Cygwin sceneggiatura bash che funziona con Subversion 1.7 sia per diff-cmd e diff3-cmd
#!/bin/bash
# Set path to BeyondCompare
bcomp=~/bin/bcomp;
function bcerrlvl() {
echo -en "$1\t";
case $1 in
0) echo "Success";;
1) echo "Binary same";;
2) echo "Rules-based same";;
11) echo "Binary differences";;
12) echo "Similar";;
13) echo "Rules-based differences";;
14) echo "Conflicts detected";;
100) echo "Error";;
101) echo "Conflicts detected, merge output not saved";;
*) echo "Error";;
esac;
return $1;
}
if [ "$1" = "-u" ];
then
# paths
left=$(cygpath --dos "$6");
right=$(cygpath --dos "$7");
# titles
titleleft="$3";
titleright="$5";
# compare command
$bcomp -title1="$titleleft" -title2="$titleright" "$left" "$right";
if [ $? -gt 0 ];
then
bcerrlvl $?;
exit $?;
else
exit 0;
fi;
elif [ "$1" = "-E" ];
then
# Get to the tenth and eleventh arguments
shift; shift;
# paths
centre=$(cygpath --dos "$7");
left=$(cygpath --dos "$8");
right=$(cygpath --dos "$9");
outext="_$(date +%s)-$RANDOM.merge";
output="$(cygpath --dos "$8")_$outext";
# titles
titlecentre=$2;
titleleft=$4;
titleright=$6;
titleoutput="Merge Output";
# compare command
$bcomp -title1="$titleleft" -title2="$titleright" -title3="$titlecentre" \
-outputtitle="$titleoutput" -automerge -reviewconflicts \
"$left" "$right" "$centre" "$output";
if [ $? -eq 0 ];
then
outfile=$(cygpath --unix "$output");
cat $outfile
rm -f $outfile
exit 0;
else
bcerrlvl $?;
exit $?;
fi;
fi;
- 1. OSX Utilizzando Beyond Compare come git difftool
- 2. git difftool non si avvia Beyond Compare
- 3. Uso di Beyond Compare per Visual Diff in TortoiseHg
- 4. Beyond Compare unisce - c'è un take all?
- 5. Confronto riga per riga (ignorando l'ordine) utilizzando Beyond Compare 3 o 4
- 6. Come rendere Beyond Compare ignora gli spazi, ma mostra ancora le modifiche nei commenti
- 7. Posso usare legalmente una struct con operatore overload() come Compare per std :: upper_bound?
- 8. Come usare wxPython per Python 3?
- 9. Come usare flake8 per Python 3?
- 10. Hudson: come faccio a usare una build parametrizzata per eseguire svn checkout e svn tag?
- 11. Come faccio a fare in modo che Beyond Compare ignori certe differenze confrontando le versioni di Delphi Form File
- 12. Come posso usare SUM() OVER()
- 13. Come posso usare parseInt per un doppio?
- 14. Come posso usare conda per installare pydot?
- 15. Come posso usare conda per installare pydotplus
- 16. Come posso usare numpy.correlate per eseguire l'autocorrelazione?
- 17. Come posso usare quel codice per usare LINQ
- 18. Come configare maven per usare il servlet 3
- 19. SVN Crea directory come trunk ecc.
- 20. Come usare svn su un server live Apache?
- 21. Come posso ottenere TeamCity per verificare gli esterni SVN?
- 22. Posso usare enum come ConverterParameter?
- 23. iPhone: come posso usare gcov?
- 24. Posso usare cStringIO come StringIO?
- 25. Come posso usare strlen in php per persiano?
- 26. Come posso usare `str.format` direttamente come` __repr__`?
- 27. Come posso usare unicorno come "rotaie s"?
- 28. Come posso usare un'espressione regolare per convalidare l'input del mese?
- 29. Come posso usare linq per ordinare per più campi?
- 30. git svn - Posso usare git e svn allo stesso tempo? non c'è bisogno di interazione tra git e svn
Sulla base di ciò che il Redbook SVN ha detto a riguardo, questo sembra giusto ... Accetterò la risposta non appena riesco a controllarla. – paxos1977
L'ho appena testato e funziona (dopo aver sostituito la linea DIFF3 impostata con il percorso di installazione corretto per la tua scatola). –