Saya sedang memindahkan proses pembangunan untuk menggunakan lincah dan ingin mendapatkan direktori kerja kembali ke keadaan revisi tip. Proses proses build sebelumnya akan memodifikasi beberapa file dan menambahkan beberapa file yang tidak ingin saya komit, jadi saya memiliki perubahan lokal dan file yang tidak ditambahkan ke repositori.
Apa cara termudah untuk membuang semua itu dan mendapatkan direktori kerja bersih yang memiliki revisi terbaru?
Saat ini saya sedang melakukan ini:
hg revert --all
<build command here to delete the contents of the working directory, except the .hg folder.>
hg pull
hg update -r MY_BRANCH
tapi sepertinya harus ada cara yang lebih sederhana.
Saya ingin melakukan hal yang sama dengan menghapus repo, melakukan klon baru, dan pembaruan. Tetapi repo itu terlalu besar untuk bisa cukup cepat.
hg update 00
) dan kemudian kembali ke ujung. Mengapa tidakhg revert --all
cukup untuk kembali ke status folder kerja yang konsisten sebelum menarik dan memperbarui?archive
perintah itu berguna di masa depan. Misalnya, Anda bisahg archive ../newbuild
, dan snapshot repositori Anda pada akhirnyahg update
akan ditempatkan di sana. Saya biasanya melakukan itu untuk membangun malam jadi saya tidak mengambil risiko mengacaukan repo saya. Hapus saja direktori build ketika Anda tidak lagi membutuhkannya.Jawaban:
Langkah-langkah tersebut harus dapat dipersingkat menjadi:
The
-C
flag mengatakan perintah update untuk membuang semua perubahan lokal sebelum memperbarui.Namun, ini mungkin masih meninggalkan file yang tidak terlacak dalam repositori Anda. Sepertinya Anda ingin menyingkirkannya juga, jadi saya akan menggunakan
purge
ekstensi untuk itu:Bagaimanapun, tidak ada satu perintah tunggal yang dapat Anda minta Mercurial untuk melakukan yang akan melakukan semua yang Anda inginkan di sini, kecuali jika Anda mengubah prosesnya menjadi metode "kloning penuh" yang Anda katakan tidak dapat Anda lakukan.
sumber
hg --config "extensions.purge=" purge --all
hg purge --all
hanya memberi saya sakit kepala yang baik, karena itu juga menghapus konfigurasi lokal saya, yaitu: pengguna basis data / kata sandi dll :)Ini akan menghapus semua perubahan dan memperbarui ke kepala terbaru di cabang saat ini.
Dan Anda dapat mengaktifkan ekstensi pembersihan untuk dapat menghapus semua file yang tidak berversi juga.
sumber
hg purge
untuk file yang tidak berversi.Untuk menghapus tidak terlacak pada * nix tanpa ekstensi purge yang dapat Anda gunakan
Yang menggunakan
sumber
Jika Anda mencari metode yang mudah , maka Anda mungkin ingin mencoba ini.
Saya sendiri tidak dapat mengingat commandlines untuk semua alat saya, jadi saya cenderung melakukannya menggunakan UI:
1. Pertama, pilih "komit"
2. Kemudian, tampilkan file yang diabaikan. Jika Anda memiliki perubahan yang tidak dikomit, sembunyikan.
3. Sekarang, pilih semuanya dan klik "Delete Unversioned".
Selesai Ini adalah prosedur yang jauh lebih mudah diingat daripada hal-hal commandline.
sumber
Status hg akan menunjukkan kepada Anda semua file baru, dan kemudian Anda bisa rm mereka.
Biasanya saya ingin menyingkirkan file yang diabaikan dan tidak berversi, jadi:
Dan kemudian ikuti itu dengan:
yang menempatkan semua file versi dalam kondisi yang tepat untuk revisi xxxx
Untuk mengikuti tradisi Stack Overflow mengatakan kepada Anda bahwa Anda tidak ingin melakukan ini, saya sering menemukan bahwa "Opsi Nuklir" ini telah menghancurkan hal-hal yang saya pedulikan.
Cara yang tepat untuk melakukannya adalah memiliki opsi 'jadikan bersih' dalam proses build Anda, dan mungkin juga 'make reallyclean' dan 'make distclean' juga.
sumber