Bir SVN çalışma dizinim var. Bu dizinde bazı değişiklikler yaptım ve içinde görünüyor svn status
. Ama oradaki tüm değişiklikleri kaldırmamın ve komut satırını kullanarak her şeyi bagajdan almamın bir yolu var mı?
Bir SVN çalışma dizinim var. Bu dizinde bazı değişiklikler yaptım ve içinde görünüyor svn status
. Ama oradaki tüm değişiklikleri kaldırmamın ve komut satırını kullanarak her şeyi bagajdan almamın bir yolu var mı?
Yanıtlar:
svn revert -R .
svn up
Bu, geçerli dizini ve altındaki her şeyi tekrar tekrar geri döndürecek ve daha sonra en son sürüme güncelleyecektir.
Bu çözümü bulmak için diğer insanların cevaplarının bir kombinasyonunu kullandım:
svn revert -R .
svn status --no-ignore | grep -E '(^\?)|(^\I)' | sed -e 's/^. *//' | sed -e 's/\(.*\)/"\1"/' | xargs rm -rf
svn update --force
svn revert -R .
svn cleanup . --remove-unversioned
svn cleanup . --remove-ignored
Değişikliğiniz yoksa, her zaman gerçekten kapsamlı ve / veya tembel olabilir ve yapabilirsiniz ...
rm -rf *
svn update
Ama, hayır, gerçekten yok değil sen olmadıkça bunu gerçekten emin nükleer-den-uzay seçenektir İstediğin bu !! Bu, SVN'nin göz ardı ettiği tüm ham yapı, geçici dosyalar ve şeyleri nükleme avantajına sahiptir.
Daha doğru çözüm revert komutunu kullanmaktır:
svn revert -R .
-R, yıkımın tekrarlanmasına neden olur ve geçerli çalışma dizinindeki ve altındaki her şeyi geri alır.
svn nuke-from-space
Buradaki cevapların hiçbiri istediğim gibi değildi. İşte ben geldim:
# Recursively revert any locally-changed files
svn revert -R .
# Delete any other files in the sandbox (including ignored files),
# being careful to handle files with spaces in the name
svn status --no-ignore | grep '^\?' | \
perl -ne 'print "$1\n" if $_ =~ /^\S+\s+(.*)$/' | \
tr '\n' '\0' | xargs -0 rm -rf
Linux'ta test edilmiştir; Cygwin'de çalışabilir, ancak '\0'
boşlukların yerine xargs'ın bölünmesine izin veren GNU'ya özgü bir uzantıya güvenirim (inanıyorum) .
Yukarıdaki komutun avantajı, korumalı alanı sıfırlamak için herhangi bir ağ etkinliği gerektirmemesidir. Daha önce sahip olduklarınızı tam olarak elde edersiniz ve tüm değişikliklerinizi kaybedersiniz . (birisi beni işini yok eden bu kod için suçlamadan önce feragat) ;-)
Bu komut dosyasını, bazı testleri çalıştırdıktan sonra temiz bir derlemenin gerçekleştirildiğinden emin olmak istediğim sürekli bir entegrasyon sisteminde kullanıyorum.
Düzenleme : Bunun Subversion'ın tüm sürümleriyle çalıştığından emin değilim. svn status
Komutun her zaman tutarlı bir şekilde biçimlendirilip biçimlendirilmediği açık değildir . Böyle bir battaniye rm
komutu kullanan herhangi bir komutta olduğu gibi, kendi sorumluluğunuzda kullanın.
Windows'daysanız, döngü için aşağıdakiler çalışma alanınızda yapılan tüm taahhüt edilmeyen değişiklikleri geri alacaktır:
for /F "tokens=1,*" %%d in ('svn st') do (
svn revert "%%e"
)
Taahhüt edilmemiş tüm değişiklikleri ve tüm sürümlendirilmemiş nesneleri kaldırmak istiyorsanız, 2 döngü gerekir:
for /F "tokens=1,*" %%d in ('svn st') do (
svn revert "%%e"
)
for /F "tokens=1,*" %%d in ('svn st') do (
svn rm --force "%%e"
)