是的,你可以做你所说的,但是值得注意的是,如果你做一个简单hg clone
的主存储库,那么两者之间将存在一个链接,这可能不是你想要的。您可以通过编辑.hg/hgrc
文件并删除该部分中的default = ...
项目来删除此链接[paths]
。
我发现更好的方法是不克隆。这样您就没有存储库之间的链接,因为这可能是您想要的客户。
基本方法是建立一个没有变更集的新存储库,然后通过以下三种方式之一引入所有变更集:
- 将更改从您的存储库推送到新的存储库。
- 将更改从旧存储库中拉入新存储库。
- 如果您无权访问新存储库,请创建一个可以提供给客户的捆绑包 - 然后可以将其解包或拉入空存储库。
像往常一样进行推送和拉取,但指定存储库位置:
// 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
文件,正如另一个答案中已经提到的那样,它不是受控文件,因此不会被复制。但是,任何内容都可能是诸如执行自动构建的钩子之类的东西,或者在应用变更集之前对其进行验证。这种逻辑可能只对您自己的组织有意义,我建议您不希望将其强加给您的客户 - 毕竟,他们拥有您的代码库的所有权,并且可能拥有自己的代码库为此类事情准备的系统。