Dear Wiki user, You have subscribed to a wiki page or wiki category on "Subversion Wiki" for change notification.
The "ListOfDiffApplications" page has been changed by GabrielaGibson: http://wiki.apache.org/subversion/ListOfDiffApplications New page: {{{ Codewarrior (Windows, Linux) Graphical Client http://www.freescale.com/webapp/sps/site/homepage.jsp?code=CW_HOME Manual: No entry found. However, CW apparently does have a diff. svnX code to make this work: codewarrior_diff() { osascript -e \ "set file1 to POSIX file \"$1\" set file2 to POSIX file \"$2\" tell application \"CodeWarrior IDE\" activate Compare Files file1 to file2 without case sensitive and ignore extra space end tell" } http://svnx.googlecode.com/svn-history/r137/trunk/Resources/svndiff.sh ----------- TextWrangler (Mac) Graphical Client http://www.barebones.com/products/textwrangler The complete command line syntax for the “twdiff” tool is twdiff [ --<options> ] [ OLDFILE NEWFILE | OLDFOLDER NEWFOLDER] NOTE: diff-cmd=/usr/local/bin/twdiff diff-extensions=--wait It's important to note that the 'diff-extensions=--wait' needs to be included. If you exclude it, two temporary files are created from the different SVN files you are diff'ing BUT they are almost immediately deleted by the SVN client, and it's impossible to compare the differences. With it included, the files are preserved until TextWrangler is finished, and control is returned back to the svn client (which will clean up those temporary files according to its own rules/preferences/settings). https://groups.google.com/forum/?fromgroups=#!topic/textwrangler/sb6f-894uyg Patrick from Barebones kindly sent me the manual: TWDIFF(1) Command Line Tools Reference TWDIFF(1) NAME twdiff - find file differences with TextWrangler. SYNOPSIS twdiff [ --<options> ] [ NEWFILE OLDFILE | NEWFOLDER OLDFOLDER | NEWFILE OLDFOLDER ] DESCRIPTION The twdiff tool is a simple utility that allows you to specify two files, or folders, for comparison via TextWrangler's Find Differences command. Type 'twdiff' followed by two file or folder names to invoke Find Differences on those items. In addition to direct file-to-file and folder-to-folder comparisons, the twdiff tool supports an additional command form: twdiff [options] file /path/to/some/folder If "/path/to/some/folder/file" exists, then "file" will be compared against "/path/to/some/folder/file". Otherwise, an error is reported. TextWrangler is a freeware text editor from Bare Bones Software. OPTIONS The twdiff tool accepts only long form switches (options preceded by two dashes). The options offered by the twdiff tool mirror the settings available in the Find Differences dialog. Use "--" to end switch parsing. For example, to find differences between a file named "-a" and a file named "-z", use: twdiff -- -a -z --case-sensitive Equivalent to the "Case Sensitive" option in the dialog. If you use this option, the comparison will be performed with case sensitivity on. --flatten-folders Equivalent to the "Flatten Hierarchies" option in the dialog. If you use this option, TextWrangler considers the files in the folders as a single flat list, allowing a file in one folder to match a file of the same name in the other folder, regardless of whether they are in the same subfolder in both hierarchies. --help Display a basic help line with a summary of the available options. --ignore-curly-quotes Equivalent to the "Ignore Curly Quotes" option in the dialog. If you use this option, straight quotes and curly (typographer's) quotes will be considered identical for purposes of comparison. --ignore-extra-spaces Equivalent to the "Ignore Spaces: Runs" option in the dialog. If you use this option, whitespace runs of any length will be considered identical for purposes of comparison. --ignore-leading-spaces Equivalent to the "Ignore Spaces: Leading" option in the dialog. If you use this option, whitespace runs of any length at the beginning of a line will be considered identical for purposes of comparison. --ignore-trailing-spaces Equivalent to the "Ignore Spaces: Trailing" option in the dialog. If you use this option, whitespace runs of any length at the end of a line will be considered identical for purposes of comparison. --ignore-spaces Equivalent to using all three of the preceding --ignore...spaces options together. --resume Used in combination with --wait, this switch will cause the application which was frontmost when the twdiff tool was invoked to be made frontmost again once you close the files specified on the command line. --reverse Reverses the order of the arguments passed to BBEdit. This switch may be useful when you don't have direct control over the order of the arguments passed from an external source, e.g. when using bbdiff as a svn diff helper, but would like the arguments to be reversed before being passed to BBEdit. --short-version Display the short-form version number of the twdiff command line tool. --show-identical-files Equivalent to the "List Identical Files" option in the dialog (for folder comparisons). If you use this option, TextWrangler will list all common files in the compared folders regardless of their differences state. Otherwise, TextWrangler will list only files for which there are changes (paired files having differences) in the set of items that appear in both folders. --skip-shielded-folders Equivalent to the "Skip (...) Folders" option in the dialog (for folder comparisons). If you use this option, TextWrangler will ignore all files contained in folders whose names are enclosed in parentheses when performing the comparison. --text-files-only Equivalent to the "Only List Text Files" option in the dialog (for folder comparisons). If you use this option, TextWrangler will compare only files which it considers to be text files when performing the comparison. Otherwise, TextWrangler will compare all files present in the chosen folders. TextWrangler will consider a file to be a text file if it has a type of "TEXT" (or other well-known text type), or, if the file is typeless, according to the option chosen for "If file's encoding can't be guessed, use:" in the Text Encodings preference panel. --version Display the current version number of the twdiff command line tool and the TextWrangler application. --wait Wait until the file is closed in TextWrangler. Normally, the twdiff tool exits immediately after the specified files or folders are opened in TextWrangler. The --wait switch allows the twdiff tool to be used as an external differences engine for Unix tools that support such an option, by not returning back to the calling tool in the Terminal until the editing session is over. AUTHORS Bare Bones Software, Inc. Web site: http://www.barebones.com/ Email: [email protected] 03/25/2013 Bare Bones Software, Inc. TWDIFF(1) ----------- BBEdit (Mac) Graphical Client uses 'bbdiff' The complete command line syntax for the “bbdiff” tool is bbdiff [ --<options> ] [ OLDFILE NEWFILE | OLDFOLDER NEWFOLDER] ----------- Araxis Windows (OS X) Graphical Client http://www.araxis.com/merge/scm_integration.html#Subversion NOTE: not sure if this is Araxis internal config or the direct command that is passed to SVN.(I think it's the latter) "Open your ‘SVN configuration area’ configuration file in a text editor. The default location for this file is %APPDATA%\Subversion\config." diff-cmd = C:\Program Files\Araxis\Araxis Merge\AraxisSVNDiff.exe SvnX calls araxis like so: /usr/local/bin/araxissvndiff "$file1" "$file2" "$file1" "$file2" ;; araxissvndiff [-? | -h] <firstTitle> <secondTitle> <firstFile> <secondFile> To use araxissvndiff with the Subversion command-line tools, edit your ~/.subversion/config so that the diff-cmd property in the [helpers] section references araxissvndiff. For example: diff-cmd = /Applications/Araxis\ Merge/Utilities/araxissvndiff This line is commented-out in the default configuration file, so you should remove the # character and space at the start if present. araxissvndiff3 This utility can be used to enable the Subversion command-line utility (svn) to use Araxis Merge to merge files. Usage araxissvndiff3 [-? | -h] <mineTitle> <olderTitle> <yoursTitle> <mineFile> <olderFile> <yoursFile> To use araxissvndiff3 with the Subversion command-line tools, edit your ~/.subversion/config so that the diff3-cmd property in the [helpers] section references araxissvndiff3. For example: diff3-cmd = /Applications/Araxis\ Merge/Utilities/araxissvndiff3 This line is commented-out in the default configuration file, so you should remove the # character and space at the start if present. ----------- DiffMerge (Windows, Mac OS X, and Linux) Graphical Client SYNOPSIS diffmerge [options] [pathname1 [pathname2 [pathname3]]] Man page: https://github.com/bagilevi/homefiles/blob/master/bin/diffmerge.man1 other info that may be useful (or not): Uses TortoiseSVN and it looks like that is the only option -- nothing else is mentioned in the DiffMerge manual -- it points here: http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-settings.html#tsvn-dug-settings-progs [DiffMergePath]\DiffMerge.exe /t1=Mine /t2=Original %mine %base Syntax for 'VSS' looks like this: Operation: File Difference File Extension: .* Command: [DiffMergePath]\diffmerge.exe –title1=”original version” –title2=”modified version” %1 %2 Operation: File Merge File Merge: .* Command: [DiffMergePath]\diffmerge.exe –title1=”source branch” –title2=”base version” –title3=”destination branch” –result=%4 %1 %3 %2 There isn't an entry in the manual that actually describes the diffmerge tool itself. ----------- TortoiseSVN Graphical Client, see DiffMerge ---------- Rhapdosy (Windows) Graphical Client http://www.ibm.com/developerworks/wikis/download/attachments/121930141/Using_Rhapsody_with_Subversion1.pdf uses Diffmerge: For each of the file types added to the Advanced list found within the Diff Viewer pane, add the following to the External Program field: <Path to Rhapsody Install>\DiffMerge.exe -xcompare -base %base %theirs %mine For each of the file types added to the Advanced list found within the Merge Tool pane, add the following to the External Program field: <Path to Rhapsody Install>\DiffMerge.exe -xmerge -base %base %theirs %mine -out %merged ---------- KDiff3 (Linux) Graphical Client http://kdiff3.sourceforge.net/doc/documentation.html Command line tool with an editor (not sure if that counts as graphical, it could be ed!) SYNOPSIS KDiff3 [QT options] [KDE options] [KDiff3 options] [File1/base] [File2] [File3] Options: -m, --merge Merge the input. -b, --base file Explicit base file. For compatibility with certain tools. -o, --output file Output file. Implies -m. E.g.: -o newfile.txt --out file Output file, again. (For compatibility with certain tools.) --auto No GUI if all conflicts are auto-solvable. (Needs -o file) --qall Don't solve conflicts automatically. (For compatibility...) --L1 alias1 Visible name replacement for input file 1 (base). --L2 alias2 Visible name replacement for input file 2. --L3 alias3 Visible name replacement for input file 3. -L, --fname alias Alternative visible name replacement. Supply this once for every input. Extra notes: http://stackoverflow.com/questions/4803881/how-to-set-kdiff3-as-merge-tool-for-svn Somewhat confused now: "Although there is a problem with kdiff3 which does not support 4 plain arguments (the svn passes 4 plain arguments to kdiff3, and it does not work), so it is usually called with a simple script to translate the arguments, e.g., "kdiff3caller":" #!/bin/sh kdiff3 $1 $2 $3 -o $4 kdiff3 dev discussion of the above: http://kde.6490.n7.nabble.com/KDiff3-subversion-support-as-merge-tool-cmd-td1446860.html ---------- MacVim Mac commandline helper for Vim style editors http://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/vimdiff.1.html#//apple_ref/doc/man/1/vimdiff vimdiff [options] file1 file2 [file3 [file4]] (Note, this diff works 4 files?) ----------- FileMerge Graphical Client http://www.defraine.net/~brunod/fmdiff/ FM uses wrapperscripts to run the commendline diff programs fmdiff canonical usecase: $ svn diff --diff-cmd fmdiff <other diff options, files or URLs> To merge your local changes with those of the repository in FileMerge, do: $ svn update --diff3-cmd fmdiff3 Code for fmdiff script: http://soft.vub.ac.be/svn-gen/bdefrain/fmscripts/fmdiff if [ -n "$mergefile" ]; then [[ "$mergefile" == */* ]] || mergefile="./$mergefile" exec "$FM" -left "$leftfile" -right "$rightfile" \ -ancestor "$leftfile" -merge "$mergefile" else exec "$FM" -left "$leftfile" -right "$rightfile" fi http://soft.vub.ac.be/svn-gen/bdefrain/fmscripts/fmdiff3 [[ "$mergefile" == */* ]] || mergefile="./$mergefile" tempfile=`mktemp -t $FMDIFF` "$FM" -left "$leftfile" -right "$rightfile" \ -ancestor "$ancestorfile" -merge "$mergefile" ----------- Kaleidoscope Mac Graphical client Uses 'Versions' as dedicated svn client http://www.kaleidoscopeapp.com/ diff-cmd = ksdiff merge-tool-cmd = ksdiff Could not find a manual on the web and don't have a mac to download the tool to have a look: http://www.kaleidoscopeapp.com/ksdiff2 have emailed them for a man page for ksdiff. ----------- p4Merge windows/unix/mac/linux Graphical client http://www.perforce.com/perforce/doc.current/manuals/cmdref/diff.html#1040665 p4 [g-opts] diff [-dflags -f -m max -sa -sb -sd -se -sr -sl -t] [file[rev#]...] (see manual page above for details on switches) Notes: http://stackoverflow.com/questions/569270/change-default-svn-diffing-tool #!/bin/sh # Configure your favorite diff program here. DIFF="/usr/bin/vimdiff" # Subversion provides the paths we need as the sixth and seventh # parameters. LEFT="$6" RIGHT="$7" # Call the diff command (change the following line to make sense for # your merge program). "$DIFF" "$LEFT" "$RIGHT" # Return an errorcode of 0 if no differences were detected, 1 if some were. # Any other errorcode will be treated as fatal. Then change your $HOME/.subversion/config file to point at that script: [helpers] diff-cmd = /home/matt/bin/diffwrap.sh ----------- Meld http://meldmerge.org/ (Software did not compile and has no plaintext documentation I could find. Filed bug on bugzilla.) http://www.rapidsvn.org/index.php/OnlineHelp:Contents#Meld_Setup_for_Use_as_Merge_Tool Meld Setup for Use as Merge Tool This is the commandline argument: "%2" "%4" "%3" http://justcheckingonall.wordpress.com/2011/03/10/svn-diff-linux/ /usr/bin/svnmeld containing: #!/bin/bash meld "$6" "$7" then chmod it as executable, and use diff-cmd = svnmeld in your SVN config file. $svn diff MyFile.txt --diff-cmd meld ----------- Guiffy windows/Mac/Linux Graphical client http://www.guiffy.com/ The Guiffy Eclipse plugin and the Guiffy NetBeans plugin performs file or folder compares, 3-way auto merges and also integrates with CVS and SVN. svn diff --diff-cmd <path to Guiffy SVN diff script> <path or file name> #!/bin/bash # Configure path to guiffy here GUIFFY=~/guiffy # Subversion provides the paths we need as the sixth and seventh parameters. # The left file will actually get expanded to the local pristine file stored # by svn. The right file is the locally modified copy. Interchange these if # you want to view it the other way in guiffy. LEFT=${6} RIGHT=${7} # Call guiffy to open its diff window to view diff and review changes $GUIFFY $LEFT $RIGHT # Now, svn expects to be returned an errorcode of 0 if no differences were # detected, 1 if some were. Any other errorcode will be treated as fatal. # Note: whether differences were found, or not found -- guiffy always # returns 0, so we will return 0 to svn and end at that. Returning anything # apart from 0 or 1 tells svn something fatal happened so it will stop # invoking guiffy after first file. exit 0 Could not locate a man page, emailed support. ----------- Roaring Diff Mac Graphical client http://www.biscade.com/tools/diff/ Using with 'svn' command line You can point svn to RoaringDiff manually every time you run svn diff: $ svn diff --diff-cmd /Applications/RoaringDiff.app/Contents/MacOS/RoaringDiff This becomes tedious quickly. If you plan to use RoaringDiff for most of your diffing, edit ~/.subversion/config and change diff-cmd in that file: ### Set diff-cmd to the absolute path of your 'diff' program. ### This will override the compile-time default, which is to use ### Subversion's internal diff implementation. # diff-cmd = diff_program (diff, gdiff, etc.) diff-cmd = /Applications/RoaringDiff.app/Contents/MacOS/RoaringDiff To use the regular GNU diff from time to time when diff-cmd is set, you can run: $ svn diff --diff-cmd diff ----------- tkdiff Graphical client man page: http://linux.math.tifr.res.in/manuals/man/tkdiff.html SYNOPSIS tkdiff to interactively pick files. tkdiff <file1> <file2> to compare two files. tkdiff -conflict <file> to merge a file with conflict markers generated by "merge" or "cvs", The file is split into two temporary files which you can then merge as usual. tkdiff <file> to compare <file> with the most recent version checked into CVS/SCCS/RCS (checked for in that order). tkdiff -r <file> to compare <file> with the most recent version checked in. tkdiff -r<rev> <file> to compare <file> with revision <rev> of <file>. tkdiff -r<rev> -r <file> to compare revision <rev> of <file> with the most recent version checked in. tkdiff -r<rev1> -r<rev2> <file> to compare revisions <rev1> and <rev2> of <file>. http://www.biscade.com/2012/06/svn-diff-wrapper-for-diff1-and-tkdiff/ #!/bin/bash # # Script to enable 'svn diff' as a GUI diff in X11 or a CLI diff # on the command line (or if stdout is redirected). # # I couldn't get tkdiff to take a -geometry argument. I ended up # setting my geometry in tkdiff's opts dictionary. # # Arguments coming in from svn diff: # # -u -L src/hello.cpp (revision 1234) -L src/hello.cpp (working copy) src/.svn/text-base/hello.cpp.svn-base src/hello.cpp # dash_u=$1 label1="$2 $3" label2="$4 $5" file1="$6" file2="$7" # echo "Comparing _$6_ and _$7_" cmd=diff if [ -t 1 -a -n "$DISPLAY" ]; then cmd=tkdiff fi $cmd "$label1" "$label2" "$file1" "$file2" RC=$? exit $RC ----------- DiffFork (Mac) Graphical client >From the manual, http://www.dotfork.com/difffork/tutorial/ Create a Python shell script svndfdiff.py with the following content (replace FULLPATH with your full difffork path): #!/usr/bin/env python import sys import os # Configure your favorite diff program here. DIFF = "FULLPATH" # Subversion provides the paths we need as the last two parameters. LEFT = sys.argv[-2] RIGHT = sys.argv[-1] # Call the diff command (change the following line to make sense for # your diff program). cmd = [DIFF, LEFT, RIGHT, '-w'] os.execv(cmd[0], cmd) # Return an errorcode of 0 if no differences were detected, 1 if some were. # Any other errorcode will be treated as fatal. In your Subversion working directory, type: svn diff --diff-cmd svndfdiff.py ----------- BeyondCompare (Windows, Linux) Graphical client http://www.scootersoftware.com/ http://www.scootersoftware.com/support.php?zz=kb_vcs Windows Diff Go into the Beyond Compare installation folder (eg, C:\Program Files\Beyond Compare 3). Create a batch file named "bc3svn.bat" with one line: "C:\Progra~1\Beyond~1\bcomp.exe" "%6" /title1=%3 "%7" /title2=%5 Go into Subversion's per-user configuration area, typically C:\Documents and Settings\<username>\Application Data\Subversion. Edit "config" and change the following lines: # [helpers] # diff-cmd = diff_program (diff, gdiff, etc.) to: [helpers] diff-cmd = C:\Progra~1\Beyond~1\bc3svn.bat Merge (v3 Pro) Go into the Beyond Compare installation folder (eg, C:\Program Files\Beyond Compare 3). Create a batch file named "bc3mer.bat" with one line: "C:\Progra~1\Beyond~1\bcomp.exe" "%2" "%3" "%1" "%4" Go into Subversion's per-user configuration area, typically C:\Documents and Settings\<username>\Application Data\Subversion. Edit "config" and change the following lines: # [helpers] # merge-tool-cmd = merge_program to: [helpers] merge-tool-cmd = C:\Progra~1\Beyond~1\bc3mer.bat Cygwin (http://www.cygwin.com/) Instead of using a batch file, create a file named "bc.sh" with the following line: "$(cygpath 'C:\Progra~1\Beyond~1\bcomp.exe')" `cygpath -w "$6"` `cygpath -w "$7"` /title1="$3" /title2="$5" /readonly Linux Diff: Create a file named /usr/bin/bcdiff.sh with the following line: /usr/bin/bcompare "$6" "$7" -title1="$3" -title2="\"$5\"" -readonly exit 0 Edit "$HOME/.subversion/config" and add the line "diff-cmd = /usr/bin/bcdiff.sh". Merge: Create a file named /usr/bin/bcmerge.sh with the following line: /usr/bin/bcompare "$2" "$3" "$1" "$4" Edit "$HOME/.subversion/config" and add the line "merge-tool-cmd = /usr/bin/bcmerge.sh" ----------- WinMerge (Windows) Graphical client http://winmerge.org/ No mention in the manual, however, I found this: http://stackoverflow.com/questions/569270/change-default-svn-diffing-tool svn diff --diff-cmd wm [optional-filename] ----------- Colordiff (Linux) perl script for command line, to colorize output. http://www.colordiff.org/ http://blog.tersmitten.nl/how-to-display-the-differences-between-two-revisions-of-a-file-in-svn.html svn diff --diff-cmd diff -x -uw -r REV1:REV2 FILE | colordiff; }}}
