2012-08-07 80 views
4

我寫一段代碼,一旦一個SVN工作副本內的任何地方執行,定位根:如何使用svnkit列出本地修改/未版本化的文件?

File workingDirectory = new File(".").getCanonicalFile(); 
File wcRoot = SVNWCUtil.getWorkingCopyRoot(workingDirectory, true); 

獲取給定的這根庫的URL,建立給出該信息的SVNClientManager現在我m停留在如何獲得不在存儲庫中的工作副本中的任何列表 - 這包括本地修改的文件,未解決的合併,未版本化的文件,我很樂意聽到任何我可能錯過的任何其他內容。

我該怎麼做? 這個片段似乎需要訪問庫本身,而不是WC:

clientManager.getLookClient().doGetChanged(...) 

回答

4

這給你的本地修改,即它不看那些在資源庫中變化的東西是不是在你的工作副本

static def isModded(SvnConfig svn, File path, SVNRevision rev) { 
    SVNClientManager mgr = newInstance(null, svn.username, svn.password) 
    logger.debug("Searching for modifications beneath $path.path @ $rev") 
    mgr.statusClient.doStatus(path, rev, INFINITY, false, false, false, false, { SVNStatus status -> 
     SVNStatusType statusType = status.contentsStatus 
     if (statusType != STATUS_NONE && statusType != STATUS_NORMAL && statusType != STATUS_IGNORED) { 
      lmodded = true 
      logger.debug("$status.file.path --> lmodded: $statusType") 
     } 
    } as ISVNStatusHandler, null) 
    lmodded 
} 

我對這個代碼是在Groovy但希望使用svnkit API是相當明顯的工作。 SvnConfig只是一個本地值對象,其中包含有關存儲庫本身的各種詳細信息。

+0

這個伎倆。非常感謝你 – radai 2012-08-08 06:55:29

9
public static List<File> listModifiedFiles(File path, SVNRevision revision) throws SVNException { 
    SVNClientManager svnClientManager = SVNClientManager.newInstance(); 
    final List<File> fileList = new ArrayList<File>(); 
    svnClientManager.getStatusClient().doStatus(path, revision, SVNDepth.INFINITY, false, false, false, false, new ISVNStatusHandler() { 
     @Override 
     public void handleStatus(SVNStatus status) throws SVNException { 
      SVNStatusType statusType = status.getContentsStatus(); 
      if (statusType != SVNStatusType.STATUS_NONE && statusType != SVNStatusType.STATUS_NORMAL 
        && statusType != SVNStatusType.STATUS_IGNORED) { 
       fileList.add(status.getFile()); 
      } 
     } 
    }, null); 
    return fileList; 
} 
+1

爲了包含未版本控制的文件,我發現我必須從'if'語句中刪除'statusType!= SVNStatusType.STATUS_NONE' – conorgriffin 2015-08-04 11:59:05

相關問題