java git diff

文本比对

最近项目上需要对比用户对配置的修改,用到了git的比对功能,在这里写一个demo实验一下

maven依赖

       
           org.eclipse.jgit
           org.eclipse.jgit
           5.1.3.201810200350-r
       

Demo


import java.io.ByteArrayOutputStream;
import java.io.File;
import org.eclipse.jgit.diff.DiffAlgorithm;
import org.eclipse.jgit.diff.DiffAlgorithm.SupportedAlgorithm;
import org.eclipse.jgit.diff.DiffFormatter;
import org.eclipse.jgit.diff.Edit;
import org.eclipse.jgit.diff.EditList;
import org.eclipse.jgit.diff.HashedSequence;
import org.eclipse.jgit.diff.HashedSequenceComparator;
import org.eclipse.jgit.diff.LowLevelDiffAlgorithm;
import org.eclipse.jgit.diff.MyersDiff;
import org.eclipse.jgit.diff.RawText;
import org.eclipse.jgit.diff.RawTextComparator;
import org.eclipse.jgit.diff.Sequence;
import org.eclipse.jgit.internal.JGitText;

/**
 * @ClassName TestDiff
 * @Description 对比文件
 * @Author ccm
 * @Date 2019/7/3 下午1:52
 * @Version 1.0
    **/
    public class TestDiff {



  public static void main(String[] args) {
    args = new String[]{"/users/didi/desktop/补充数据.sh","/users/didi/desktop/补充数据1.sh"};
    if (args.length != 2) {
      System.err.println(JGitText.get().need2Arguments);
      System.exit(1);
    }

    try {
      RawText a = new RawText(new File(args[0]));
      RawText b = new RawText(new File(args[1]));
      EditList r = DiffAlgorithm.getAlgorithm(SupportedAlgorithm.MYERS).diff(RawTextComparator.DEFAULT, a, b);
      System.out.println(r.toString());
    
      ByteArrayOutputStream out = new ByteArrayOutputStream();
      DiffFormatter formatter = new DiffFormatter(out);
      formatter.format(r,a,b);
      System.out.println(new String(out.toByteArray()));
      out.close();
      formatter.close();
    } catch (Exception var4) {
      var4.printStackTrace();
    }

  }

}

结果

EditList[INSERT(2-2,2-4), REPLACE(4-5,6-13)]
@@ -1,5 +1,13 @@
 for i in {1..5}; do     dt=`date -d "$i day ago" '+%Y-%m-%d'`;   echo $dt  ; sh a.sh $dt; done
 
+agac
+
 for i in {1..5}; do     dt=`date -d "$i day ago" '+%Y-%m-%d'`;   echo $dt  ; sh a.sh $dt; done
 
-for i in {1..5}; do     dt=`date -d "$i day ago" '+%Y-%m-%d'`;   echo $dt  ; sh b.sh $dt; done
\ No newline at end of file
+for i in {1..5}; do     dt=`date -d "$i day ago" '+%Y-%m-%d'`;   echo $dt  ; sh b.sh $dt; done
+
+abac
+case word in
+ pattern )
+  ;;
+esac
\ No newline at end of file

你可能感兴趣的:(java git diff)