有一个相当基本的子回购结构,如下所示:
父
父/subrepo1
父/subrepo2
当多个用户同时推送更改时,往往会出现竞争条件。简单的例子:
用户 1 和 2 开始推送。
用户 1 跳过parent/subrepo1
,没有变化。
用户 2 推送到parent/subrepo1
, 进行更改。
用户 1 推送到parent/subrepo2
,并进行更改。
用户 2 尝试推送到parent/subrepo2
,但不能,因为它会创建多个头。
用户 1 完成推送parent
。
这样做的结果是用户 1 成功推送所有内容,但用户 2 部分推送然后失败。这留下了一个在parent/subrepo1
中没有相应提交的头部parent
,这将导致下一个推送的人出现问题,parent/subrepo1
除非用户 2 发现他们的错误、拉parent
取、合并、提交,然后尝试推送(但不能保证另一个用户不会再尝试同时推动!)。
我的问题:Mercurial 中是否有办法强制用户在 Mercurial 存储库与其他子存储库进行推送操作时等待(以有效地实现互斥锁)或者有没有办法撤消对目标更改的子存储库的失败推送用户推送失败。