Bagaimana Anda bisa menentukan semua file yang diubah dalam set perubahan tertentu?
Saya tidak mencari perbedaan dalam kasus ini, hanya daftar tambah / hapus / modifikasi.
hg log -vprX
melakukan daftar diff tetapi saya hanya ingin file.
Bagaimana Anda bisa menentukan semua file yang diubah dalam set perubahan tertentu?
Saya tidak mencari perbedaan dalam kasus ini, hanya daftar tambah / hapus / modifikasi.
hg log -vprX
melakukan daftar diff tetapi saya hanya ingin file.
Jawaban:
Jika Anda ingin membuat daftar hanya file yang telah diubah maka Anda harus menggunakan "perintah status" Berikut ini akan daftar perubahan file dalam revisi REV
hg status --change REV
-n
/ --no-status
juga.
hg status --no-status --change REV
hg status --rev REV~1:REV
yang biasa saya lakukan.
hg status --change .
Hapus saja p
dari Anda hg log -vpr
akan menampilkan daftar file. -p
Berarti tunjukkan tambalan. Anda juga dapat menggunakan templat untuk memformat keluaran sesuai selera Anda.
hg status --change .
bekerja lebih baik dan memberikan awalan tindakan file (A \ M \ D dll) dan jalur relatif yang lebih baik
Saya tahu pertanyaannya adalah untuk satu set perubahan, tetapi jika Anda ingin semua file dimodifikasi untuk berbagai rangkaian perubahan, Anda dapat melakukannya
hg status --rev 1 --rev 10 -m
hg log -r BEGIN:END --template "{files}\n"
seperti @ geoffrey-zheng dan @ton menulis dua tahun lalu !!!
hg status --rev BEGIN --rev END
adalah: 1. lebih mudah diingat daripada hg log -r BEGIN:END --template "{files}\n"
; 2. mencetak file dalam baris terpisah tanpa menggunakan sed
(@Eric Lawler) atau join()
(@Foxichu); 3. tanpa -m
bendera, ini tidak hanya menampilkan file yang dimodifikasi, tetapi juga ditambahkan dan dihapus (pewarnaan standar yang bagus juga berlaku di sini); 4. ada -a
dan -r
bendera yang memungkinkan penyaringan berbeda; 5. Jika seseorang tidak menginginkan status awalan, ada -n
opsi yang menekannya.
Temukan pertanyaan ini melalui Googling untuk konsep serupa. Untuk menampilkan semua file yang diubah melalui serangkaian rangkaian perubahan, semudah:
hg log -r [start rev]:[end rev] --template "{file_mods}{file_adds}\n" | sed -e 's/ /\n/g' | sort -d | uniq
hg log -r [start rev]:[end rev] --template "{file_mods}{file_adds}\n"
akan menunjukkan kepada Anda daftar setiap file yang diubah atau ditambahkan di setiap set perubahan, dari [mulai rev] hingga [akhir rev], dengan setiap file perubahan di baris baru. Tukar {file_mods}{file_adds}
dengan {files}
untuk menampilkan semua file yang dimodifikasi, ditambahkan, atau dihapus.sed -e 's/ /\n/g'
akan membagi semua file untuk ditampilkan pada baris terpisah dansort
akan, er, mengurutkan daftar untuk Anda sehingga kami dapat memfilter daftar dengan uniquniq
akan memfilter daftar untuk menghapus duplikat — file yang diubah di lebih dari satu revisi.--template
Solusi berbasis A tanpa kekurangan ini dapat dibangun menggunakan join()
seperti yang disarankan oleh @Foxichu.
Saya tahu pertanyaan ini adalah pertanyaan lama dan saya terkejut tidak ada yang baru saja menawarkan formulir kode yang dimodifikasi OP. Saya mendapat daftar file yang dimodifikasi / ditambahkan / dihapus (tidak berlabel yang mana) dengan hanya menjalankan hg log -v
. Atau apa yang sebenarnya saya perlukan hg log -v -l5
untuk melihat file yang telah dimodifikasi / ditambahkan / dihapus dalam 5 komit terakhir (termasuk yang belum saya dorong ke repo).
Jika Anda seperti kebanyakan toko, Anda menggunakan sistem tiket untuk melacak perubahan. Jika Anda mengetahui nomor tiket dan ingin menemukan semua komit yang terkait dengan tiket itu (dengan asumsi Anda menyertakan nomor tiket di pesan komit), Anda dapat menggunakan:
hg log -k TICKET_NUMBER
Ini menampilkan semua revisi yang terkait dengan tiket. Namun, itu tidak mencantumkan file. Anda dapat menggunakan salah satu jawaban di atas untuk mendapatkan daftar file yang terkait dengan revisi.
Untuk membuatnya lebih sederhana, dengan menggabungkan info dari jawaban sebelumnya, Anda dapat melakukan hal berikut untuk mencari komit, termasuk file yang diubah:
hg log -vk TICKET_NUMBER