我有一个旧但非常重要的Subversion存储库,我没有创建通常的结构:trunk,branches,tags。因此,此存储库的所有文件都驻留在根目录中。

我知道如何创建新文件夹并将所有文件移到主干中,但如果我这样做,我将丢失项目历史3年,因为'trunk'是一个新文件夹。那么有没有一个解决方案将我的整个项目的历史从root移动到trunk文件夹?

谢谢!

有帮助吗?

解决方案

是。您可以使用svnadmin转储,它将存储库与历史记录一起转储到文件中。然后,您可以使用svnadmin load将转储文件加载到trunk文件夹中。完成后,从root中删除文件。

svnadmin dump REPOS_PATH [-r LOWER[:UPPER]] [--incremental]
svnadmin load REPOS_PATH

转储文档: http://svnbook.red-bean.com/ EN / 1.1 / re31.html 加载文档: http://svnbook.red-bean.com/en/1.0 /re36.html

其他提示

您可以使用

svn copy http://my.server/svn/repos/ http://my.server/svn/repos/trunk/ \
     -m "Copied"

要从存储库根目录(^ /)创建副本到trunk /(^ / trunk),保留所有历史记录,包括根目录的历史记录。

之后,您可以在下一次提交中删除旧位置中的文件和子目录。

如果您使用svn mv文件,则不会丢失历史记录。历史将保持不变。所以你可以使用svnadmin load -parent-dir trunk来重做你的存储库,但是你需要对所有内容进行新的检查,因为你应该在新的存储库中有一个新的UUID。

svn co http://example.com/repos/
cd repos
svn mkdir trunk tags branches
svn mv a trunk/a
svn mv b trunk/b
svn ci -m 'Moving project into trunk'

不可否认,这不是一个理想的解决方案,但为什么不创建一个全新的存储库,其内容是来自旧存储库的所有代码,但很好地格式化为主干等,使旧存储库完全独立,但使其只读。

如果您需要知道项目的历史记录,那么在日期X之前,您需要查看旧存储库而不是新存储库,这无疑是一件痛苦的事。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top