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-statusjuga.
hg status --no-status --change REV
hg status --rev REV~1:REVyang biasa saya lakukan.
hg status --change .
Hapus saja pdari Anda hg log -vprakan menampilkan daftar file. -pBerarti 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 ENDadalah: 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 -mbendera, ini tidak hanya menampilkan file yang dimodifikasi, tetapi juga ditambahkan dan dihapus (pewarnaan standar yang bagus juga berlaku di sini); 4. ada -adan -rbendera yang memungkinkan penyaringan berbeda; 5. Jika seseorang tidak menginginkan status awalan, ada -nopsi 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.--templateSolusi 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 -l5untuk 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