Estou movendo um processo de construção para usar o mercurial e quero recuperar o diretório de trabalho para o estado da revisão da dica. As execuções anteriores do processo de construção modificaram alguns arquivos e adicionaram alguns que eu não quero confirmar, por isso tenho alterações locais e arquivos que não foram adicionados ao repositório.
Qual é a maneira mais fácil de descartar tudo isso e obter um diretório de trabalho limpo com a revisão mais recente?
Atualmente estou fazendo isso:
hg revert --all
<build command here to delete the contents of the working directory, except the .hg folder.>
hg pull
hg update -r MY_BRANCH
mas parece que deveria haver uma maneira mais simples.
Quero fazer o equivalente a excluir o repositório, fazer um novo clone e uma atualização. Mas o repo é grande demais para que seja rápido o suficiente.
hg update 00
) e faça o backup até a dica. Por que nãohg revert --all
basta voltar a um estado consistente de pasta de trabalho antes de puxar e atualizar?archive
comando é útil no futuro. Por exemplo, você poderiahg archive ../newbuild
, e um instantâneo do seu repositóriohg update
será finalmente colocado lá. Normalmente, faço isso para compilações noturnas, apenas para não arriscar sobrecarregar meu repositório. Apenas exclua o diretório de compilação quando não precisar mais dele.Respostas:
Essas etapas devem poder ser reduzidas para:
O
-C
sinalizador informa ao comando update para descartar todas as alterações locais antes da atualização.No entanto, isso ainda pode deixar arquivos não rastreados em seu repositório. Parece que você quer se livrar deles também, então eu usaria a
purge
extensão para isso:De qualquer forma, não existe um único comando que você possa solicitar ao Mercurial para executar tudo o que deseja aqui, exceto se você alterar o processo para o método de "clone completo" que você diz que não pode executar.
fonte
hg --config "extensions.purge=" purge --all
hg purge --all
só me deu uma boa dor de cabeça, uma vez que também apagado minhas configurações locais, ou seja: banco de dados de usuário / senha etc. :)Isso removerá todas as alterações e atualizará para o cabeçalho mais recente na ramificação atual.
E você pode ativar a extensão de limpeza para poder remover todos os arquivos não versionados também.
fonte
hg purge
é para arquivos não versionados.Para excluir não rastreados no * nix sem a extensão de eliminação, você pode usar
Qual está usando
fonte
Se você está procurando um método fácil , tente isso.
Por mim, mal consigo lembrar as linhas de comando de todas as minhas ferramentas, por isso costumo fazer isso usando a interface do usuário:
1. Primeiro, selecione "confirmar"
2. Em seguida, exiba arquivos ignorados. Se você tiver alterações não confirmadas, oculte-as.
3. Agora, selecione todos eles e clique em "Excluir não versionado".
Feito. É um procedimento muito mais fácil de lembrar do que as coisas da linha de comando.
fonte
O status hg mostrará todos os novos arquivos e você poderá removê- los.
Normalmente eu quero me livrar de arquivos ignorados e não versionados, então:
E depois siga com:
que coloca todos os arquivos com versão no estado correto para a revisão xxxx
Para seguir a tradição do Stack Overflow de dizer que você não deseja fazer isso, muitas vezes acho que essa "Opção Nuclear" destruiu coisas de que me importo.
A maneira certa de fazer isso é ter uma opção 'make clean' em seu processo de compilação, e talvez uma opção 'make reallyclean' e 'make distclean' também.
fonte