Eu sou novo no Mercurial. Simplesmente não consigo encontrar o comando certo. Tentei atualizar / finalizar a compra sem sorte. Estou usando o repositório local. obrigado
Eu sou novo no Mercurial. Simplesmente não consigo encontrar o comando certo. Tentei atualizar / finalizar a compra sem sorte. Estou usando o repositório local. obrigado
Respostas:
Eu acho que você quer hg revert -r<rev> <file>
(isso vai mudar o arquivo para ficar como estava na revisão dada).
Como o djc disse revert
altera um arquivo no local para corresponder a uma revisão anterior. Se você quiser que ele não esteja no lugar, você pode usar hg cat -r revisionid filename
(substituindo o revisionid e o nome do arquivo, é claro), que irá enviar o arquivo para stdout, adequado para redirecionar para qualquer lugar que você desejar.
hg revert
realmente resolve este problema. Mas acho que você está confuso sobre uma gama mais ampla de coisas do que simplesmente a resposta à sua pergunta e deseja tentar responder de forma mais completa.
hg update
é um comando de repositório completo e não funcionará em arquivos individuais. É diferente da subversão svn update
dessa forma. Se você fizer hg --help update
isso, poderá ver que este é o caso porque o comando não aceita nenhum argumento de arquivo. Ele pode ser usado para mover todo o seu repositório para um determinado instantâneo, mas não pode ser usado para fazer isso em apenas um arquivo.
Se você digitar, hg --help
verá uma lista de comandos. É uma lista bastante grande e um tanto assustadora, mas se você a ler, encontrará esta linha:
revert restore individual files or directories to an earlier state
Agora, se você deseja apenas o último estado para fins de comparação, há outro comando no qual você pode estar interessado, e esse é hg cat
. Isso permitirá que você imprima o conteúdo de um arquivo em qualquer revisão específica. Você pode então redirecionar sua saída para algum outro arquivo. Em seguida, você pode ter a versão válida anterior de seu arquivo e a versão antiga para comparar lado a lado.
A razão pela qual o Mercurial tem um update
comando separado é que é possível fazer algo no Mercurial que é impossível no Subversion. Você pode update
ir para uma versão anterior, fazer alterações e, em seguida, confirmar. Isso criará um branch. O update
comando tem o efeito de também alterar a revisão pai do diretório de trabalho atual, bem como alterar o conteúdo de todos os arquivos nesse diretório para as versões da revisão pai.
Isso significa que revert
muda o conteúdo de um arquivo (ou mesmo de todo o repositório se você der ao comando os argumentos corretos), mas deixa a revisão pai da cópia de trabalho atual igual.
Você pode descobrir a revisão pai (ou revisões no caso de uma fusão) da cópia de trabalho atual usando o hg parents
comando.
No Subversion, as revisões são uma progressão estritamente linear. O Mercurial cria ramos rapidamente, e eles são quase tão fáceis de fundir. As revisões formam um DAG, não uma progressão estritamente linear.
Para extrair uma revisão específica de um arquivo específico, você pode fazer isso no Windows:
hg cat "<FileToBeExtractedPath>" -r 9 > "<ExtractionPath>"
Aqui, 9 é o número da revisão.
Ou melhor ainda:
hg cat "<FileToBeExtractedPath>" -r 9 -o "<ExtractionPath>"