Svn Subversion:我可以一次提交几个已签出的文件夹吗?

Svn Subversion:我可以一次提交几个已签出的文件夹吗?,svn,commit,changelist,Svn,Commit,Changelist,假设我的SVN存储库中有几个不同文件夹的工作副本分散在我的文件系统中。它们的父目录不是存储库的一部分。例如 somedir1\ workingcopyOfA\ workingcopyOfB\ somedir2\ somedir3\ workingcopyOfC\ workingcopyOfD\ 现在,它们都包含我想立即签入的更改(为了方便起见,只调用一次svn,为了简单起见,只使用一个新的修订号) 这可能吗?这就是变更单的目的吗?如果我使用svn

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

somedir1\
   workingcopyOfA\
   workingcopyOfB\
somedir2\
   somedir3\
       workingcopyOfC\
   workingcopyOfD\
现在,它们都包含我想立即签入的更改(为了方便起见,只调用一次
svn
,为了简单起见,只使用一个新的修订号)

这可能吗?这就是变更单的目的吗?如果我使用
svn
(这里有一些类似的问题,但它们指的是不同的问题。)

编辑:澄清:工作副本都属于同一个存储库,但属于不同的部分,即存储库如下所示:

RepoDirA\
RepoDirB\
RepoDirC\
RepoDirD\

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


我建议你和你的客户试一下。如果它不工作,它将打印一个错误。你不可能破坏任何东西。

我认为这是不可能的,命令行不行,乌龟也不行。但可能有一些工具使这成为可能。你也可以为此写一个巴赫剧本


变更列表是另一种东西,在这里,您可以将一个工作副本中的一些变更分组在一起,这样您就可以单独提交它们。

您似乎不能这样做。我在这里试过了,在那里我经常签出多份工作副本。Subversion对您试图签入的文件夹的公共根目录中没有.svn目录感到恼火

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

请注意,这是在subversion 1.4.5中实现的


在1.5中,变更列表更像是在同一个工作目录中有多个变更工作集,并且能够单独处理它们,与拥有多个工作目录并将其视为一个实体不同。

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


我无法测试它(直到完成),但设置似乎可以工作。

正如其他人所指出的,这是不可能的,因为有充分的理由(请参见D Garcia的答案)

如果eclipse支持类似的东西,我怀疑它会在背后创建多个签入

但是,可能的情况是区分一个工作目录中的更改,并将这些更改应用于另一个工作目录(如果它们重叠)。完成后,所有更改都将位于一个工作目录中,您可以从该目录进行签入。D Garcia指出的合并问题现在由您在修补时负责解决


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

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