Subversion 存储库更新历史记录

发布于 2024-07-18 07:35:13 字数 226 浏览 5 评论 0原文

我有一个旧的但非常重要的 Subversion 存储库,我还没有从通常的结构开始创建它:主干、分支、标签。 所以我这个存储库的所有文件都位于根目录中。

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

谢谢!

I have an old but very important Subversion repository for which I haven't created form the start the usual structure: trunk, branches, tags. So all my files for this repository are residing in the root.

I know how to create the new folders and move all my files in trunk but if I do that I will lose my project's history for 3 years, since 'trunk' is a new folder. So is there a solution to move my entire project's history from root to the trunk folder?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

木有鱼丸 2024-07-25 07:35:13

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

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

Yes. You can use svnadmin dump which will dump the repository along with history to a file. You can then use svnadmin load to load the dump file into the trunk folder. Once that's done, delete the files from root.

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

Dump Doc: http://svnbook.red-bean.com/en/1.1/re31.html
Load Doc: http://svnbook.red-bean.com/en/1.0/re36.html

皓月长歌 2024-07-25 07:35:13

您可以使用

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

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

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

You can use

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

To create a copy from your repository root (^/) to trunk/ (^/trunk), keeping all your history, including that of the root directory.

After that you can remove the files and subdirectories in the old location in the next commit.

[旋木] 2024-07-25 07:35:13

如果您使用 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'

You won't loose history if you use svn mv the files. The history will be maintained. So you could use the svnadmin load -parent-dir trunk to redo your repository, but you'll need to do fresh checkouts of everything, since you should have a new UUID in the new repository.

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'
猫七 2024-07-25 07:35:13

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

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

Not an ideal solution admittedly, but why not create a whole new repository whose content is all of the code from the old repository but formatted nicely into trunk etc. keeping the old repository completely separate but making it read only.

This would admittedly be a pain to have to remember that before date X you need to look in the old repository rather than the new if you need to know the history of an item.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文