Svn Subversion:我可以一次提交几个已签出的文件夹吗?
假设我的SVN存储库中有几个不同文件夹的工作副本分散在我的文件系统中。它们的父目录不是存储库的一部分。例如Svn Subversion:我可以一次提交几个已签出的文件夹吗?,svn,commit,changelist,Svn,Commit,Changelist,假设我的SVN存储库中有几个不同文件夹的工作副本分散在我的文件系统中。它们的父目录不是存储库的一部分。例如 somedir1\ workingcopyOfA\ workingcopyOfB\ somedir2\ somedir3\ workingcopyOfC\ workingcopyOfD\ 现在,它们都包含我想立即签入的更改(为了方便起见,只调用一次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这样的工具帮助很大,它有一个功能可以更新多个工作副本,但我还没有找到提交。