我有一个项目,其中一个目录最初(数百次提交)从另一个目录逐字复制,但svn cp未被使用,因此历史记录中存在断开连接。现在可以在初始复制点连接两个目录,还是为时已晚?
答案 0 :(得分:3)
让我猜猜你在说什么:
foo
在Subversion中foo
复制到bar
bar
添加到存储库并执行了提交并创建了修订版#101。你想要做的是以某种方式回到历史回到修订版#100,并重做副本并添加一个真正的svn copy
。这样,您可以看到它从foo复制的条形图历史记录。
可能有办法存储svnadmin dump
存储库,然后是svnadmin load
。
您需要创建1到100的修订转储和另一个102的转储。您将修订版1到100加载到存储库中。然后执行svn copy
并提交修订版101.最后,加载修订版102以进入存储库。
理论上,这应该解决问题。我从来没有做过这个特别的修复,但我已经做了其他选择性转储和加载,我改变了历史。
答案 1 :(得分:1)
将未版本控制的目录移开,然后将svn cp
从原始目录的旧版本移动到新版本。您可以在@<revision-number>
命令中的源目录名称后面使用svn cp
来指定修订。然后将更改复制到现在版本控制的副本之上并提交它们。
这是一个人为的例子:
$ cd working-copy
$ ls -R
.:
copy-of-original original
./copy-of-original:
bar foo
./original:
bar foo
$ svn info original
Path: original
URL: file:///home/gardnerm/repo/original
Repository Root: file:///home/gardnerm/repo
Repository UUID: 6124f37b-b9bf-4d8a-906d-c4015c6f74ad
Revision: 2
Node Kind: directory
Schedule: normal
Last Changed Author: gardnerm
Last Changed Rev: 2
Last Changed Date: 2011-05-04 19:48:00 -0400 (Wed, 04 May 2011)
$ svn info copy-of-original
copy-of-original: (Not a versioned resource)
svn: A problem occurred; see other errors for details
$ mv copy-of-original backup-copy
$ svn cp original@1 copy-of-original ## this is a copy from a previous revision
A copy-of-original/foo
A copy-of-original/bar
Updated to revision 1.
A copy-of-original
$ svn commit -m 'copying from original r1'
Adding copy-of-original
Committed revision 3.
$ cp -r backup-copy/* copy-of-original ## bringing up to date
$ svn commit -m 'updating copy with latest changes'
Sending copy-of-original/bar
Sending copy-of-original/foo
Transmitting file data ..
Committed revision 4.
$ rm -r backup-copy