Mercurial (hg):将多个回购协议转换为单个回购协议
Mercurial (hg): transform multiple repos to single repo
在我目前正在进行的项目中(例如,名称是 "rinjani"),我们有多个 mercurial 存储库(将近 10 个独立的存储库!),最近我们想将其转换为单个存储库。
实际:
- rinjani-a
- rinjani-b
- ...
- rinjani-g
预计:
rinjani
├── rinjani-a
├── rinjani-b
├── ...
└── rinjani-g
最好(最安全)的方法是什么?我已经在 blogpost 之后阅读了这篇文章,但仍然不确定这是否是可行的方法,因为那里的示例仅展示了两个单独的回购协议。当然,我们希望保持每个回购的 history/changesets 完好无损。
博文是完成此操作的基本方法,尽管 mv
和 hg addremove --similarity 100
步骤可以使用 hg rename
.
进行简化
基本步骤:
- 创建新存储库。
- 强制拉取其中一个旧存储库。
- 更新提示并将旧存储库文件重命名到新位置。
- 提交
- 对其他存储库重复 2-4。
- 将所有内容合并在一起。
示例:
hg init rinjani
cd rinjani
hg pull -f <path_to>\rinjani-a
hg update tip
md rinjani-a
hg rename * rinjani-a
hg ci -m "renamed rinjani-a"
<repeat for other projects>
然后"hg merge"每个人头在一起
当然这是完全安全的,因为所有修改操作都只对新存储库进行。如果你犯了错误,你总是可以重新开始!
使用上述方案准备好要合并的三个存储库后,一个非常简单的图表可能如下所示:
@ 5:renamed rinjani-c files
|
o 4:rinjani-c file
o 3:renamed rinjani-b files
|
o 2:rinjani-b file
o 1:renamed rinjani-a files
|
o 0:rinjani-a file
然后合并头部(在本例中为 rev 1、3 和 5)。重点是修改独立历史的头部before合并它们:
@ 7:Merge
|\
| o 6:Merge
| |\
| | o 5:renamed rinjani-c files
| | |
| | o 4:rinjani-c file
| |
| o 3:renamed rinjani-b files
| |
| o 2:rinjani-b file
|
o 1:renamed rinjani-a files
|
o 0:rinjani-a file
在我目前正在进行的项目中(例如,名称是 "rinjani"),我们有多个 mercurial 存储库(将近 10 个独立的存储库!),最近我们想将其转换为单个存储库。
实际:
- rinjani-a
- rinjani-b
- ...
- rinjani-g
预计:
rinjani
├── rinjani-a
├── rinjani-b
├── ...
└── rinjani-g
最好(最安全)的方法是什么?我已经在 blogpost 之后阅读了这篇文章,但仍然不确定这是否是可行的方法,因为那里的示例仅展示了两个单独的回购协议。当然,我们希望保持每个回购的 history/changesets 完好无损。
博文是完成此操作的基本方法,尽管 mv
和 hg addremove --similarity 100
步骤可以使用 hg rename
.
基本步骤:
- 创建新存储库。
- 强制拉取其中一个旧存储库。
- 更新提示并将旧存储库文件重命名到新位置。
- 提交
- 对其他存储库重复 2-4。
- 将所有内容合并在一起。
示例:
hg init rinjani
cd rinjani
hg pull -f <path_to>\rinjani-a
hg update tip
md rinjani-a
hg rename * rinjani-a
hg ci -m "renamed rinjani-a"
<repeat for other projects>
然后"hg merge"每个人头在一起
当然这是完全安全的,因为所有修改操作都只对新存储库进行。如果你犯了错误,你总是可以重新开始!
使用上述方案准备好要合并的三个存储库后,一个非常简单的图表可能如下所示:
@ 5:renamed rinjani-c files
|
o 4:rinjani-c file
o 3:renamed rinjani-b files
|
o 2:rinjani-b file
o 1:renamed rinjani-a files
|
o 0:rinjani-a file
然后合并头部(在本例中为 rev 1、3 和 5)。重点是修改独立历史的头部before合并它们:
@ 7:Merge
|\
| o 6:Merge
| |\
| | o 5:renamed rinjani-c files
| | |
| | o 4:rinjani-c file
| |
| o 3:renamed rinjani-b files
| |
| o 2:rinjani-b file
|
o 1:renamed rinjani-a files
|
o 0:rinjani-a file