2013-03-22 7 views
0

SVNKit에서 사용할 수있는 API를 사용하여 SVN에 파일을 커밋합니다.dir의 버전이 있는지 여부를 확인하는 SVN API

ourClientManager.getCommitClient().doCommit(mypaths, kpLocks, "", force-yes, recursive-true); 

파일을 체크인하기 전에 파일의 디렉토리가 작업 사본인지 아닌지 확인하고 싶습니다. 이 정보를 얻기 위해 사용할 수있는 API를 제안 해주십시오.

답변

2

는이를 알아 내기 위해 상태를 사용하려면 :

ourClientManager.getStatusClient().doStatus(path, false).isVersioned()

개 이상의 파일이 당신이 아마 ISVNStatusHandler를 작성하는 것이 좋습니다 버전이 경우 파악하려면

. SVNKit 문서에

링크 : http://svnkit.com/javadoc/org/tmatesoft/svn/core/wc/SVNStatusClient.html

+0

나는이 정보 = ourClientManager.getStatusClient() doStatus (파일, 거짓)를 사용하려고 수정 버전없는 파일의 목록을 가져올 방법을 다음 사용할 수 있습니다; -하지만이 줄은 SVN Exception을 제공합니다 - 파일이 작동하지 않습니다 copy - 여기에 새로운 패키지가 있습니다 .. – Krishnaveni

+0

즉, 파일이 작업 복사본에 없음을 의미합니다. 임의 파일의 버전이 확인되었는지 확인하려면 작업 복사본에서 예외를 잡으려고합니다. 다른 가능성은 작업 복사본이 사용중인 라이브러리와 호환되지 않는다는 것입니다. 그러나 SVNKit이 1.6 및 1.7 작업 복사본 형식을 처리 할 것이라고 생각합니다. 따라서 여기서는 문제가되지 않을 것입니다. –

+0

예외를 잡아서 할 수 있습니다 ... 감사합니다. – Krishnaveni

2

이 SVNKit 개발자로서 당신이 SVNWCUtil # isVersionedDirectory 또는 SvnOperationFactory # isVersionedDirectory를 사용하는 것이 좋습니다.

SvnOperationFactory # isVersionedDirectory는 매우 특별한 경우를 구별하는 데 사용되는 "isAdditionMode"매개 변수를 사용할 수 있습니다. 작업 복사본에 중첩 된 작업 복사본을 가리키는 버전없는 심볼릭 링크가 있습니다. "svn add"를 제외한 모든 작업에 대해이 심볼릭 링크는 작업 복사본 (특히 "svn info this_symlink"는 중첩 된 작업 복사본에 대한 정보를 표시 함)을 가리 키므로 버전 관리 된 것으로 간주되어야하지만 "svn add"를 고려해야합니다 unversioned로 사용자가 svn : special 속성 (작업 카피가 이미 버전 화되어 있다는 오류를 표시하는 대신)으로 파일을 저장소에 추가 할 수 있도록합니다. .

1

안녕하세요 당신은

public List<SVNStatus> getCommitableFiles(File path, String revision) throws SVNException { 
    SVNClientManager svnClientManager = SVNClientManager.newInstance(); 
    final List<SVNStatus> allSVNStatus = new ArrayList<SVNStatus>(); 
    svnClientManager.getStatusClient().doStatus(path, SVNRevision.parse(revision), SVNDepth.INFINITY, false, false, false, false, new ISVNStatusHandler() { 
     public void handleStatus(SVNStatus status) throws SVNException { 
      SVNStatusType statusType = status.getContentsStatus(); 
      if (statusType != SVNStatusType.STATUS_NONE && statusType != SVNStatusType.STATUS_NORMAL 
        && statusType != SVNStatusType.STATUS_IGNORED) { 
       allSVNStatus.add(status); 
      } 
     } 
    }, null); 

    return allSVNStatus; 
}