我知道git会拒绝推送到非裸存储库,但是hg似乎并不...这是否意味着我在克隆hg时不需要担心裸露?我已经尝试过(在下面的pastebin中),我没有看到这种方法有任何问题,但我找不到问题的能力与没有问题的情况不同。另外,我在.hgrc中启用了autopush ......
答案 0 :(得分:2)
当您推送时,Mercurial不会自动合并任何内容,因此推送到非裸存储库是完全安全的。这就是为什么Mercurial不区分裸存储库和非裸存储库的原因 - 裸存储库只是工作目录位于null
版本(即初始提交之前)的原因。
如果您要将新头部推向现有分支,Mercurial将要求您指定hg push -f
。这是因为在同一分支上有多个磁头会给其他开发人员带来额外的复杂性,并可能导致磁头以不同的方式合并,从而导致一系列不必要的合并。
您通常应遵循的工作流程是 pull ; 将你的新头合并到现有头;的推动的。当然,这也很大程度上取决于您使用的分支策略 - 使用书签(相当于git分支)或任务的匿名分支通常最终会在同一个命名分支上使用多个头,而一个使用命名分支执行任务往往不会。