Pertanyaan Mengembalikan perubahan buruk dengan svn di Eclipse


Katakanlah saya telah melakukan beberapa perubahan buruk pada repositori Subversion. Lalu saya melakukan perubahan yang baik, yang ingin saya pertahankan.

Apa cara termudah untuk memutar kembali perubahan-perubahan buruk di Eclipse, dan menjaga perubahan yang baik? Dengan asumsi bahwa file yang berkaitan dengan perubahan buruk tidak sama dengan yang berkaitan dengan perubahan yang baik. Bagaimana hal-hal berubah jika perubahan yang baik dilakukan pada file yang sama dengan perubahan yang buruk?

Saya kebanyakan mencari cara untuk melakukan ini melalui Eclipse plugins (Subclipse atau Subversive) tetapi perintah commandline juga menarik.


76
2017-08-30 14:22


asal


Jawaban:


Anda memiliki dua pilihan untuk melakukan ini.

Cepat dan Kotor sedang memilih file Anda (menggunakan ctrl) dalam tampilan Project Explorer, klik kanan mereka, pilih Replace with... lalu Anda memilih opsi terbaik untuk Anda, dari Latest from Repository, atau beberapa Branch versi. Setelah mendapatkan file-file itu, Anda mengubahnya (dengan spasi, atau memperbaiki sesuatu, panggilan Anda, dan berkomitmen untuk membuat revisi yang lebih baru.

Cara yang lebih bersih adalah memilih Merge di menu tim dan menavigasi melalui wizard yang akan membantu Anda memulihkan versi lama dalam revisi yang sebenarnya.

Kedua perintah memiliki persamaan baris perintahnya: svn revert dan svn merge.


30
2017-08-30 15:54



Dalam Eclipse Ganymede (Subclipse)

Pilih proyek / file yang berisi perubahan buruk, dan dari menu pop-up pilih:

Tim -> Tampilkan Riwayat

Revisi yang terkait dengan proyek / file tersebut akan ditampilkan di tab Riwayat.

Cari revisi di mana "perubahan buruk" dilakukan dan dari menu pop-up pilih:

Kembalikan Perubahan dari Revisi X

Ini akan menggabungkan perubahan dalam file (s) yang dimodifikasi dalam revisi yang buruk, dengan revisi sebelum revisi yang buruk.

Ada dua skenario dari sini:

  1. Jika Anda tidak melakukan perubahan untuk file itu (revisi yang buruk adalah revisi terakhir untuk file itu), itu hanya akan menghapus perubahan yang dibuat dalam revisi yang buruk. Perubahan tersebut digabung ke copy pekerjaan Anda sehingga Anda harus melakukannya.

  2. Jika Anda melakukan beberapa perubahan untuk file itu (revisi yang buruk bukan revisi terakhir untuk file itu), Anda harus menyelesaikan konflik secara manual. Katakanlah bahwa Anda memiliki file readme.txt dengan, dan angka revisi yang buruk adalah 33. Juga, Anda telah membuat komitmen lain untuk file tersebut dalam revisi 34. Setelah Anda memilih Kembalikan Perubahan dari Revisi 33 Anda akan memiliki berikut dalam copy pekerjaan Anda:

readme.txt.merge-left.r33    - revisi yang buruk

readme.txt.merge-right.r32   - sebelum revisi yang buruk

readme.txt.working           - versi copy pekerjaan (sama seperti di r34 jika Anda tidak memiliki perubahan yang tidak terikat)

Readme.txt asli akan ditandai konflik, dan akan berisi versi gabungan (di mana perubahan dari revisi yang buruk dihapus) dengan beberapa penanda (<<<<<<< .working dll). Jika Anda hanya ingin menghapus perubahan dari revisi yang buruk dan menjaga perubahan yang dibuat setelah itu, maka yang harus Anda lakukan adalah menghapus penanda. Jika tidak, Anda dapat menyalin konten dari salah satu dari 3 file yang disebutkan di atas ke file asli. Apa pun yang Anda pilih, ketika Anda selesai, tandai konflik yang diselesaikan oleh

Tim - Tandai Terselesaikan

File sementara akan dihapus dan file Anda akan ditandai diubah. Seperti dalam 1, Anda harus melakukan perubahan.

Perhatikan bahwa ini tidak menghapus revisi dari riwayat revisi di repositori svn. Anda cukup membuat revisi baru di mana perubahan dari revisi yang buruk dihapus.


72
2017-09-15 14:06



Jika Anda ingin melakukan 1 file pada satu waktu Anda bisa pergi ke tampilan Sejarah untuk file dengan asumsi Anda memiliki plugin Eclipse SVN yang diinstal. "Team-> Tampilkan Sejarah"

Di tampilan Riwayat, temukan versi bagus terakhir dari file itu, klik kanan dan pilih "Dapatkan Konten". Ini akan menggantikan versi Anda saat ini dengan konten versi tersebut. Kemudian Anda dapat melakukan perubahan ketika Anda memperbaiki semuanya.


10
2017-09-22 19:37



Dalam Eclipse menggunakan Subversif:

Klik kanan proyek Anda> Tim> Gabung

Di jendela gabungan, pilih revisi yang Anda ingin kembalikan sebagai biasanya tetapi juga mengaktifkan kotak centang "Penggabungan terbalik".

Bergabung seperti biasa.


5
2017-11-05 12:59



Saya telah menulis beberapa posting blog tentang hal ini. Salah satu yang Subclipse centric: http://markphip.blogspot.com/2007/01/how-to-undo-commit-in-subversion.html dan yang merupakan centric command-line: http://blogs.collab.net/subversion/2007/07/second-chances/


5
2017-09-15 13:29



Svnbook memiliki bagian tentang bagaimana Subversion memungkinkan Anda untuk mengembalikan perubahan dari revisi tertentu tanpa memengaruhi perubahan yang terjadi dalam revisi berikutnya:

http://svnbook.red-bean.com/en/1.4/svn.branchmerge.commonuses.html#svn.branchmerge.commonuses.undo

Saya tidak banyak menggunakan Eclipse, tetapi di TortoiseSVN Anda dapat melakukannya dari dialog log; cukup klik kanan pada revisi yang ingin Anda kembalikan dan pilih "Kembalikan perubahan dari revisi ini".

Dalam kasus bahwa file yang ingin Anda kembalikan "perubahan buruk" memiliki "perubahan baik" dalam revisi berikutnya, maka prosesnya sama. Perubahan dari revisi "buruk" akan dikembalikan dengan membiarkan perubahan dari revisi "bagus" tidak tersentuh, namun Anda mungkin mengalami konflik.


1
2017-08-30 20:30



Saya memiliki masalah yang sama tetapi opsi gerhana CleanUp tidak bekerja untuk saya.

1) instal TortoiseSVN
2) Pergi ke windows explorer dan klik kanan pada direktori proyek Anda
3 Pilihan CleanUp option (dengan memeriksa opsi break break)

Ini berhasil.

Semoga ini bisa membantu seseorang.


0
2017-10-24 09:15