Sebagian besar jawaban sebelumnya telah menggunakan penggabungan terbalik, dan itu biasanya jawaban yang tepat. Namun, ada satu situasi (yang baru saja terjadi pada saya) di mana tidak.
Saya tidak sengaja mengubah file dengan ujung baris Unix ke ujung garis DOS ketika membuat perubahan kecil, dan melakukan itu. Ini mudah dibatalkan, baik dengan mengubah akhir baris dan melakukan lagi, atau dengan penggabungan terbalik, tetapi memiliki efek membuat svn blame
daftar edit saya sebagai sumber setiap baris file. (Menariknya, TortoiseSVN di Windows tidak terpengaruh oleh ini; hanya baris perintah svn blame
.)
Jika Anda ingin mempertahankan riwayat seperti yang dilaporkan oleh svn blame
, saya pikir Anda perlu melakukan hal berikut:
- Hapus file dan komit.
- Dalam repositori, salin salinan baik file sebelumnya ke kepala, dan komit.
- Pulihkan suntingan yang ingin Anda pertahankan.
Penghapusannya sedikit menakutkan, tapi ingat Anda selalu menyimpan file di repositori, jadi memulihkannya bukan masalah besar. Berikut beberapa kode untuk menggambarkan langkah-langkahnya. Asumsikan itu xxx
adalah nomor revisi dari salinan bagus terakhir.
svn rm svn+ssh://path/to/file
svn copy svn+ssh://path/to/file@xxx svn+ssh://path/to -m"Restore good copy"
svn update
<restore the edits>
svn commit -m"Restore edits"
Perhatikan bahwa untuk salinan di repositori, tujuan harus berupa direktori, bukan nama file.