Não acredito que mudanças não confirmadas sejam intrinsecamente uma coisa ruim. Você se refere a uma "incapacidade de se fundir com eles" - se você tiver uma alteração não confirmada em algum arquivo e extrair e atualizar uma alteração nesse arquivo, o Mercurial iniciará o processo de mesclagem como se você o tivesse comprometido e depois solicitou uma mesclagem. Você quis dizer algo diferente?
Portanto, para alterações locais que você ainda não deseja compartilhar com outros desenvolvedores, você tem duas abordagens. O primeiro é manter as alterações na sua cópia de trabalho, mas não forçá-las, e a outra é colocá-las de lado, fora da cópia de trabalho. A sua escolha depende se você deseja ter essas alterações disponíveis enquanto trabalha.
Se você os mantiver na cópia de trabalho, as alterações recebidas funcionarão bem, portanto, você só precisa evitar a criação de alterações de saída, o que significa evitar comprometê-las. Se os arquivos são novos, é fácil - apenas não hg add
os faça. Se eles já estiverem rastreados, você poderá excluí-los especificamente de confirmações com hg commit --exclude foo.txt
. Se você tiver um grande número de arquivos a serem excluídos ou os excluirá de muitas confirmações (por exemplo, para uma mudança permanente em um arquivo de configuração local), observe a extensão de exclusão .
Se você estiver preparado para afastar as alterações, terá outro conjunto de opções. A coisa mais simples é simplesmente usar hg diff
nos arquivos para produzir um patch que os descreva, que você mantém em algum lugar seguro, e hg patch --no-commit
reaplicar esse patch quando quiser as alterações de volta. Você pode tornar isso mais suave instalando a extensão de prateleira , a extensão do sótão ou algum outro parente. Você também pode usar a extensão de filas , mas está usando uma marreta para quebrar uma noz. Você pode apenas confirmar as alterações, depois atualizar de volta para o pai e confirmar outro trabalho lá, deixando as alterações em um ramo anônimo atarracado - hg commit -m 'temporary branch' && hg up $(hg log -r 'parents(.)' --template '{node}')
(embora possa ser mais fácil fazer isso manualmente!). Você teria que tomar cuidado para não enviar esse conjunto de alterações, no entanto.