Em um VCS tradicional, eu posso entender por que você não cometeu arquivos não resolvidos porque pode interromper a compilação. No entanto, não entendo por que você não deve confirmar arquivos não resolvidos em um DVCS (alguns deles realmente impedem que você confirme os arquivos).
Em vez disso, acho que seu repositório deve ser impedido de empurrar e puxar , mas não de confirmar.
Ser capaz de confirmar durante o processo de mesclagem tem várias vantagens (a meu ver):
- As alterações reais de mesclagem estão no histórico.
- Se a mesclagem for muito grande, você poderá fazer confirmações periódicas.
- Se você cometeu um erro, seria muito mais fácil reverter (sem precisar refazer toda a mesclagem).
- Os arquivos podem permanecer sinalizados como não resolvidos até serem marcados como resolvidos. Isso impediria empurrar / puxar.
Você também pode ter um conjunto de conjuntos de alterações atuando como mesclagem, em vez de apenas um. Isso permitiria que você ainda usasse ferramentas como git rerere
.
Então, por que o comprometimento com arquivos não resolvidos é desaprovado / evitado? Existe alguma razão além da tradição?
hg 1.6
após uma mesclagem, os arquivos são marcados como não resolvidos. hg
vai não deixe de se comprometer até ter marcado-los como resolvido (não significa necessariamente que você realmente tem que resolvê-los, mas eu diria que é a idéia).
hg
na verdade mantém uma lista de arquivos que foram ou não sinalizados como "resolvidos" (usando hg resolve
). Se houver algum U
arquivo nesta lista, ele não permitirá que você confirme.
hg resolve
é usado especificamente para mesclagens com conflitos; consulte selenic.com/mercurial/hg.1.html#resolve . Note that Mercurial will not let you commit files with unresolved merge conflicts. You must use hg resolve -m ... before you can commit after a conflicting merge.