我们有一个生活在汞储存库中的项目。
我们的客户希望通过以下操作获得代码库的所有权:
实现第二步的最佳方法是什么?
做以下几件事是否简单呢?
我有错过任何步骤吗?hgrc文件呢?在将项目推入新的存储库之前,是否必须以任何方式对其进行修改?
发布于 2013-05-15 15:14:59
是的,您可以做您声明的事情,但是值得注意的是,如果您对主存储库执行了一个简单的hg clone,那么这两者之间就会存在一个链接,这可能不是您想要的。您可以通过编辑.hg/hgrc文件和删除[paths]部分中的default = ...项来删除此链接。
我发现一个更好的方法是不进行克隆。这样,您就没有存储库之间的链接,这可能是您想要的结果,因为这是给客户的。
基本方法是建立一个没有变更集的新储存库,然后以三种方式之一引入所有变更集:
推拉按通常的方式进行,但指定存储库的位置:
// create the empty repository
hg init .
// pull in everything from the old repo
hg pull /projects/myOriginalRepo或者推..。
// create the empty repository
hg init /projects/myNewRepo
cd /projects/myOriginalRepo
hg push /projects/myNewRepo创建一个包也许是一种更好的方法,因为您可以将这个包写到DVD上,然后将它送给您的客户,用一张漂亮的贺卡包在蝴蝶结中:
cd /projects/myOriginalRepo
hg bundle --all ../repo.bundle所有的东西都写到一个文件中,然后用hg unbundle repo.bundle或hg pull repo.bundle将其提取到一个没有任何变更集的存储库中。
关于hgrc文件,正如在另一个答案中已经提到的,它不是一个受控文件,因此不会被复制。但是,任何内容都可能是执行自动生成的钩子,或者是在应用之前验证更改集。这是一种逻辑,可能只对你自己的组织有意义,我建议你不要把这个强加给你的客户--毕竟,他们拥有你的代码库,并且可能有他们自己的系统来处理类似的事情。
发布于 2013-05-15 01:23:44
在简单的情况下-仅此而已。
但是,如果已经修改了.hg/hgrc文件,则需要手动将其移动到远程服务器,并(如果有必要)相应地修改它以适应新的环境。
Ie:您可以在原始存储库中设置钩子。
对于客户端,只需更改default部分中存储库的路径(如果有多个指定部分,则更改任何其他部分)即可。
发布于 2013-05-16 11:01:39
要移动主存储库,您需要(a)创建新的主回购和(b)告知现有客户端。
.hgrc和任何不可丢弃的不版本文件或被忽略的文件。如果您克隆,编辑新的母版的.hgrc并删除default路径,这样它就不再试图与旧的主回购进行对话了。.hgrc,更新default (和/或default-push)以便它指向新的位置。(当然,它们还可能需要更新身份验证凭据)。只有这样,迁移才能完成。删除(或移动/隐藏)原始回购,以便如果有人忘记更新他们的回购路径,他们将得到一个错误的推/拉,而不是将数据倒进一个记忆孔。
https://stackoverflow.com/questions/16555278
复制相似问题