我正在努力解决如何使用 TortoiseHg 正确跟踪嵌套存储库。
我有一个主要的存储库来跟踪我的整个项目。这个项目包含几个小插件,它们存储在 plugins/ 子目录中。
我很想独立跟踪每个插件(为每个插件提交并推送到 BitBucket),同时仍然能够对我的项目进行“整体”提交,包括对插件所做的更改并将其推送到其他位置(不是比特桶)。
到目前为止,我所做的是为我的每个插件创建一个新的 repo。我可以轻松地将它们提交并推送到 BitBucket。但是当我去提交我的“主”存储库时,TortoiseHg 会显示一条错误消息,说明abort: path 'mainrepo\\plugins\\plugin1\\plugin1.php' is inside repo 'mainrepo\\plugins\\plugin1'
.
我可以看到我做错了什么,但我不知道是什么。
我在 WinXP 上每晚使用 Mercurial 和 TortoiseHg(ToirtoiseHg 版本 0.9.3+237-ea50f793bbe4 和 Mercurial-1.4.3+225-70dea42c9406)。我读到 subrepos 处理已添加到这个 TortoiseHg 构建中,但是,我什至不确定 subrepos 是我应该在这里使用的功能。
更新
我已经取得了一些进展,但仍然无法按照我想要的方式工作。
这是我的结构:
-- .hg
-- core
-- app
-- file.php
-- file.css
-- plugins
-- plugin1
-- file1.php
-- plugin2
-- file2.php
我去了应用程序/插件,并在这里从 BitBucket 克隆了一个插件(名为 plugin3)。然后,我在根目录创建了一个 .hgsub 文件并将其添加app/plugins/plugin3 = app/plugins/plugin3
到其中。然后我能够提交我的整个目录。
但是后来我试图从 BitBucket 中获取最新版本的 plugin1,所以我去了 app/plugins,删除了 plugin1/ 文件夹并从 BitBucket 中克隆了 plugin1。然后我添加app/plugins/plugin1 = app/plugins/plugin1
到 .hgsub 但是当我尝试提交它时,我受到了欢迎abort: path 'app/plugins/plugin1/file1.php' is inside repo 'app\\plugins\\plugin1'
当我的 subrepo 与 plugins/ 目录中 Hg 已跟踪的目录具有相同的名称时,问题似乎触发了。
我究竟做错了什么 ?我应该在插件的 .hg 中添加/编辑一些特别的东西吗?
更新
我终于设法让它以我想要的方式工作。
我必须“手动”告诉 Mercurial 删除 plugins/plugin1、plugins/plugin2 目录,提交更改,然后从 BitBucket 克隆回 plugin1 和 plugin2,添加app/plugins/plugin1 = app/plugins/plugin1
到 .hgsub 并提交所有内容。有效。
重要的一步是在删除 plugin1/plugin2 文件夹后提交。