Eclipse'de svn ile kötü değişiklikleri geri alma


81

Subversion deposunda bazı kötü değişiklikler yaptığımı varsayalım. Sonra da korumak istediğim iyi değişiklikler yapıyorum.

Eclipse'deki bu kötü değişiklikleri geri almanın ve iyi değişiklikleri korumanın en kolay yolu ne olabilir? Kötü değişikliklerle ilgili dosyaların, iyi değişikliklerle ilgili olanlarla aynı olmadığını varsayarsak. Kötü değişikliklerle aynı dosyalarda iyi değişiklikler yapılırsa işler nasıl değişir?

Bunu çoğunlukla Eclipse eklentileri (Subclipse veya Subversive) aracılığıyla yapmanın bir yolunu arıyorum, ancak komut satırı komutları da ilginç.

Yanıtlar:


30

Bunu yapmak için iki seçeneğiniz var.

Hızlı ve Kirli, dosyalarınızı ctrlProje Gezgini görünümünde seçer (kullanarak ), sağ tıklayın, seçin Replace with...ve ardından sizin için en iyi seçeneği Latest from Repository, içinden veya bir Branchsürümden seçin. Bu dosyaları aldıktan sonra, onları değiştirirsiniz (bir boşlukla veya bir şeyi düzelterek, çağrınızı yapın ve daha yeni bir revizyon oluşturmak için onları işleyin.

Daha temiz bir yol, Mergeekip menüsünde seçim yapmak ve gerçek revizyondaki eski sürümü kurtarmanıza yardımcı olacak sihirbazda gezinmektir.

Her iki komutun da komut satırı eşdeğerleri vardır: svn revertve svn merge.


1
Depodan en son yanlış kontrol edilmiş olandır, bu yüzden nerede yardımcı olması gerektiğini göremiyorum. Bunun yanı sıra, eclipse bu konuda size yardımcı olmak istemez çünkü birden fazla dosya seçerseniz yalnızca bahsetme seçeneği mevcuttur (muhtemelen en son sürümleri farklı olduğu için).
Macilias

79

Tutulma Ganymede'de (Subclipse)

Kötü değişiklik içeren projeyi / dosyayı seçin ve açılır menüden şunu seçin:

Takım -> Geçmişi Göster

O proje / dosya ile ilgili revizyonlar Geçmiş sekmesinde gösterilecektir.

"Kötü değişikliklerin" yapıldığı revizyonu bulun ve açılır menüden şunu seçin:

Revizyon X'teki Değişiklikleri Geri Al

Bu, kötü revizyonla değiştirilen dosya (lar) daki değişiklikleri, kötü revizyondan önceki revizyonla birleştirecektir.

Buradan iki senaryo var:

  1. O dosya için hiçbir değişiklik yapmadıysanız (kötü revizyon, o dosya için yapılan son revizyondur), sadece kötü revizyonda yapılan değişiklikleri kaldıracaktır. Bu değişiklikler, çalışma kopyanızla birleştirilir, böylece bunları gerçekleştirmeniz gerekir.

  2. O dosya için bazı değişiklikler yaptıysanız (hatalı revizyon, o dosya için son revizyon değildir), çakışmayı manuel olarak çözmeniz gerekecektir. Diyelim ki readme.txt ile bir dosyanız var ve kötü revizyon numarası 33. Ayrıca, revizyon 34'te bu dosya için başka bir taahhütte bulundunuz. Revizyon 33'teki Değişiklikleri Revert'i seçtikten sonra , çalışma kopyanızda şunları göreceksiniz:

readme.txt.merge-left.r33 - hatalı revizyon

readme.txt.merge-right.r32 - kötü revizyondan önce

readme.txt.working - çalışan kopya sürümü (herhangi bir taahhüt edilmemiş değişikliğiniz yoksa r34'teki ile aynıdır)

Orijinal benioku.txt çakışmalı olarak işaretlenecek ve bazı işaretçilerle (<<<<<<<. Çalışma vb.) Birleştirilmiş sürüm (kötü revizyondan gelen değişikliklerin kaldırıldığı yer) içerecektir. Yalnızca kötü revizyondaki değişiklikleri kaldırmak ve bundan sonra yapılan değişiklikleri korumak istiyorsanız, yapmanız gereken tek şey işaretçileri kaldırmaktır. Aksi takdirde, yukarıda belirtilen 3 dosyadan birinin içeriğini orijinal dosyaya kopyalayabilirsiniz. Neyi seçerseniz seçin, işiniz bittiğinde, uyuşmazlığı çözen

Takım - Çözümlendi Olarak İşaretle

Geçici dosyalar kaldırılacak ve dosyanız değiştirilmiş olarak işaretlenecektir. 1'de olduğu gibi, değişiklikleri taahhüt etmelisiniz.

Bunun, revizyonu svn deposundaki revizyon geçmişinden kaldırmadığını unutmayın. Kötü revizyondaki değişikliklerin kaldırıldığı yeni bir revizyon yaptınız.


14

Bir seferde 1 dosya yapmak istiyorsanız, Eclipse SVN eklentisinin kurulu olduğunu varsayarak dosyanın Geçmiş görünümüne gidebilirsiniz. "Takım-> Geçmişi Göster"

Geçmiş görünümünde, o dosyanın son iyi sürümünü bulun, sağ tıklayın ve "İçeriği Al" ı seçin. Bu, mevcut sürümünüzü o sürümün içeriğiyle değiştirecektir. Sonra, her şeyi düzelttiğinizde değişiklikleri uygulayabilirsiniz.


6

Subversive kullanarak Eclipse'te:

Projenize sağ tıklayın> Takım> Birleştir

Birleştirme penceresinde, normal olarak geri döndürmek istediğiniz revizyonları seçin, ancak "Ters birleştirme" onay kutusunu da etkinleştirin.

Normal olarak birleştirin.



1

Svnbook, Subversion'ın, sonraki revizyonlarda meydana gelen değişiklikleri etkilemeden değişiklikleri belirli bir revizyondan geri almanıza nasıl izin verdiğiyle ilgili bir bölüme sahiptir:

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

Eclipse'i fazla kullanmıyorum, ancak TortoiseSVN'de bunu günlük diyaloğundan yapabilirsiniz; Geri döndürmek istediğiniz revizyonu sağ tıklayın ve "Bu revizyondaki değişiklikleri geri al" ı seçin.

"Kötü değişiklikleri" geri döndürmek istediğiniz dosyalarda sonraki revizyonlarda "iyi değişiklikler" olması durumunda, süreç aynıdır. "Kötü" revizyondaki değişiklikler, "iyi" revizyonlardan yapılan değişikliklere dokunulmadan geri alınacaktır, ancak çatışmalar yaşayabilirsiniz.


0

Aynı sorunum var ama CleanUp tutulma seçeneği benim için çalışmıyor.

1) TortoiseSVN'yi kurun
2) Windows gezginine gidin ve proje dizininize sağ tıklayın
3 Seçim Temizleme seçeneği (kırılma kilidi seçeneğini işaretleyerek)

Bu çalışıyor.

Umarım bu birine yardımcı olur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.