3

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

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

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

这可能吗?这就是变更列表的用途吗?如果我使用svn< v1.5,我该怎么办?

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

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

RepoDirA\
RepoDirB\
RepoDirC\
RepoDirD\
4

5 回答 5

3

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

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

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

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

于 2009-12-03T11:03:08.577 回答
1

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

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

于 2009-12-03T10:43:25.350 回答
1

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

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

请注意,这是使用颠覆 1.4.5。

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

于 2009-12-03T10:45:22.723 回答
0

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

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

于 2009-12-03T10:45:00.090 回答
0

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

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

于 2009-12-03T10:57:47.150 回答