5

SVN 作業コピー内の任意の場所で実行されると、ルートを特定するコードを書いています。

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

このルートを指定してリポジトリの URL を取得し、SVNClientManager指定したこの情報をビルドします。現在、リポジトリにない作業コピー内のすべてのリストを取得する方法に行き詰まっています。これには、ローカルで変更されたファイル、未解決のマージ、バージョン管理されていないファイルが含まれます他に聞き逃したことがあれば喜んでお聞きします。

それ、どうやったら出来るの ?このスニペットは、WC ではなく、リポジトリ自体へのアクセスを必要とするようです。

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

2 に答える 2

10
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;
}
于 2012-09-23T03:56:35.017 に答える
5

これにより、ローカルの変更が可能になります。つまり、作業コピーにないリポジトリで変更されたものは表示されません。

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 は、リポジトリ自体に関するさまざまな詳細を含む単なるローカル値オブジェクトです。

于 2012-08-07T18:43:26.390 に答える