2009-10-26 163 views
3

说我有这样的如何将父目录添加到SVN?

dir1 
    dir2 
    dir3 

dir2的目录结构已经在版本控制之下,而dir1不是。现在我意识到我想要在版本控制下也有dir1(以及后来的dir3等)。我该如何做到这一点,并在存储库中正确反映更改?

如果我只是移动dir2dir1,加dir1到SVN和移动dir2dir1,这可能会破坏dir2版本历史记录。更复杂的是,dir2包含许多不受版本控制的文件(它们被忽略),所以dir2不能从存储库(完全)重新创建。

回答

0
  • 创建dir1除了dir2
  • 移动dir2dir1

可以(通过使用URL),或在你的工作拷贝(通过使用文件系统路径),这样做的服务器上。在后一种情况下,你将不得不在事后提交。

+0

这个我试过的服务器(即'SVN的mkdir URL/DIR1上; svn mv url/dir2 url/dir1')成功了。但是当我尝试'svn'时,我得到'svn:无法添加目录'dir2':同名的对象已经存在'? – fuenfundachtzig 2009-10-26 21:59:11

+0

你将不得不重新检查一个新的位置。 – sbi 2009-10-27 08:03:17

+0

我想避免结账(请参阅问题)。因此,我尝试在本地执行此操作,现在我在'dir2'的同一级别设置了'dir11',但'svn mv dir2 dir11'给出'svn:无法锁定'dir11'。 – fuenfundachtzig 2009-10-27 08:34:59

2

你是对的,重新导入dir2不会保存你现有的dir2的历史。

这应该做的伎俩(假设路径是URL库):

  1. SVN的mkdir 路径/DIR1
  2. SVN MV 路径/DIR2 路径/DIR1
+0

因svn失败:不支持repos <-->工作副本移动。 – fuenfundachtzig 2009-10-26 21:52:54

+0

您试图以无法使用的方式混合使用工作副本路径和回购网址。尝试所有工作路径或所有网址。 – sbi 2009-10-27 08:04:02

+0

好的,那么应该改变上面的第二项,否则就会产生误导。 – fuenfundachtzig 2009-10-27 08:26:28

0

还有另一种可能性,虽然它可能不是你正在寻找的:SVN externals

  1. 检查dir1

  2. 为SVN外部添加dir2dir1的属性:

-

$ svn propget svn:externals dir1 
dir2 svn://repository/dir2 
0

尝试svn add --parents dir1/dir2