SVN API,用于查找目录是否已版本化

SVN API,用于查找目录是否已版本化,svn,svnkit,Svn,Svnkit,我正在使用SVNKit中可用的API将文件提交给SVN ourClientManager.getCommitClient().doCommit(mypaths, kpLocks, "", force-yes, recursive-true); 在签入文件之前,我想确定文件的目录是否是工作副本的一部分。 您能否建议我可以使用什么API来获取此信息。您想使用status来解决此问题: ourClientManager.getStatusClient().doStatus(路径,false).isV

我正在使用SVNKit中可用的API将文件提交给SVN

ourClientManager.getCommitClient().doCommit(mypaths, kpLocks, "", force-yes, recursive-true);
在签入文件之前,我想确定文件的目录是否是工作副本的一部分。
您能否建议我可以使用什么API来获取此信息。

您想使用status来解决此问题:

ourClientManager.getStatusClient().doStatus(路径,false).isVersioned()

如果要确定是否对多个文件进行了版本控制,您可能需要编写一个
ISVNStatusHandler

链接到SVNKit文档:

您想使用状态来解决这个问题:

ourClientManager.getStatusClient().doStatus(路径,false).isVersioned()

如果要确定是否对多个文件进行了版本控制,您可能需要编写一个
ISVNStatusHandler

链接到SVNKit文档:

作为SVNKit开发人员,我建议您使用SVNWCUtil#isVersionedDirectory或SVNoOperationFactory#isVersionedDirectory


SvnOperationFactory#isVersionedDirectory可以接受“isAdditionMode”参数,该参数用于区分非常特殊的情况:在工作副本中,有一个指向嵌套工作副本的未版本符号链接。对于除“svn add”之外的所有操作,此符号链接应视为版本化,因为它指向一个工作副本(特别是“svn info this_symlink”显示该嵌套工作副本的信息),但对于“svn add”应视为未版本化,以允许用户将其作为具有svn:special属性的文件添加到存储库中(而不是显示工作副本已版本化的错误)。

作为SVNKit开发人员,我建议您使用SVNWCUtil#isVersionedDirectory或SVNoOperationFactory#isVersionedDirectory


SvnOperationFactory#isVersionedDirectory可以接受“isAdditionMode”参数,该参数用于区分一种非常特殊的情况:在工作副本中,有一个指向嵌套工作副本的未版本化符号链接。对于除“svn add”之外的所有操作,此符号链接应视为已版本化,因为它指向工作副本(特别是“svn info this_symlink”显示该嵌套工作副本的信息),但对于“svn add”,应将其视为未版本,以允许用户将其作为具有svn:special属性的文件添加到存储库中(而不是显示工作副本已版本化的错误).

您好,您可以使用以下方法获取已修改和未版本文件的列表

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;
}
public List getcommitteblefiles(文件路径、字符串修订)引发SVNException{
SVNClientManager SVNClientManager=SVNClientManager.newInstance();
最终列表allSVNStatus=new ArrayList();
svnClientManager.getStatusClient().doStatus(路径,SVNRevision.parse(修订),SVNDepth.INFINITY,false,false,false,new-ISVNStatusHandler()){
public void handleStatus(SVNStatus状态)引发SVNException{
SVNStatusType statusType=status.getContentsStatus();
如果(statusType!=SVNStatusType.STATUS\u无&&statusType!=SVNStatusType.STATUS\u正常
&&statusType!=SVNStatusType.状态(忽略){
allSVNStatus.add(状态);
}
}
},空);
返回所有svnstatus;
}

您好,您可以使用以下方法获取已修改和未版本文件的列表

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;
}
public List getcommitteblefiles(文件路径、字符串修订)引发SVNException{
SVNClientManager SVNClientManager=SVNClientManager.newInstance();
最终列表allSVNStatus=new ArrayList();
svnClientManager.getStatusClient().doStatus(路径,SVNRevision.parse(修订),SVNDepth.INFINITY,false,false,false,new-ISVNStatusHandler()){
public void handleStatus(SVNStatus状态)引发SVNException{
SVNStatusType statusType=status.getContentsStatus();
如果(statusType!=SVNStatusType.STATUS\u无&&statusType!=SVNStatusType.STATUS\u正常
&&statusType!=SVNStatusType.状态(忽略){
allSVNStatus.add(状态);
}
}
},空);
返回所有svnstatus;
}

我试图使用此info=ourClientManager.getStatusClient().doStatus(文件,false);--但这一行给出了SVN异常--文件不是工作副本--这里的文件是新的包..这意味着该文件不在工作副本中。如果要检查任意文件的版本是否在工作副本中,您可能只需观察以捕获该异常。另一种可能是工作副本与libr不兼容但是,我相信SVNKit将处理1.6和1.7工作副本格式,所以这可能不是问题所在。我尝试使用此info=ourClientManager.getStatusClient().doStatus(文件,false);--但这一行给出了SVN异常--文件不是工作副本--这里的文件是新的包..这意味着该文件不在工作副本中。如果要检查任意文件的版本是否在工作副本中,您可能只需观察以捕获该异常。另一种可能是工作副本与libr不兼容不过,我相信SVNKit将处理1.6和1.7工作拷贝格式,所以这可能不是问题所在。