subversion-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Apache subversion Wiki <comm...@subversion.apache.org>
Subject [Subversion Wiki] Update of "ListOfDiffApplications" by GabrielaGibson
Date Wed, 27 Mar 2013 23:59:35 GMT
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: support@barebones.com



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;
}}}

Mime
View raw message