Öğeyi Revizyona Güncelleme ve Revizyona Geri Dön


161

Subversion'ı TortoiseSVN ile kullanmaya başladım. Günlüğü açar ve eski bir düzeltmeyi sağ tıklatırsam, eski bir sürüme dönüyormuş gibi görünen iki seçenek görürüm: "Öğeyi düzeltmeye güncelle" ve "Bu düzeltmeye geri dön".

Eski bir sürüme güncellemenin yalnızca eski bir sürüme bakmak istediğinizde, ancak depoyu gerçekten değiştirmediğinizde kullanıldığını anlıyorum. Geri döndürmek, gerçekten yorulduğunuzda ve depodaki en son revizyonun daha eski bir sürümle aynı olmasını istediğiniz zamandır.

Diyelim ki HEAD revizyonu 100 ve 95'e geri dönüyorum. Çalışma kopyamı 95'e geri birleştireceğim. 101'deki revizyonu doğru yaratacak olan depodaki bu değişikliği yapabilir miyim? 95 numaralı düzeltmeye geri dönecek olsaydım bunun farkı nedir? Hala son revizyonlardaki değişiklikleri tersine çevirmiyor mu? Eski bir revizyona Geri Dönüldükten veya Güncelleştirildikten sonra çalışan kopyamın durumunun nasıl değiştiği konusunda kafam karıştı.

Yanıtlar:


205

Revizyon güncellemesi sadece çalışma kopyanızın dosyalarını seçilen revizyonunuza güncelleyecektir. Ancak SVN, çalışma kopyanızın güncel olmadığından şikayet edeceği için bu düzeltme üzerinde çalışmaya devam edemezsiniz .

bu düzeltmeye geri dönmek , çalışma kopyanızda seçilen revizyondan sonra yapılan tüm değişiklikleri geri alır (örneğin rev. 96,97,98,99,100) Çalışma kopyanız şimdi değiştirilmiş durumda .

