9/24/2014

Diff tools: diff, vimdiff, opendiff & twdiff

4 diff tools that can be executed from command line:

  1. diff (/usr/bin/diff): pure CLI with text output, available in any terminals:
    /tmp > diff Hello.java Hello2.java
    
    1c1
    < public class Hello {
    ---
    > public class Hello2 {
    3c3
    <         System.out.println("Hello from " + Hello.class);
    ---
    >         System.out.println("Hello2 from " + Hello2.class);
    

    use -wub option to view contextual diff:
    /tmp > diff -wub Hello.java Hello2.java
    
    --- Hello.java 2014-09-24 13:16:55.000000000 -0400
    +++ Hello2.java 2014-09-24 13:18:01.000000000 -0400
    @@ -1,5 +1,5 @@
    -public class Hello {
    +public class Hello2 {
         public static void main(String[] args) {
    -        System.out.println("Hello from " + Hello.class);
    +        System.out.println("Hello2 from " + Hello2.class);
         }
     }
    

  2. vimdiff (/usr/bin/vimdiff): part of vim, available in any terminals, pure CLI but blocks the current terminal:
    vimdiff Hello.java Hello2.java
    

  3. opendiff (/usr/bin/opendiff): part of Mac OS xcode tools, launches a FileMerge window for diff and merge:  
    opendiff Hello.java Hello2.java
    



  4. twdiff (/usr/local/bin/twdiff): command line tool of TextWrangler, and launches 3 separate TextWrangler windows (left, right and bottom) for diff and merge.
    twdiff Hello.java Hello2.java