Observe que hg log -l 1você fornece o conjunto de alterações mais recente, não necessariamente aquele para o qual você está atualizado no momento! O sinalizador -f limita a saída do log hg aos ancestrais do diretório de trabalho atual, portanto, hg log -f -l1está mais próximo do que você deseja.
Caso as pessoas percam as soluções abaixo, se você desejar o uso completo do hash: hg --debug id -ise desejar o suporte ao modelo, use hg parent --template '{node}' Não use hg log -l 1, é o mais recente conjunto de alterações do repositório, não o conjunto de alterações atual da cópia de trabalho.
11118 Joseph Lisee
7
O uso de --debug em scripts não é recomendado; essa saída é controlada com menos cuidado com compatibilidade com versões anteriores. Use o modelo. Se você quiser fazer isso com o log, use .ponto como revisão.
Ry4an Brase
Graças Ry4an eu não tinha idéia sobre "-r". referenciando a revisão atual da cópia de trabalho. Essa parece ser a melhor jogada, em seguida, mudar de "log" para "parent".
Joseph Lisee
Sem problemas. hg help revisionse hg help revsetstem alguns atalhos poderosos e loucos como esse.
Ry4an Brase
Mas essa não é a resposta mais específica para a pergunta, porque o afaik hg id -iimprime apenas a forma abreviada (12 caracteres) do hash id global e, como hg identifycarece de --templateafaics, não há como extrair apenas a revisão e nada mais, já que a página de manual diz isso imprime um resumo.
Shelby Moore III
41
hg --debug id -i
Isso produzirá o hash longo, com uma vantagem se houver alterações não confirmadas.
A página do manual hg diz hg parents: DEPRECATED , embora talvez esse não tenha sido o caso quando você escreveu esta resposta. Se houver uma mesclagem não confirmada, há duas revisões pai .
Shelby Moore III
2
Alguém pode nos dizer por que o hg parents está obsoleto e o que devemos usar?
Vincent Vincent
17
Resumindo as respostas e suas respostas, parece que esta é a melhor maneira de imprimir o identificador exclusivo (não abreviado) da versão atual :
Eu queria quase isso, mas com o longo hash. Aliasing lidpara log -l 1 --template '{node}\n'conseguir exatamente isso - imprima o ID da revisão completa.
Michael Ekstrand
6
Isso imprime o conjunto de alterações extraído mais recente. Nosso diretório de trabalho pode ser atualizado para um conjunto de alterações mais antigo. Para imprimir o conjunto de alterações para o qual somos atualizados, use "hg id". O único problema é que "hg id" não suporta modelos nem tem uma opção para imprimir hash longo (a menos que alguém saiba como fazer isso).
eiver
1
Como Eiver disse, isso não imprime a revisão realmente em sua cópia de trabalho, apenas a mais recente em seu repositório. Como o uso desta solução pode introduzir erros de rastreamento, votei negativamente nesta solução.
Joseph Lisee
1
O mesmo vale para a votação de Joe. Também use o @Eiver hg --debug id -icomo é dito em outro lugar.
AJP
3
O comando não DEPRECATED mais específico que, devido à presença de, --templatepode imprimir apenas informações de revisão se essa concisão for necessária (conforme implícito na pergunta):
Use hg log -r .para obter informações detalhadas, em vez de usar hg idcuja saída é limitada e não suporta modelos. Você também pode criar um pequeno apelido como here = log -r .e usar hg here. Se você deseja apenas o uso de hash hg log -r . --template '{node}\n'.
hg log -l 1
você fornece o conjunto de alterações mais recente, não necessariamente aquele para o qual você está atualizado no momento! O sinalizador -f limita a saída do log hg aos ancestrais do diretório de trabalho atual, portanto,hg log -f -l1
está mais próximo do que você deseja.Respostas:
Experimentar:
Exemplo:
fonte
hg --debug id -i
se desejar o suporte ao modelo, usehg parent --template '{node}'
Não usehg log -l 1
, é o mais recente conjunto de alterações do repositório, não o conjunto de alterações atual da cópia de trabalho..
ponto como revisão.hg help revisions
ehg help revsets
tem alguns atalhos poderosos e loucos como esse.hg id -i
imprime apenas a forma abreviada (12 caracteres) do hash id global e, comohg identify
carece de--template
afaics, não há como extrair apenas a revisão e nada mais, já que a página de manual diz isso imprime um resumo.Isso produzirá o hash longo, com uma vantagem se houver alterações não confirmadas.
fonte
Você pode usar --template com o comando pai, eu uso isso para obter o hash longo:
fonte
hg parents
: DEPRECATED , embora talvez esse não tenha sido o caso quando você escreveu esta resposta. Se houver uma mesclagem não confirmada, há duas revisões pai .Resumindo as respostas e suas respostas, parece que esta é a melhor maneira de imprimir o identificador exclusivo (não abreviado) da versão atual :
fonte
.
(ponto) exibirá apenas o primeiro pai de dois pais do grupo de trabalho.Consulte os documentos , parágrafos "Noções básicas de modelos" e seguintes.
fonte
lid
paralog -l 1 --template '{node}\n'
conseguir exatamente isso - imprima o ID da revisão completa.hg --debug id -i
como é dito em outro lugar.O comando não DEPRECATED mais específico que, devido à presença de,
--template
pode imprimir apenas informações de revisão se essa concisão for necessária (conforme implícito na pergunta):hg log -l 1 -b . -T '{rev}:{node|short}\n'
Ou para uma forma longa e exclusiva de hash:
hg log -l 1 -r . -T '{node}\n'
O
-b .
oubranch(.)
(ponto para o nome da ramificação) significa a ramificação atual do diretório de trabalho e-r .
a revisão atual do diretório de trabalho, documentada emhg help revsets
ehg help revisions
.Observe que se houver uma mesclagem não confirmada , o
.
(ponto) exibirá apenas o primeiro pai de dois pais do grupo de trabalho.fonte
Como outros já apontaram, não use
log -l
.Use
hg log -r .
para obter informações detalhadas, em vez de usarhg id
cuja saída é limitada e não suporta modelos. Você também pode criar um pequeno apelido comohere = log -r .
e usarhg here
. Se você deseja apenas o uso de hashhg log -r . --template '{node}\n'
.fonte
Caso o TortoiseHg seja usado, clique com o botão direito do mouse na linha de revisão no Workbench e selecione "Copy hash" (conforme a documentação ).
fonte