用Subversion中的另一个目录的副本替换目录

时间:2011-03-22 10:18:05

标签: svn

假设我们在存储库中有以下两个目录:

currentproduction
development

我想:

  1. currentproduction重命名为例如archivedproduction
  2. development的修订版1234复制为(新)currentproduction
  3. 当我这样做时

    svn ren currentproduction archivedproduction
    svn copy -r 1234 development currentproduction
    

    Subversion尝试复制(进入)development下的currentproduction (已经安排删除):

    A    currentproduction\development\file1.txt
    A    currentproduction\development\file2.txt
    Updated to revision 1234.
    svn: Can't add 'currentproduction\development' to a parent directory scheduled for deletion
    

    我想这是因为在提交之前,目录仍在工作副本中。我可以使用中间提交:

    svn ren currentproduction archivedproduction
    svn commit
    svn copy -r 1234 development currentproduction
    

    但那不是很好......是不是有办法告诉Subversion我想用另一个替换目录?

3 个答案:

答案 0 :(得分:1)

您可以将development与您想要的修订版合并到currentproduction,而不是复制。这样,您只需要在提交中更改的内容。

如果您使用currentproduction的副本创建了development,则必须merge currentproduction分支中不存在的修订版。

我建议您记录您合并到currentproduction分支机构的每个修订版本(除非服务器版本大于1.5)。你永远不应该两次合并两次,因为它可能被视为冲突。

// Know to which version a branche was created (XX)
svn log --stop-on-copy
svn merge -r XX:1234 development currentproduction

我还建议您将此setup用于您的存储库。

祝你好运。

答案 1 :(得分:0)

在您的情况下,我只需将currentproduction重命名为archivedproduction,只需将您想要的修订版本检出一个名为currentproduction的新目录。

答案 2 :(得分:0)

我刚刚访问了已删除文件夹中包含的.svn隐藏文件夹,将其删除,然后重新启动了我的工作区(我在M $ VisualStudio中使用了AhnkSVN),并在之前删除的文件夹中提交了一个文件而没有问题。

无论如何,在删除之前备份.svn文件夹。