如果执行svn cp而不是cp,是否有可能追溯添加原有的历史记录?

时间:2011-04-02 15:32:33

标签: svn

我有一个项目,其中一个目录最初(数百次提交)从另一个目录逐字复制,但svn cp未被使用,因此历史记录中存在断开连接。现在可以在初始复制点连接两个目录,还是为时已晚?

2 个答案:

答案 0 :(得分:3)

让我猜猜你在说什么:

  • 目录foo在Subversion中
  • 在修订版#100中,有人将foo复制到bar
  • 然后他们将bar添加到存储库并执行了提交并创建了修订版#101。
  • 现在Subversion处于修订版#2302。

你想要做的是以某种方式回到历史回到修订版#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