Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Svn 使用历史记录更新Subversion存储库_Svn_Repository_History - Fatal编程技术网

Svn 使用历史记录更新Subversion存储库

Svn 使用历史记录更新Subversion存储库,svn,repository,history,Svn,Repository,History,我有一个古老但非常重要的Subversion存储库,我从一开始就没有为它创建通常的结构:主干、分支和标记。因此,此存储库的所有文件都位于根目录中 我知道如何创建新文件夹并移动trunk中的所有文件,但如果这样做,我将丢失3年的项目历史记录,因为“trunk”是一个新文件夹。那么,有没有一种解决方案可以将整个项目的历史记录从根目录移动到主干文件夹 谢谢 诚然,这不是一个理想的解决方案,但为什么不创建一个全新的存储库,其内容是旧存储库中的所有代码,但格式很好地放在主干中等。保持旧存储库完全独立,但使

我有一个古老但非常重要的Subversion存储库,我从一开始就没有为它创建通常的结构:主干、分支和标记。因此,此存储库的所有文件都位于根目录中

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


谢谢

诚然,这不是一个理想的解决方案,但为什么不创建一个全新的存储库,其内容是旧存储库中的所有代码,但格式很好地放在主干中等。保持旧存储库完全独立,但使其只读


不可否认,如果您需要了解某个项目的历史记录,那么必须记住在日期X之前,您需要查看旧存储库而不是新存储库,这将是一种痛苦。

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

svnadmin dump REPOS_PATH [-r LOWER[:UPPER]] [--incremental]
svnadmin load REPOS_PATH
转储文件: 加载文档:

您可以使用

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'

如果将“-parent dir trunk”添加到svnadmin load,它将移动存储库的trunk subdirectory中的所有文件,为什么不将svn mv my.server/svn/repos/my.server/svn/repos/trunk/-m“Moved”@Stefan:您不能将父目录(=存储库根目录)移动到其自身的子目录,因为这会给您一个错误。