Çalıştırırsam svn rm file
, dosya yerel çalışma kopyasından kaldırılır.
Şimdi yaptığım şey:
$ cp file file2
$ svn rm file
$ svn ci
$ mv file2 file
Svn'nin kullanırken yerel dosyayı da silmesini nasıl önleyebilirim svn rm
?
Çalıştırırsam svn rm file
, dosya yerel çalışma kopyasından kaldırılır.
Şimdi yaptığım şey:
$ cp file file2
$ svn rm file
$ svn ci
$ mv file2 file
Svn'nin kullanırken yerel dosyayı da silmesini nasıl önleyebilirim svn rm
?
Yanıtlar:
--keep-local
Komut 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 rm
Kopyanı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.
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-local
ne 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.
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.