2017-03-31 13 views
1

SvnKit을 사용하여 두 개의 리비전 사이에서 Diffs를 얻고 싶습니다. 설명서를 살펴본 결과 SVNRepository 클래스에서이 메서드가 발견되었지만 로컬 복사본과 원격 복사본 사이의 차이점 만 검사합니다.Svnkit : 두 커밋 사이의 차이점을 원격으로 수정하기

diff(SVNURL url, long targetRevision, long revision, java.lang.String target, boolean ignoreAncestry, SVNDepth depth, boolean getContents, ISVNReporterBaton reporter, ISVNEditor editor) 

저장소를 다운로드하지 않고 개정의 범위에 대한 특정 저장소의 DIFF를 얻을 수 어쨌든 있나요?

답변

1

SVNKit에는 몇 가지 API가 있고 SVNRepository 기반 API는 가장 낮은 수준이므로 Subversion 내부 기능을 사용하려면 SVNKit 내부 API를 사용하는 데 상당한 경험이 있어야합니다.

"svn diff"명령과 매우 유사하게 작동하는 SvnOperationFactory 기반 API를 사용하는 것이 좋습니다.

final SvnOperationFactory svnOperationFactory = new SvnOperationFactory(); 
    try { 
     final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 
     final SvnDiffGenerator diffGenerator = new SvnDiffGenerator(); 
     diffGenerator.setBasePath(new File("")); 

     final SvnDiff diff = svnOperationFactory.createDiff(); 
     diff.setSources(SvnTarget.fromURL(url, SVNRevision.create(revision1)), url, SVNRevision.create(revision2))); 
     diff.setDiffGenerator(diffGenerator); 
     diff.setOutput(byteArrayOutputStream); 
     diff.run(); 
    } finally { 
     svnOperationFactory.dispose(); 
    } 

SVNRepository # diff는 이것을 제외하고 많은 작업을합니다. 출력을 더 많이 제어해야하는 경우 사용자 고유의 ISvnDiffGenerator를 구현하여 작업에 전달할 수 있습니다.