2013-03-20 40 views
1

如何使用SVNKit在SVN中提交特定文件而不是整個目錄?使用SVNKit在SVN中提交特定文件

代碼提交整個目錄:

 ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager((String) session.getAttribute("USERNAME"), (String) session.getAttribute("PASSWORD")); 
     repository.setAuthenticationManager(authManager); 

     SVNClientManager ourClientManager = SVNClientManager.newInstance(null,repository.getAuthenticationManager()); 
     SVNUpdateClient updateClient = ourClientManager.getUpdateClient(); 
     updateClient.doUpdate(wcDir, SVNRevision.HEAD, SVNDepth.INFINITY, false, false); 
     ourClientManager.getWCClient().doInfo(wcDir, SVNRevision.HEAD); 
     SVNCommitInfo s1=ourClientManager.getCommitClient().doCommit(new File[] {wcDir}, true, "From Code", svnProperties.getRegularProperties(), null, true, false, SVNDepth.INFINITY); 
+1

請發佈您當前使用的代碼來提交整個目錄。 – mstrap 2013-03-20 10:06:09

回答

7

如果使用SVNKit作爲一個庫,使用此代碼:如果您使用SVNKit作爲命令行工具

final SvnOperationFactory svnOperationFactory = new SvnOperationFactory(); 
try { 
    final SvnCommit commit = svnOperationFactory.createCommit(); 
    commit.setSingleTarget(SvnTarget.fromFile(file)); 
    commit.setCommitMessage("Commit message"); 
    final SVNCommitInfo commitInfo = commit.run(); 
} finally { 
    svnOperationFactory.dispose(); 
} 

,運行:

$ jsvn commit path/to/file 

更新: 這裏是代碼爲1.3.x

final SVNClientManager clientManager = SVNClientManager.newInstance(); 
try { 
    final SVNCommitClient commitClient = clientManager.getCommitClient(); 
    final SVNCommitInfo commitInfo = commitClient.doCommit(new File[]{file}, false, "Commit message", null, null, false, false, SVNDepth.INFINITY); 
} finally { 
    clientManager.dispose(); 
} 
+0

我正在使用svnkit 1.3.5 jar文件。當使用上面的代碼時,它顯示我錯誤。 – 2013-03-20 12:45:20

+0

此代碼適用於SVNKit 1.7.x.對於1.3.x,使用SVNClientManager創建SVNCommitClient並調用要提交的文件的SVNCommitClient#doCommit。 – 2013-03-20 12:59:06

+0

我粘貼了我的代碼來提交整個目錄。但我無法提交特定的文件。 – 2013-03-20 13:03:28

相關問題