【问题标题】:Synchronizing a collection of Mercurial repositories同步 Mercurial 存储库的集合
【发布时间】:2012-07-07 19:42:00
【问题描述】:
我在网络共享上有一组 Mercurial 存储库。要启用离线工作,我希望在我的笔记本电脑上保存此集合的本地副本,并在我在线时轻松同步两者。
为此,我编写了一个快速脚本,可以自动将每个本地存储库与相应的远程存储库同步(推送和拉取),但它缺少一些理想的功能:
- 自动将新存储库从本地克隆到远程集合(反之亦然)
- 能够组织(移动/重命名)本地存储库并将更改也应用到远程端,下次同步时
- 能够同步
hg strip 和其他重写存储库历史记录的命令
- 能够与
hgwebdir 集合甚至 Bitbucket 进行同步
是否有任何现有的解决方案可以提供部分(或全部)这些功能?
【问题讨论】:
标签:
mercurial
synchronization
【解决方案1】:
据我所知,这样的事情并不存在。在存储库之间来回移动变更集的最安全方法始终是hg push 和hg pull,并且这些命令都不会在多个源或目标存储库上运行。
出于备份目的,我以前做过这样的事情:
for thedir in $(find . -type d -name .hg) ; do
repopath=$(dirname $thedir)
hg push $repopath ssh://mybackupserver//path/to/backups/$(basename $repopath)
done
将所有本地存储库推送到异地备份。从理论上讲,您可以同时执行 push 和 pull 以及必要时的 init/clone,但您很快就会开始遇到边缘 ccase。