Mercurial/TortoiseHg:如何让两个仓库共享文件且互不作为子仓库?
解决TortoiseHg中两个仓库共享文件且互不作为子仓库的方法
核心思路
通过配置上层仓库(Repository A),使其忽略下层仓库的.hg目录,同时关闭嵌套仓库的自动检测机制,让两个仓库独立追踪目标文件,互不干扰。
具体操作步骤
- 配置Repository A的忽略规则:打开Repository A的
.hgignore文件(无则新建),添加规则subfolder2/.hg/(将subfolder2替换为你实际的Repository B所在子文件夹名称),仅忽略下层仓库的配置目录,不影响Repository A自身的.hg目录。 - 关闭嵌套仓库检测:打开Repository A的
.hg/hgrc文件(位于.hg文件夹内),添加如下配置:
该配置会让Mercurial停止识别嵌套的[ui] ignore.nested = True.hg目录为子仓库,允许上层仓库直接追踪下层文件夹内的文件。 - 添加目标文件到Repository A:在TortoiseHg中打开Repository A,右键点击Repository B所在的子文件夹,选择Add Files,将该文件夹内的所有文件添加到Repository A的追踪列表中。
完成以上操作后,Repository A可正常追踪目标文件,不会再提示“文件位于嵌套仓库内”的错误;同时Repository B仍能独立管理自身文件,两个仓库的提交记录完全独立、互不影响。
验证方法
- 在Repository B中修改文件并提交,Repository A会检测到文件变更,可正常提交该变更。
- 在Repository A中修改同一文件并提交,Repository B也会检测到变更,可独立提交。
内容的提问来源于stack exchange,提问作者WeirdGuy
相关产品推荐
相关产品推荐

