Ketika saya menggabungkan barang-barang di repositori saya, Subversion ingin menambah / mengubah banyak svn:mergeinfo
properti ke file yang sama sekali tidak terkait dengan hal-hal yang ingin saya gabungkan.
Pertanyaan tentang perilaku ini telah ditanyakan sebelumnya di sini di Stack Overflow:
- SVN Mergeinfo properti di jalur selain root copy pekerjaan
- Apakah ada cara untuk mematikan TortoiseSVN menggunakan svn: mergeinfo?
Dari apa yang saya pahami dari topik yang disebutkan di atas, sepertinya banyak file di repositori saya memiliki svn:mergeinfo
properti eksplisit , padahal seharusnya tidak. Sarannya adalah kurangi jumlah dan hanya letakkan properti tersebut di file / folder yang relevan.
Jadi sekarang pertanyaan saya: bagaimana saya bisa dengan mudah menghapus properti yang tidak dibutuhkan itu? Saya menggunakan TortoiseSVN, tetapi saya enggan untuk memeriksa / memperbaiki ratusan file secara manual. Apakah ada cara yang lebih mudah untuk menghapus svn:mergeinfo
properti yang tidak diperlukan tersebut ?
PS Saya tidak mencari kode C ++ SVN API.
sumber
Berikut adalah cara untuk menghapus semua subpohon svn: properti mergeinfo. Jalankan di dalam root repositori Anda:
Semua dalam satu baris agar mudah menyalin / menempel:
Untuk melihat file mana yang akan berpengaruh sebelum Anda menjalankannya, ubah "propdel" terakhir menjadi "propget" atau hapus pipa xargs terakhir sama sekali.
sumber
Seperti yang disebutkan di utas ini :
sumber
Seperti saya tidak percaya diri dengan buta
svn:merge-info
penghapusan properti , saya telah menerapkan alat untuk menganalisis situasi saat ini pada copy pekerjaan dan menghapus sebanyak mungkin revisi gabungan dari properti info gabungan non-root. Setelah pemeriksaan dan kontrol tambahan oleh manusia, perubahan pada copy pekerjaan dapat dilakukan.Ini dia: svn-clean-mergeinfo
Jangan ragu untuk melaporkan masalah apa pun tentang penggunaannya untuk memperbaikinya.
Subversion 1.10 memperkenalkan alat baru yang didedikasikan untuk tugas itu:
svn-mergeinfo-normalizer
sumber
Saya tahu ini sudah lama, tetapi saya mengalami masalah serupa. Saya menggunakan TortoiseSVN 1.6.7. Kebetulan properti itu ada di root copy pekerjaan saya. Ketika saya melihat properti di root dan mengklik Hapus di svn: mergeinfo, saya ditanya apakah saya ingin menghapusnya secara rekursif. Ini menyingkirkan semua svn saya: mergeinfo cockups.
sumber
Jika Anda yakin ingin menghapus properti mergeinfo secara massal, Anda dapat menggunakan skrip BASH berikut.
Itu mendapat daftar file yang diubah, memfilternya untuk hanya menggabungkan perubahan saja, menghapus semuanya kecuali jalur file yang sebenarnya, mengubah jalur satu per baris menjadi daftar yang dipisahkan spasi, dan panggilan kembali ke daftar itu.
sumber
--xml
bendera dan parser XML; apa pun dapat berubah di antara versi, karena kompatibilitas ke depan pada format keluaran tekstual tidak dijamin.Daripada hanya menghapus properti mergeinfo secara membabi buta, itu juga memungkinkan untuk menyelesaikan gabungan yang "hilang".
Salin properti mergeinfo dari folder akar, dan kemudian lakukan penggabungan pada folder anak untuk jalur relatif yang sesuai dan daftar revisi yang sama persis. (Anda dapat, tetapi tidak perlu, hanya mencantumkan perbedaan antara daftar ini dan yang sudah ada di folder anak.)
Biasanya penggabungan ini hanya akan mengubah properti mergeinfo, bukan file sebenarnya. (Jika itu akhirnya mengubah file, maka salah satu dari gabungan sebelumnya pasti hanya gabungan sebagian, yang mungkin menyebabkan masalah bagi Anda.)
Melakukan hal ini pada akhirnya akan menghapus properti mergeinfo untuk Anda, setelah Anda membuat keduanya sama persis. Anda mungkin juga perlu melakukan kebalikannya: gabungkan ke root revisi gabungan apa pun yang hanya ada di folder anak (sekali lagi, Anda bisa menempelkan daftar lengkap dan biarkan SVN memilah-milah menemukan perbedaan untuk Anda).
sumber
Untuk melakukan perubahan dalam struktur direktori, ini akan menjadi (hanya 'temukan' non-DOS):
Menjalankan klien 1.6.12 yang terhubung ke server 1.5, saya memiliki masalah yang sama; ada adalah subdirektori dalam proyek yang membutuhkan svn sendiri: mergeinfo, tetapi memiliki 121 entri tersebut (termasuk 5 direktori bawah ./var dengan "svn: ignore *") tampaknya agak tidak pantas. Jadi, alangkah baiknya memiliki skrip (misalnya Python) yang mampu menghapus info penggabungan yang jelas tidak berguna dan memberi tahu tentang perbedaan lainnya ...
sumber