Menghasilkan daftar file mana yang diubah antara versi hg

118

Saya ingin membuat daftar file mana yang diubah antara dua revisi dalam direktori tertentu di Mercurial.

Secara khusus, saya tidak tertarik dengan apa yang berubah, tetapi file mana yang berubah dalam direktori itu.

Misalnya, misalkan antara thendan otherthen, hanya 2 file yang diubah:

>hg hypothetical-command -r then:otherthen
foo.baz
bar.baz
>

Apa perintah hipotetisnya? Saya telah mencoba diff dan log, tetapi saya tidak dapat melihat bagaimana meyakinkan mereka untuk melakukannya: entah saya mendapatkan patch (diff), atau saya mendapatkan seluruh repo (log).

Paul Nathan
sumber

Jawaban:

166
hg status --rev x:y

di mana xdan ynomor revisi yang diinginkan (atau nama tag atau cabang).

Jika Anda menggunakan terminal di windows tambahkan hg status --rev x:y> your-file.txtuntuk menyimpan daftar ke file.

alemjerus
sumber
3
Untuk hanya melihat perubahan di direktori saat ini:hg status --rev x:y .
Pengguna
14
Untuk melihat perubahan dalam revisi terbaru: hg status --rev .^
kunigami
8
Untuk mendapatkan hanya daftar nama file (dan tidak ada karakter awalan yang menunjukkan jenis perubahan), tambahkan -n, yaituhg status --rev x:y -n
Cheetah
1
hg status --change .mencantumkan file yang diubah dalam .- daftar yang sama hg status --rev .^tetapi lebih langsung
Metaxis
14

status adalah apa yang Anda butuhkan.

Namun, bergantung pada apa yang Anda maksud dengan "di antara dua revisi", Anda juga dapat mempertimbangkan untuk menggunakan rentang " x :: y " (DAG - Directed Acyclic Graph).

Diberikan perubahan paralel,

1--2---4 \---3

hg status --rev 1:4 akan mengembalikan (1,2,3,4), yaitu apa saja di antara dan termasuk titik akhir, menurut rev numerik lokal . Ini mungkin (dan kemungkinan besar akan) mengembalikan hasil yang berbeda di repositori lain - meskipun terkait!

hg status --rev 1::4akan mengembalikan (1,2,4), yaitu titik akhir, dan semua perubahan yang merupakan turunan dari '1' DAN nenek moyang dari '4'.

Kasus terakhir, x :: y, biasanya lebih berguna dalam aplikasi dunia nyata. Inilah yang Anda dapatkan melalui TortoiseHg \ Visual Diff.


> hg help revsets:

"x :: y" A DAG range, artinya semua perubahan yang merupakan turunan dari x dan nenek moyang y, termasuk x dan y itu sendiri. Jika titik akhir pertama ditinggalkan, ini setara dengan "nenek moyang (y)", jika titik akhir kedua ditinggalkan sama dengan "keturunan (x)".

martind2112
sumber
1
Mungkin Anda perlu menyertakan perintah secara eksplisit sehingga jawaban Anda tidak bergantung pada yang lain dan lebih mudah dibuktikan. Sesuatu seperti "Ya, status adalah yang Anda butuhkan. Misalnya hg status --rev x::y".
PhoneixS