9

我刚刚创建了一个 Java 项目。我想在 SVNKit 的帮助下将此项目签入到 SVN 位置。

我使用下面的代码,它将一个文件夹添加到 SVN 存储库。但它没有.svn在文件夹中创建任何文件夹/Users/test/svnAddDirCheck

我希望这些文件被签入,并且我希望将来提交一些更改的文件。如果不检查源代码,我该怎么做?我可以在 SVN 中添加这些文件,也可以直接提交任何更改的文件吗?

@Test
public void importWholeDir() throws Exception {
    try {
        DAVRepositoryFactory.setup();
        SVNRepositoryFactoryImpl.setup();
        FSRepositoryFactory.setup();

        String svnUrl = "https://abc.com/svn/repos/projects/test/CREATE2";
        File dir = new File("/Users/test/svnAddDirCheck");
        SVNURL url = SVNURL.parseURIDecoded(svnUrl);
        String userName = "XXXXXXX";
        String userPassword = "XXXXXXXXX";

        importDirectoryContentToSubversion(svnUrl, dir.getPath(), userName, userPassword, "directory and file added");
    } catch (Exception e) {
        e.printStackTrace();
    }
}

public static SVNCommitInfo importDirectoryContentToSubversion(final String repositoryURL, final String subVersionedDirectory, final String userName, final String hashedPassword, final String commitMessage) throws SVNException {
    final SVNClientManager cm = SVNClientManager.newInstance(new DefaultSVNOptions(), userName, hashedPassword);
    return cm.getCommitClient().doImport(new File(subVersionedDirectory), SVNURL.parseURIEncoded(repositoryURL), "<import> " + commitMessage, null, false, true, SVNDepth.fromRecurse(true));
}
4

2 回答 2

1

我假设 SVNKit 实际上是在将 svn 添加到存储库而不是工作副本?那是对的吗?

如果是这样,除非您拥有将包含检出文件的文件夹,否则您无法将文件添加到存储库。

另外你使用的是什么版本的SVN?1.7 不再在工作副本的每个文件夹中放置 .svn 文件夹,仅在根文件夹中。

基本上你想要做的,伪代码是:

  1. 查看要添加文件夹/文件的目录。如果它是包含其他文件夹文件的文件夹,您可以使用 --empty 的深度将其签出,这样您就不会获得任何其他可能签入该文件夹的文件/文件夹。

  2. 创建新文件夹/文件。

  3. 使用 svn kit 将文件“添加”到工作副本。

  4. 使用 svn kit 来“提交”将文件夹/文件添加到存储库的工作副本。

当然,只有在您还没有完成的情况下才需要完成第 1 步。您应该遵循手动遵循的相同步骤。我建议您查看有关基本用法的 svn 文档。一旦你可以用 svn.exe 做你想做的事,使用 svnkit API 复制它应该是相当容易的。

于 2013-03-15T19:38:45.243 回答
0

这就是 SVN 的工作方式,如果您想提交未来的更改,您需要将本地文件夹设为工作副本,并且要获得工作副本,您需要进行签出。

我有时使用的另一种选择是

  • 直接在存储库中创建一个空文件夹,
  • 检出本地文件夹中的那个文件夹(使其成为工作副本及其.svn文件夹)
  • 然后添加并提交现有文件
于 2013-01-07T17:43:57.187 回答