【问题标题】:Subversion: Can I commit several checked-out folders at once?Subversion:我可以一次提交多个签出的文件夹吗?
【发布时间】:2009-12-03 10:36:19
【问题描述】:

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

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

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

这可能吗?这就是变更列表的用途吗?如果我使用svn

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

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

RepoDirA\
RepoDirB\
RepoDirC\
RepoDirD\

【问题讨论】:

    标签: svn commit changelist


    【解决方案1】:

    正如其他人指出的那样,这是不可能的,因为有充分的理由(请参阅 D Garcia 的回答)。

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        看来你不能。我在这里尝试过,在那里我经常签出多个工作副本。 Subversion 对您尝试签入的文件夹的公共根目录中没有 .svn 目录感到愤怒。

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

        请注意,这是针对 subversion 1.4.5。

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

        【讨论】:

          【解决方案4】:

          我认为这是不可能的,不是通过命令行,也不是 TortoiseSVN。但是可能有一些工具可以使这成为可能。您也可以为此编写一个 bach 脚本。

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

          【讨论】:

          • 像 SVN-Monitor 这样的工具 kan 有很大帮助,它有更新多个工作副本的功能,但我没有找到 Commit。
          【解决方案5】:

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

          我无法对其进行测试(直到完成),但设置似乎有效。

          【讨论】:

            猜你喜欢
            • 2011-07-08
            • 2012-07-26
            • 1970-01-01
            • 2010-09-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-09-20
            • 1970-01-01
            相关资源
            最近更新 更多