Bir dosyayı silmeden sürüm kontrolünden nasıl kaldırırım?


Yanıtlar:


277

--keep-localKomut satırı seçeneğini istiyorsunuz . Bu, dosyayı dosya sisteminizden kaldırmadan sürüm kontrolünden kaldırır.

$ svn rm --keep-local my_important_file

Not:--keep-local Yalnızca etkiler svn rmKopyanızın. Yaptıkları değişiklikler nedeniyle yerel kopyaları ile arşiv arasında bir çelişki olmadığı sürece, diğer kullanıcılar dosyanın kendi yerel kopyasını silebilirler. Bu istenen sonuç olmayabilir. Aşağıdaki yorumlara bakın.


4
Bu, güncelledikten sonra diğer kişilerin sistemlerinden yine de silinmez mi?
Nyerguds

1
@Nyerguds Bu doğru, çünkü svn rm, dosyaları depodan kaldırıyor. Dosyaları depodan kaldırmak istemeniz durumunda, ANCAK onları makinenizde yerel olarak saklayın, ardından yukarıdaki bayrağı kullanırsınız.
Greg Hilston

6
@GregHilston Dediğim gibi, bu gerçek çoklu programcı projelerine gerçekten yardımcı olmuyor. Dosyayı her yerde geri almanın bir yolu olmalı. Buradaki en yaygın durum, yanlışlıkla kaydedilen yerel ayarlar dosyalarıdır (Java projelerinde çok yaygındır), ancak bunların sürümünün geri alınması diğer kullanıcıların ayar dosyalarını silmemelidir.
Nyerguds

5
@GregHilston "gerçek çoklu programcı projeleri" daha çok "diğer insanların sistemlerinde" ima edildi. Sorun şudur: diğer insanlar güncelleme yapar ve ayarlarının üzerine yazılır. Bu genellikle çok sorunlu değildir, ancak çözmek isteyecek kadar can sıkıcıdır. Ancak bu noktada, ayarların üzerine zaten yazdıklarında ve şimdi güncelleme sırasında bir svn "rm" aldıklarında, gerçekte potansiyel olarak hayati önem taşıyan yerel ayarlar dosyasını sistemlerinden kaldırır , bununla birlikte yalnızca dönüştürülmemiş olması gerekir, böylece yerel olarak yapılandırılabilir ayarları tekrar.
Nyerguds

4
Depodan daha eski bir dosyanın yeniden yüklenmesi, dosyanın o eski sürümden olduğunu işaretler, bu da bir güncellemenin onu tekrar sileceği anlamına gelir. Projedeki tüm makinelerde manuel müdahale gerektirmeyen bunu yapmanın temiz bir yolu yoktur.
Nyerguds

13

Bir dosyayı yerel olarak silmeden SVN'den kaldırmak hiçbir yerde yaygın bir sorun değildir. Göze çarpan bir örnek, Eclipse projesindeki .classpath dosyasıdır. Projede kullanılan tüm makineler aynı Eclipse ve Java kurulumuna sahip olduğu sürece bu yapılandırma dosyasını SVN altına koymak harikadır. Bu koşul ihlal edildiğinde taahhütler diğer Eclipse projelerini bozmaya başlar. Bu, herhangi bir yerden silmeden bir dosyayı SVN'den kaldırmak zorunda olduğumuz noktadır.

svn rm --keep-local .classpath

işi tek bir makinede ve o anda mükemmel bir şekilde yapıyor.

Sorun şu ki, diğer makineler bu dosyayı kaybedebilir (güncelleme sırasında) veya yeniden düzeltebilir (işleme sırasında). SVN'nin kusuru, ne arşivde işlemek --keep-localne de onu diğer çalışan kopyalara yaymaktır. Bu nedenle, yukarıdaki tüm diğer makinelerde, en iyisi herhangi bir işlemden veya güncellemeden önce çalıştırılmalıdır.

Bu elbette en iyi ihtimalle% 90 işe yarayacaktır. Silme ve yeniden versiyonlamalar aniden gerçekleşecektir. Benim çözümüm, doğrudan veya dolaylı erişime sahip olduğum her makineye sahip olmak,

svn rm --keep-local .classpath
copy .classpath .classpath-nameOfTheMachine
svn add .classpath-nameOfTheMachine

Bu, "çözüm" olarak adlandırılamayacak kadar çirkin. Bununla birlikte, her zaman daha sonraki kazaların hızlı onarımına izin verdi.


-3

Bu kesin soruya bir cevabım yok, ancak ilgili bir soruya cevabım var, bir dizindeki tüm dosyaları (yani belirli bir dosyayı değil) yerel olarak silmeden sürüm kontrolünden nasıl kaldıracağım. Bu çözüm, Scientific Linux uygulamasından gelmektedir.

ls -a .svn

kontrol verilerini depolayan svn dizinini göstermelidir. basitçe:

rm -r .svn

bu dizinden kurtulacak. Sonra yazarak:

svn status

artık sürüm kontrolü altında olmadığı için bir 'uyarı: bu dizin çalışan bir kopya değil' hatası üretecektir.

Umarım bu yardımcı olur.


İlgili bir soru? Bir dosyayı kaldırmak ve tüm çalışma kopyasını kaldırmak, IMHO tamamen farklı şeylerdir.
Melebius
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.