gpt4 book ai didi

svn - 将旧存储库转换为 mercurial

转载 作者:行者123 更新时间:2023-12-04 06:56:18 26 4
gpt4 key购买 nike

我一直在玩不同的版本控制系统,以找到一个我觉得舒服的系统。我从 SVN 开始(让我们称这个版本的项目为“f1”),然后改用 GIT。但是我不知道如何将旧的 SVN 存储库转换为 GIT,所以我只是复制了文件夹,删除了 .svn 内容,然后将其转换为 GIT 存储库(我们称这个复制版本为“f2”)。

现在我正在使用 Mercurial,并且很高兴地发现它有一个适用于 Windows 的 Tortoise 客户端。我也很高兴地发现将 GIT 存储库转换为 Mercurial 是多么容易,所以我保留了历史记录(我仍然先克隆它,以防万一。所以我称这个 hg 版本为“f3”)。

但现在我想知道的是:我该怎么处理旧的 SVN 存储库,它仍然保留着我在使用 GIT 之前的历史?

我想我可以将旧的 SVN 存储库转换为 Mercurial,但是我可以将这两个历史记录 merge 到一个存储库中,以便在一个地方拥有一组完整的历史记录吗?换句话说,我可以在 f1 前面加上 f3 吗?

最佳答案

在不从根本上改变 f3 的情况下,您不能在字面历史/祖先意义上将 f1 附加到 f3,因为 mercurial 中的每个修订版都由一个哈希码标识,并且该哈希码由(除其他外)修订版的内容和哈希值构成它的 parent 。因此,更改 f3 的第一个节点的父节点将更改 f3 的所有哈希码。

因此,如果您愿意在产生过程中重新生成 f3,例如 f4,您可以在 f1 之前添加 f3。这样做会使 f3 的所有克隆无效 - 但如果你是一个单人团队,你可能没问题。

如果你不能改变 f3 中的每个散列(我不会)另一个(不太好)的选择是使用 hg convert从 f1 创建一个新的 mercurial repo,我们称之为 f5,然后到 hg pull -f f5 到 f3。由于 f5 中的任何变更集都不会是 f3 中任何变更集的祖先或子代——没有共同的谱系——你最终会得到两个头和两个变更集流。有些人这样做,但老实说,我认为这样做没有任何真正的好处。

在你那里,我只是将 f1 转换为 f5(一个包含所有旧历史的mercurial repo),然后将其保留以供引用。

关于svn - 将旧存储库转换为 mercurial,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2520100/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com