Subversion:我能同时提交多个已检出的文件夹吗?

3

假设我在文件系统中散布着几个来自我的SVN仓库的工作副本,它们的父目录不是仓库的一部分。例如:

somedir1\
   workingcopyOfA\
   workingcopyOfB\
somedir2\
   somedir3\
       workingcopyOfC\
   workingcopyOfD\

现在它们都包含了我想一次性检入的更改(为了方便只调用svn一次,为了简单起见只使用一个新版本号)。
这种情况是否可能?这就是更改列表的用途吗?如果我使用svn< v1.5会发生什么?
(这里有一些类似的问题,但它们涉及不同的问题。)
编辑:澄清一下:所有的工作副本都属于同一个仓库,但属于不同的部分,即仓库看起来像这样:
RepoDirA\
RepoDirB\
RepoDirC\
RepoDirD\
5个回答

3

正如其他人所指出的,由于有很好的原因(尤其是参见D Garcia的答案),这是不可能的。

如果Eclipse支持类似的功能,我怀疑它会在幕后创建多个提交记录。

然而,有可能对一个工作目录中的更改进行差异化,并将这些更改应用到另一个工作目录中(如果它们重叠)。一旦你完成了这个过程,所有的更改都在单个工作目录中,你可以从中进行检查。D Garcia指出的合并问题现在成为你在补丁时间解决的责任。

如果你的工作目录重叠,并且你有多个工作目录的唯一原因是因为你不想拉取整个代码库,我建议你将层次结构检出到你的工作目录的公共根目录,但不递归地检出(使用svn co -N root),然后使用svn update path/to/subsetOfInterest获取特定的工作目录(对于中间目录))。这样,它们都位于同一个工作目录中,并允许原子地对它们进行操作。


1

我知道Eclipse可以做到这一点,但也许他们在内部使用了一些技巧(因为您可以提交使用不同存储库的项目,例如一个在CVS中,另一个在SVN中)。

我建议您只需尝试与您的客户端。如果不起作用,它会打印错误信息。您不可能破坏任何东西。


1

看起来好像不行。我在这里尝试过,我的工作副本经常有多个副本被检出。Subversion对于在您要检入的文件夹的公共根目录中没有.svn目录感到烦恼。

当然,如果你所有的工作副本都指向同一个存储库路径——这将是一个非常恶劣的事情。基本上,你会期望Subversion在把它们放入存储库之前在本地合并4组更改,这可能会使冲突解决变得有趣 :)

请注意,这是使用Subversion 1.4.5完成的。

在1.5中,似乎更改列表更多的是关于在同一个工作目录中拥有多个工作更改集,并能够将它们分别处理,而不是拥有多个工作目录并将它们视为一个实体。


0

我认为这是不可能的,无论是通过命令行还是TortoiseSVN都不行。但是可能会有工具可以实现这一点。您也可以编写一个批处理脚本来实现。

变更列表是另一回事,在这里,您可以将一些更改分组在一个工作副本中,以便可以单独提交它们。


像 SVN-Monitor 这样的工具可以帮助很多人,它有一个更新多个工作副本的功能,但我还没有找到提交的功能。 - Jochen

0

我认为变更列表集是以仓库为基础进行维护的 - 所以在您的示例中,工作副本A、B和C都必须在同一个仓库中。

然后,您需要将每个工作副本单独添加到同一个变更列表中。

虽然我无法完全测试它,但这个设置似乎可以正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接