假设我们在存储库中有以下两个目录:
currentproduction
development
我想:
currentproduction
重命名为例如archivedproduction
。development
的修订版1234复制为(新)currentproduction
。当我这样做时
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我想用另一个替换目录?
答案 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
文件夹。