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).

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.


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)".


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.