Subversion:我可以一次提交多个签出文件夹吗?

时间:2009-12-03 10:36:19

标签: svn commit changelist

假设我在我的文件系统中散布的SVN存储库中有几个不同文件夹的工作副本。他们的父目录不是存储库的一部分。 E.g。

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

现在它们都包含我想立即签到的更改(为方便起见,仅调用svn一次,为简单起见仅使用一个新的修订号)。

这可能吗?这是变更列表的意思吗?如果我使用svn<我该怎么办? V1.5?

(这里有一些类似的问题,但它们指的是不同的问题。)

编辑:澄清:工作副本都属于同一个存储库,但属于不同的部分,即存储库看起来像这样:

RepoDirA\
RepoDirB\
RepoDirC\
RepoDirD\

5 个答案:

答案 0 :(得分:3)

正如其他人所指出的那样,出于正当理由这是不可能的(尤其参见D加西亚的回答)。

如果eclipse支持类似的东西,我怀疑它背后会产生多个签到。

但是,可以将更改区分到一个工作目录中,并将这些更改应用到另一个工作目录(如果它们重叠)。完成后,所有更改都在单个工作目录中,您可以从中进行检入。 D Garcia指出的合并问题现在是您在补丁时解决的责任。

如果您的工作目录重叠,并且您拥有多个工作目录的唯一原因是因为例如你不想拉整个存储库,我建议检查你的工作目录的公共根目录的层次结构,但是非递归地(使用svn co -N root),然后使用svn update path/to/subsetOfInterest获取特定的工作目录对于中间目录)。这样,它们都存在于同一工作目录中,并允许以原子方式处理它们。

答案 1 :(得分:1)

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

我建议您尝试与您的客户联系。如果它不起作用,它将打印错误。你不可能破坏任何东西。

答案 2 :(得分:1)

似乎没有。我在这里试过,我经常检查多个工作副本。 Subversion对于您尝试签入的文件夹的公共根目录中没有.svn目录感到不自在。

当然,如果所有工作副本都引用相同的存储库路径 - 这将是一个非常讨厌的事情。你基本上期望subversion在将它们放入存储库之前在本地合并4组更改,这可以使冲突解决变得有趣:)

请注意,这与subversion 1.4.5有关。

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

答案 3 :(得分:0)

我认为这不可能,不是命令行而不是TortoiseSVN。但是可能有工具可以实现这一目标。你也可以为它编写一个bach脚本。

更改列表是其他内容,在这里您可以将一个工作副本中的一些更改组合在一起,这样您就可以单独提交它们。

答案 4 :(得分:0)

我认为更改列表集是基于存储库在存储库中维护的 - 因此在您的示例中工作副本A B& C都必须在同一个存储库中。 然后,您必须将每个工作副本分别添加到同一个更改列表中。

我无法测试(完成),但设置似乎有效。