Apakah ada cara yang lebih baik untuk mengekstrak hash revisi saat ini di Mercurial daripada
hg log -l1|grep changeset|cut -d: -f3
?
Bagian dari skrip penerapan aplikasi web saya "menandai" tarball aplikasi yang diunggah dengan hash revisinya yang unik.
hg log -l 1
memberi Anda kumpulan perubahan terbaru, belum tentu yang saat ini Anda perbarui! Bendera -f membatasi keluaran log hg ke leluhur dari direktori kerja saat ini, sehinggahg log -f -l1
lebih mendekati apa yang Anda inginkan.Jawaban:
Mencoba:
Contoh:
sumber
hg --debug id -i
jika Anda ingin dukungan template, gunakanhg parent --template '{node}'
Jangan gunakanhg log -l 1
, ini adalah kumpulan perubahan repositori terbaru, bukan kumpulan perubahan copy pekerjaan saat ini..
titik sebagai revisi.hg help revisions
danhg help revsets
memiliki beberapa pintasan hebat yang hebat seperti itu.hg id -i
cetakan hanya pendek (12 karakter) bentuk hash id global dan sejakhg identify
kekurangan--template
AFAICS tidak ada cara untuk mengekstrak hanya revisi dan tidak ada lagi sejak halaman manual mengatakan itu mencetak ringkasan.Ini akan mengeluarkan hash yang panjang, dengan nilai tambah jika ada perubahan yang tidak mengikat.
sumber
Anda dapat menggunakan --template dengan perintah induk, saya menggunakan ini untuk mendapatkan hash yang panjang:
sumber
hg parents
adalah BERLAKU LAGI , meskipun mungkin bahwa kekuatan tidak telah terjadi ketika Anda menulis jawaban ini. Jika ada gabungan tanpa ikatan, ada dua revisi induk .Meringkas jawaban dan tanggapan mereka, tampaknya ini adalah cara terbaik untuk mencetak pengenal unik (bukan bentuk pendek) dari versi saat ini:
sumber
.
(titik) hanya menampilkan induk pertama dari dua induk grup kerja.Lihat dokumen , paragraf "Dasar-dasar pembuatan template" dan mengikuti.
sumber
lid
untuklog -l 1 --template '{node}\n'
mencapai hal ini - cetak ID revisi lengkap.hg --debug id -i
seperti yang dikatakan di tempat lain.Perintah non-DEPRECATED yang paling spesifik yang karena adanya
--template
hanya dapat mencetak informasi revisi jika keringkasan itu diperlukan (seperti yang tersirat oleh pertanyaan):hg log -l 1 -b . -T '{rev}:{node|short}\n'
Atau untuk bentuk hash unik yang panjang:
hg log -l 1 -r . -T '{node}\n'
The
-b .
ataubranch(.)
(dot untuk nama cabang) berarti cabang direktori kerja saat ini dan-r .
berarti revisi direktori kerja saat ini, yang didokumentasikan dalamhg help revsets
danhg help revisions
.Perhatikan jika ada penggabungan tanpa komitmen ,
.
(titik) hanya menampilkan induk pertama dari dua induk grup kerja.sumber
Seperti yang ditunjukkan orang lain, jangan gunakan
log -l
.Gunakan
hg log -r .
untuk mendapatkan informasi mendetail, bukan menggunakanhg id
yang keluarannya terbatas dan tidak mendukung templat. Anda juga bisa membuat sedikit alias likehere = log -r .
and usehg here
. Jika Anda hanya ingin menggunakan hashhg log -r . --template '{node}\n'
.sumber
Jika TortoiseHg digunakan, klik kanan baris revisi di Workbench dan pilih "Salin hash" (sesuai dokumentasi ).
sumber