Vi this publicación que explicaba cómo hacer que BC3 funcione como la herramienta diff para Subversion ... pero ¿qué pasa con el uso de Beyond Compare 3 para hacer 3-way merge/compara?¿Cómo puedo usar Beyond Compare 3 como el diff3-cmd para svn?
Respuesta
Para hacer esto, cree un archivo por lotes llamado (por ejemplo) diff3wrap.bat, y configure su diff3-cmd en su configuración de SVN para apuntar a él.
El siguiente archivo diff3wrap.bat hará el trabajo. Crea un nombre de archivo temporal para la salida de fusión y lo elimina después de devolver los contenidos fusionados 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
Solo tengo experiencia con BC3 y TFS, así que tómenlo con un grano de sal. La combinación de 3 vías fue la única característica con la que tuve problemas. Más de una vez tuve que copiar y pegar los cambios a mano en BC3 para finalizar la fusión.
utilizo BC3 través de tortuga en Windows. Puedo decir que las decisiones que BC3 hace son consistentemente más precisas que Tortoise o la propia cli SVN. También creo perfiles personalizados para ciertos tipos de archivos/patrones que deseo anular los valores predeterminados. –
me gusta archivo por lotes de liamf, pero creo que podría tomar un pequeño ajuste:
He añadido AutoMerge y reviewconflicts a la invocación de mandato, por lo que en caso de una fusión sin conflictos sólo cierra sin intervención: la interfaz de usuario solo emergerá para revisar conflictos.
Por lo tanto, la línea en cuestión se convierte en:
%DIFF3% /automerge /reviewconflicts /lefttitle=%MYTITLE% /centertitle=%OLDTITLE% /righttitle=%YOURTITLE% /outputtitle="Merge Output" %MINE% %YOURS% %OLDER% %OUTPUTFILE%
Buena mejora ... He tomado esto en mi script de fusión BC3 estándar. ¡Gracias! – liamf
Aquí está una versión de Linux del guión de liamf que funciona 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
Aquí hay una Cygwin escritura del golpe que trabaja con Subversion 1.7 tanto para diff-cmd y 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. Edición Beyond Compare 3 deshabilitada
- 2. Usar Beyond Compare dentro de Eclipse para fusionar en Subversion
- 3. Beyond Compare 2 ignore el caso
- 4. Uso de Beyond Compare para Visual Diff en TortoiseHg
- 5. Combinaciones de Beyond Compare: ¿hay algo para tomar?
- 6. Ignorar carpetas en solución comparar con Beyond Compare
- 7. SVN branch compare
- 8. Getting Beyond Compare con Diff 2 ramas simultáneamente
- 9. Javascript compare 3 valores
- 10. Cómo usar SVN que no tiene comparación con 3
- 11. ¿Cómo hago que Beyond Compare ignore ciertas diferencias al comparar versiones de Delphi Form Files
- 12. Binary Compare DLLs
- 13. Deshacer Usar el suyo y marcar como resuelto - SVN
- 14. ¿Cómo comienzo a usar SVN?
- 15. PHP compare el tiempo
- 16. ¿Cómo puedo usar "." como el delimitador con String.split() en java
- 17. ¿Cómo puedo decir algo como HEAD-1 en svn?
- 18. ¿Cómo puedo usar ámbitos con Ransack en Rails 3?
- 19. ¿Cómo puedo usar SimpleFormController con Validator con Spring 3?
- 20. ¿Puedo usar git-svn y parecer que estaba usando SVN, si es así cómo?
- 21. ¿Cómo puedo usar el director como enrutador en expressjs
- 22. Convierta un checkout SVN para usar git (git-svn)
- 23. Cómo configurar kdiff3 como herramienta de combinación para SVN
- 24. ¿Cómo comparo dos hashes en Perl sin usar Data :: Compare?
- 25. Repositorio de Mercurial como contenedor para SVN
- 26. ¿Cómo puedo usar image_path raíles del interior 3 controlador
- 27. ¿Puedo usar una variable miembro como clave para hash_set/hash_map?
- 28. cómo ordenar un NSArray usando compare: opciones
- 29. Java compare dos mapa
- 30. ¿Cómo usar Maven 3 mixins?
En base a lo que dijo el SVN Redbook sobre esto, parece correcto ... Aceptaré la respuesta tan pronto como llegue a verificarlo. – paxos1977
Acabo de probarlo y funciona (una vez que reemplaza la línea DIFF3 establecida con la ruta de instalación correcta para su caja). –