Her iki senaryonun dosya içeriği aynıdır, ancak ilk durumda değiştirilmemiş bir çalışma kopyanız vardır ve değişikliklerinizi ( çalışma kopyanız HEAD rev 100'e işaret etmediği için) gerçekleştiremezsiniz, ikinci durumda kafaya işaret eden bir değiştirilmiş çalışma kopyanız varsa ve çalışmaya ve taahhüt etmeye devam edebilirsin


1
Tamam, bu yüzden düzeltmeyi güncellediğimi ve çalışan kopyamın veri kalmadığını söyleyin. Hiçbir şey dosyaları değiştirmemi engellemiyor. Dosyalardan birini değiştirip işlemeye çalışırsam ne olur? Sanırım yıkım çatışmayı görecek ve göndermeden önce depodaki en son sürümü değiştirilmiş çalışma kopyama birleştirmeye zorlayacak.
Eric Anastas

5
HEAD'den daha eski BASE-Revizyonu olan bir öğeyi taahhüt etmeye çalışırsanız, "taahhüt başarısız oldu: çalışma kopyanız muhtemelen güncel değil"
Peter Parker

yerel değişiklikler nasıl yapılır update tove revert to/fromtedavi edilir (taahhüt edilmemiş değişiklikler)?
BaltoStar

Her iki yöntem de yerel değişiklikleri sağlam tutar, ancak yerel değişiklikler her iki durumda da çakışmalara neden olabilir ve geri alma durumunda yapılan değişiklikler diğer tüm kullanıcıların yerel değişiklikleriyle karıştırılır. En azından değişikliklerinizin bir yamasını kaydedin veya bir şubeye taahhüt edin.
Peter Parker

31

Her iki senaryoda da çalışma kopyanızın durumunun nasıl farklı olduğunu anlamak için BASE revizyonunun kavramını anlamalısınız :

BAZ

Çalışan bir kopyadaki bir öğenin düzeltme numarası. Öğe yerel olarak değiştirildiyse, bu öğenin bu yerel değişiklikler olmadan görünme biçimini ifade eder.

Çalışma kopyanız, bu BASE revizyonundaki her bir dosyanın (.svn klasöründe gizlenmiş) bir anlık görüntüsünü içerir; yani depodan son alındığı zamanki gibi . Bu, çalışan kopyaların neden 2 kat daha fazla yer kapladığını ve bir ağ bağlantısı olmadan yerel değişiklikleri nasıl inceleyip geri alabileceğinizi açıklar.

Öğeyi Revizyona güncelle, bu temel revizyonu değiştirerek BASE'i eski yapar. Yerel değişiklikler yapmaya çalıştığınızda SVN, BASE'inizin depo KAFASINA eşleşmediğini fark edecektir. Bunu düzeltmek için bir güncelleme (ve muhtemelen bir birleştirme) yapana kadar taahhüt reddedilir.

Revizyona geri dönme BASE'i değiştirmez. Kavramsal olarak, dosyayı daha önceki bir düzeltmeye uyacak şekilde manuel olarak düzenlemekle neredeyse aynıdır.


Kabul edilen cevaptan "Her iki senaryonun dosya içeriği aynıdır". Ne gereği var? Bu yanıt nihai farkı açıklar ve "güncelle" vs-a-vis "geri" nin işlemeye çalışırken neden farklı davranışlara neden olduğunu açıklar.
radarbob

yerel değişiklikler nasıl yapılır update tove revert to/fromtedavi edilir (taahhüt edilmemiş değişiklikler)?
BaltoStar

5

Çalışma kopyanızdaki dosyalar sonradan tamamen aynı görünebilir , ancak yine de çok farklı eylemlerdir - depo tamamen farklı bir durumdadır ve eski bir revizyona "güncellemekten" sonra geri döndüğünüzde kullanabileceğiniz farklı seçenekleriniz olacaktır .

Kısaca, "güncelleme" yalnızca çalışma kopyanızı etkiler, ancak "ters birleştirme ve taahhüt" havuzu da etkiler.

Eski bir revizyona "güncelleme" yaparsanız, depo değişmemiştir: örneğin, HEAD revizyonu hala 100'dür. Sadece çalışma kopyanızla uğraştığınız için hiçbir şey yapmanız gerekmez. Çalışma kopyanızda değişiklik yaparsanız ve taahhütte bulunmaya çalışırsanız, çalışma kopyanızın güncel olmadığı bildirilir ve taahhütte bulunmadan önce güncellemeniz gerekir. Aynı depoda çalışan başka biri "güncelleme" yaparsa veya ikinci bir çalışma kopyasına bakarsanız, r100 olur.

Ancak, eski bir revizyona "ters birleştirme" yaparsanız, çalışma kopyanız hala HEAD'a dayanır (güncel olduğunuzu varsayarak) - ancak istenmeyen değişikliklerin yerini almak için yeni bir revizyon oluşturuyorsunuz. Depoyu değiştirdiğiniz için bu değişiklikleri yapmanız gerekir. Tamamlandığında, HEAD tabanlı tüm güncellemeler veya yeni çalışan kopyalar az önce taahhüt ettiğiniz içeriklerle birlikte r101'i gösterecektir.


5

Çalışma kopyanızı seçilen revizyona güncelleyin. Çalışan kopyanızın geçmişte bir zamanı yansıtmasını istiyorsanız veya depoda başka taahhütler varsa ve çalışan kopyanızı her seferinde bir adım güncellemek istiyorsanız kullanışlıdır. Sadece bir dosya değil, çalışma kopyanızdaki bir dizini güncellemek en iyisidir, aksi takdirde çalışma kopyanız tutarsız olabilir. Bu, belirli bir devir amacını test etmek için kullanılır, eğer testiniz yapıldıysa, başka bir devri test etmek için bu komutu kullanabilir veya KAFA almak için SVN Güncellemesi'ni kullanabilirsiniz.

Daha önceki bir değişikliği kalıcı olarak geri almak istiyorsanız, bunun yerine Bu düzeltmeye geri dön seçeneğini kullanın.

- TSVN yardım doktorundan

Çalışma kopyanızı daha önceki bir sürüme güncellerseniz, bu yalnızca kendi çalışma kopyanızı etkiler, bazı değişiklikler yaptıktan ve taahhüt etmek istiyorsanız, başarısız olacaksınız, TSVN, WC'nizi en son revizyona güncellemeniz için sizi uyaracaktır. bir rev için depolamayı taahhüt edebilirsiniz. herkes güncelleme yaptıktan sonra rev'e geri dönecektir.


2

Kaplumbağa referansındaki metin:

Öğeyi revizyona güncelle Çalışma kopyanızı seçilen revizyona güncelleyin. Çalışan kopyanızın geçmişte bir zamanı yansıtmasını istiyorsanız veya depoda başka taahhütler varsa ve çalışan kopyanızı her seferinde bir adım güncellemek istiyorsanız kullanışlıdır. Sadece bir dosya değil, çalışma kopyanızdaki bir dizini güncellemek en iyisidir, aksi takdirde çalışma kopyanız tutarsız olabilir.

Daha önceki bir değişikliği kalıcı olarak geri almak istiyorsanız, bunun yerine Bu düzeltmeye geri dön seçeneğini kullanın.

Bu düzeltmeye geri dön Önceki bir düzeltmeye geri dönün. Birkaç değişiklik yaptıysanız ve daha sonra N revizyonundaki şeylere gerçekten geri dönmek istediğinize karar verirseniz, ihtiyacınız olan komut budur. Değişiklikler çalışma kopyanızda geri alınır, bu nedenle bu işlem siz değişiklikleri gerçekleştirene kadar depoyu etkilemez. Bunun, dosya / klasörü önceki sürümle değiştirerek, seçilen revizyondan sonra yapılan tüm değişiklikleri geri alacağını unutmayın.

Çalışan kopyanız değiştirilmemiş durumdaysa, bu eylemi gerçekleştirdikten sonra çalışma kopyanız değiştirilmiş olarak gösterilir. Zaten yerel değişiklikleriniz varsa, bu komut geri alma değişikliklerini çalışma kopyanızla birleştirir.

Dahili olarak gerçekleşen şey, Subversion'un seçilen revizyondan sonra yapılan tüm değişikliklerin ters bir birleşimini gerçekleştirmesi ve önceki taahhütlerin etkisini geri almasıdır.

Bu eylemi gerçekleştirdikten sonra geri almayı geri almaya ve çalışma kopyanızı önceki değiştirilmemiş durumuna geri döndürmeye karar verirseniz, bu ters birleştirme eylemiyle yapılan yerel değişiklikleri atacak olan TortoiseSVN → Geri Al'ı Windows Gezgini'nden kullanmalısınız.

Daha önceki bir revizyonda bir dosya veya klasörün nasıl göründüğünü görmek istiyorsanız, revizyon için Güncelle'yi veya Revizyonu farklı kaydet ... seçeneğini kullanın.


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.