2010-06-21 22 views
25

Birkaç yeni düzeltmeyi birleştirme işlemini tersine çevirmeye çalıştığım bir svn çalışma kopyası var. Fikrimi değiştirdiğimden önce birleşmeyi iptal ettim. Şimdi çalışma kopyasında dosyaların çoğunda atalara ilişkin özelliklerden güncellemelerden birkaç bin "değişiklik" var. Elimden ayrılmak istemediğim gerçek kod değişiklikleri ile yaklaşık 10 dosyam var.Svn tüm özellikleri değişiklikleri geri alma

Tüm özellik değişikliklerini içerik değişikliklerini etkilemeden geri döndürmenin bir yolu var mı?

cevap

9

Bu Tortoise SVN'nin bunu gerçekten iyi yapabileceğini ortaya çıkarır. Ekleme iletişim kutusunda "değiştirilmiş" dosyaları "metin durumu" veya "özellikler durumu" ile sıralayabilirsiniz. Sadece metin durumuna göre sıralıyorum ve daha sonra "normal" "metin durumu" olan tüm "değiştirilmiş" dosyaları geri aldım.

+0

Bu da geri dönüş için çalışıyor (ve başka bir Tortoise komutu hayal ediyorum). Bahşiş için teşekkürler! – sam

-3

Sadece 10 dosyayı gerçek kod değişikliğiyle başka bir yere kopyalayıp/yedekleyebilirim ve tüm projeyi sadece svn revert -R, daha sonra 10 dosyayı kopyalayın.

+2

100'den fazla dosya nedir? – Vanuan

16

'--depth boş' seçeneğini kullanırsanız, değişiklikleri yalnızca komut satırında açıkça belirtilmiş olan yollara döndürürsünüz. Böylece, özellik değişikliklerine sahip olan tüm dizinleri belirtirseniz, ancak içeriğiniz sizi değiştiren dosyaların hiçbirini belirtmezseniz tutmak istiyorum.

örn. Eğer istenmeyen özellikteki değişikliklerle 'foo', ancak 'foo' içindeki 'bar' dizinine sahipseniz, aşağıdakiler 'bar' modunu korumalı, ancak 'foo' üzerindeki özellik değişikliklerini geri almalıdır.

$svn revert --depth empty foo 
30
svn revert `svn status | grep '^ M' | sed 's/^ M \+//g'` 
+1

Bu benim için çalıştı, her ne kadar ben 'svn' –

+1

ile st çağrı öneki hattı düzenlemek zorunda kaldım Teşekkür ederim Chris, benim bash takma adı değiştirmeyi unuttum :) –

+2

'M' yerine '^ M' kullanmalısınız. Ayrıca, ilgili metin değişiklikleri ile 'MM' gibi dosyalar ancak propertie'nin atılmasıyla ilgili değişiklikler nelerdir? – calandoa

0
Sen değişiklikleri göndermek ve daha sonra bu revizyon mülk değişikliği geri alabilirsiniz

:

svn birleştirme -c -REV -depth boş

REV geri almak istiyor revizyon olduğunu

özellik değişiklikleri

0

Özellik değişikliklerini PowerShell'e geri döndürün.

> @(svn status) -match '^ M' | ` 
>>> % { ($_ -split 'M\s+')[1] } | ` 
>>> % { svn revert --depth empty $_ } 

Kredi genel yaklaşım için TheJuice Jerome Jaglale ve .

Backtick'e dikkat edin ` sembolü yeni bir satıra işaret eder.

İlgili konular