2013-05-20 109 views
1

我有这样的事情:如何将文件从一个分支复制到另一个分支?

 
/repo/branch-a/foo/apples 
/repo/branch-a/foo/oranges 
/repo/branch-a/bar/broccoli 
/repo/branch-a/bar/potato 
/repo/branch-b/snazz 
/repo/branch-b/jazz 

现在我想的snazz文件夹移动到分支B“barfoo”的第三子

例如,之后,它看起来像:

 
/repo/branch-a/foo/apples 
/repo/branch-a/foo/oranges 
/repo/branch-a/bar/broccoli 
/repo/branch-a/bar/potato 
/repo/branch-a/barfoo/snazz 
/repo/branch-b/barfoo/jazz 
/repo/branch-b/snazz 
/repo/branch-b/jazz 

我最初尝试这样做的方式是检查分支-a,然后检查分支-b。在分支-a中创建barfoo文件夹,然后将时髦和爵士文件夹复制到barfoo文件夹中。

问题是,拷贝复制了所有.svn文件夹,因此当您尝试提交时,这些文件夹中的文件仍然指向分支-b回购。

我可以通过并删除所有的.svn文件夹,但如果有很多子文件夹,那么这是非常耗时的,而不是一个好的解决方案。

+0

如果你更新到一个更新的SVN版本(1.6+?),你会发现它在根目录下只创建一个.svn文件夹。这非常方便。对, – Kromster

回答

2

如果你使用Windows /乌龟SVN工作:

我就签了回购,然后用鼠标右键移动snazzjazzbranch-abranch-b并选择“SVN移动项目在这里”。这样您将保留SVN历史记录。

+0

+1这绝对是正确的方法。 (关于使用鼠标操作,不过这是'svn cp repo:/ src repo:/ dest; svn rm repo:/ src') – tripleee

+0

@triplee:您可以将此附加到我的答案或发布一个新的答案。我会+1这个) – Kromster

0

而不是复制,导出它们。如果你导出,它将只复制文件而不是.svn文件。 tortoisesvn有这个选项,你可以用鼠标右键拖拽并选择全部导出。

+0

是的,就是这样。谢谢。 – dwjohnston

+0

没问题,很高兴我帮了忙。 – AliBZ

+1

-1导出和重新导入失去了历史记录,并忽略了SVN为这种场景准备的机制。 – tripleee

相关问题