Subversion'da dosyaları nasıl görmezden gelirim?
Ayrıca, sürüm kontrolü altında olmayan dosyaları nasıl bulabilirim?
(Bu cevap SVN 1.8 ve 1.9 davranışına uyması için güncellendi)
2 sorunuz var:
"İhmal edilen dosya" derken, "listelenmemiş" olarak bile dosyanın listelerde görünmeyeceğini kastediyorum: SVN istemciniz dosyanın hiç dosya sisteminde bulunmadığını iddia edecektir.
Yok sayılan dosyalar bir "dosya deseni" ile belirtilir. Dosya kalıplarının sözdizimi ve formatı SVN'nin çevrimiçi dokümantasyonunda açıklanmıştır: http://svnbook.red-bean.com/nightly/tr/svn.advanced.props.special.ignore.html "Subversion'da Dosya Desenleri ".
Subversion, 1.8 sürümünden (Haziran 2013) ve sonrasında, dosya desenlerini belirtmenin 3 farklı yolunu destekler. İşte örneklerin bir özeti:
global-ignores
seçeneği:global-ignores
listeniz diğer kullanıcılar tarafından paylaşılmayacaktır ve bilgisayarınıza yaptığınız tüm repolar için geçerlidir.C:\Users\{you}\AppData\Roaming\Subversion\config
HKLM
hem de HKCU
içinde Software\Tigris.org\Subversion\Config\Miscellany\global-ignores
.~/.Subversion/config
svn:ignore
özelliği (dosyalar değil):.gitignore
işlevinin nasıl çalıştığına benzer.svn:ignore
, dizinlere uygulanır ve özyinelemeli veya kalıtsal değildir. Dosya Deseni ile eşleşen ana dizinin herhangi bir dosyası veya hemen alt dizini hariç tutulur.SVN 1.8, "miras alınan özellikler" kavramını eklerken, svn:ignore
özelliğinin, acil olmayan alt dizinlerde dikkate alınmaz:
cd ~/myRepoRoot # Open an existing repo.
echo "foo" > "ignoreThis.txt" # Create a file called "ignoreThis.txt".
svn status # Check to see if the file is ignored or not.
> ? ./ignoreThis.txt
> 1 unversioned file # ...it is NOT currently ignored.
svn propset svn:ignore "ignoreThis.txt" . # Apply the svn:ignore property to the "myRepoRoot" directory.
svn status
> 0 unversioned files # ...but now the file is ignored!
cd subdirectory # now open a subdirectory.
echo "foo" > "ignoreThis.txt" # create another file named "ignoreThis.txt".
svn status
> ? ./subdirectory/ignoreThis.txt # ...and is is NOT ignored!
> 1 unversioned file
(Yani ./subdirectory/ignoreThis
dosyası, ignoreThis.txt
repo kökünde ".
" uygulanmasına rağmen yok sayılmaz).
Bu nedenle, bir yoksayma listesini tekrar tekrar uygulamak için svn propset svn:ignore <filePattern> . --recursive
öğesini kullanmanız gerekir.
<filePattern>
değeri bir alt dizinde farklıysa, çocuğun değeri ebeveynleri tamamen geçersiz kılar, bu nedenle "ek" bir etki olmaz.<filePattern>
kökünde .
öğesini değiştirirseniz, alt ve alt dizinlerin üzerine yazmak için --recursive
ile değiştirmelisiniz.Komut satırı sözdiziminin karşı sezgisel olduğunu unutmayın.
svn ignore pathToFileToIgnore.txt
gibi bir şey yazarak yoksaymaya başladığınızı düşünerek başladım, ancak bu SVN'nin yoksayma özelliğinin çalışma şekli değil.svn:global-ignores
özelliği. SVN 1.8 gerektirir (Haziran 2013):svn:ignore
işlevine benzer.svn:ignore
ile karşılaştırıldığında, dosya deseni otomatik olarak her alt dizinde (sadece acil çocuklar değil) ..__ uygulanır.svn:global-ignores
__ --recursive
bayrağıyla ayarlamanın gereksiz olduğu anlamına gelir.Önceki örnekteki gibi aynı komut dizisini çalıştırıyor, ancak bunun yerine svn:global-ignores
kullanıyorsunuz:
cd ~/myRepoRoot # Open an existing repo
echo "foo" > "ignoreThis.txt" # Create a file called "ignoreThis.txt"
svn status # Check to see if the file is ignored or not
> ? ./ignoreThis.txt
> 1 unversioned file # ...it is NOT currently ignored
svn propset svn:global-ignores "ignoreThis.txt" .
svn status
> 0 unversioned files # ...but now the file is ignored!
cd subdirectory # now open a subdirectory
echo "foo" > "ignoreThis.txt" # create another file named "ignoreThis.txt"
svn status
> 0 unversioned files # the file is ignored here too!
Tüm bu düzenleme benim için kafa karıştırıcıydı, çünkü TortoiseSVN'nin terminolojisi (Windows Explorer menü sistemlerinde kullanıldığı gibi) başlangıçta bana yanıltıcı oldu - Yoksay menüsünün "Özyinelemeli ekle", "Ekle *" ve "Ekle" nin ne kadar önemli olduğundan emin değildim. seçenekler. Umarım bu yazı, Yoksay özelliğinin SVN Özellikleri özelliğine nasıl bağlandığını açıklar. Bununla birlikte, görmezden gelen dosyaları ayarlamak için komut satırını kullanmanızı öneririm, böylece GUI kullanmak yerine nasıl çalıştığı hakkında bir fikir edinebilirsiniz ve yalnızca komut satırından memnun kaldıktan sonra özellikleri değiştirmek için GUI'yi kullanabilirsiniz.
svn status
komutu, yok sayılan dosyaları gizler (yani, bir RGA global-ignores
modeliyle eşleşen dosyalar veya bir üst ana direktörün svn:ignore
modeliyle eşleşen veya herhangi bir ata direktörünün svn:global-ignores
modeliyle eşleşen dosyalar.
Listelenen dosyaları görmek için --no-ignore
seçeneğini kullanın. Yok sayılan dosyalar I
statüsüne sahiptir, ardından çıktıyı yalnızca "I" ile başlayan satırları göstermek için grep
'e yönlendirin.
Komut:
svn status --no-ignore | grep "^I"
Örneğin:
svn status
> ? foo # An unversioned file
> M modifiedFile.txt # A versioned file that has been modified
svn status --no-ignore
> ? foo # An unversioned file
> I ignoreThis.txt # A file matching an svn:ignore pattern
> M modifiedFile.txt # A versioned file that has been modified
svn status --no-ignore | grep "^I"
> I ignoreThis.txt # A file matching an svn:ignore pattern
ta-da!
Sürüm kontrol dosyaları altında olmayan bir liste oluşturmak için aşağıdaki komutu kullanın.
svn status | grep "^\?" | awk "{print \$2}" > ignoring.txt
Ardından dosyayı yalnızca gerçekten yoksaymak istediğiniz dosyaları olarak bırakın. Ardından, dosyada listelenen dosyaları yoksaymak için bunu kullanın:
svn propset svn:ignore -F ignoring.txt .
Çizginin sonundaki noktayı not edin. SVN'ye, özelliğin geçerli dizinde ayarlandığını söyler.
Dosyayı sil:
rm ignoring.txt
Sonunda,
svn ci --message "ignoring some files"
Daha sonra hangi dosyaların göz ardı edildiğini kontrol edebilirsiniz:
svn proplist -v
TortoiseSVN kullanıyorsanız, bir dosyayı sağ tıklayın ve ardından TortoiseSVN/yoksay listeye ekle} _ seçeneğini seçin. Bu dosya/joker karakter svn:ignore
özelliğine ekler.
Dosyaları kontrol ederken svn:ignore
kontrol edilir ve eşleşen dosyalar yoksayılır. Bir Visual Studio .NET projesi için aşağıdaki yoksayma listesi var:
bin obj
*.exe
*.dll
_ReSharper
*.pdb
*.suo
Bu listeyi TortoiseSVN/Properties adresindeki içerik menüsünde bulabilirsiniz.
Bir dosya veya dizini .gitignore gibi göz ardı edebilirsiniz. Yoksaymak istediğiniz dizinlerin/dosyaların bir listesini yapın ve aşağıdaki kodu çalıştırın:
svn propset svn:ignore -F ignorelist.txt .
VEYA bir metin dosyası kullanmak istemiyorsanız, bu şekilde yapabilirsiniz:
svn propset svn:ignore "first
second
third" .
Kaynak: Karsten'in Blogu - Set svn: komut satırından birden fazla dosya için yoksay
Java için .svnignore Örneği bulundu.
Örnek: Ruby on Rails için .svnignore,
/log
/public/*.JPEG
/public/*.jpeg
/public/*.png
/public/*.gif
*.*~
Ve ondan sonra:
svn propset svn:ignore -F .svnignore .
.Gitignore için örnekler. .Svnignore için kullanabilirsiniz
Kimsenin bahsetmediği gibi ...
svn propedit svn:ignore .
Ardından, yoksayılacak desenleri belirtmek için dosyanın içeriğini düzenleyin, düzenleyiciden çıkın.
Propedit kullanırken, dosyanın yoksayılmayacak listeden çıkarılmasına neden olacak sonda boşluk olmadığından emin olun.
Başlangıçta dosyayı oluşturmak için linux'ta tab-autocomplete kullanıyorsanız bunlar otomatik olarak eklenir:
svn propset svn:ignore 'file1
file2' .
Başka bir çözüm:
svn st | awk '/^?/{print $2}' > svnignore.txt && svn propget svn:ignore >> svnignore.txt && svn propset svn:ignore -F svnignore.txt . && rm svnignore.txt
veya satır satır
svn st | awk '/^?/{print $2}' > svnignore.txt
svn propget svn:ignore >> svnignore.txt
svn propset svn:ignore -F svnignore.txt .
rm svnignore.txt
Bu ne yapar:
Ayrıca, Tortoise SVN kullanıyorsanız, şunları yapabilirsiniz:
bkbilly'nin yanıtının daha okunaklı bir sürümü:
svn st | awk '/^?/{print $2}' > svnignore.txt
svn propget svn:ignore >> svnignore.txt
svn propset svn:ignore -F svnignore.txt .
rm svnignore.txt
Bu ne yapar:
SVN ignore
TortoiseSVN içinde yönetimi kolaydır. TortoiseSVN'yi açın ve dosya menüsünü sağ tıklayın ve ardından yoksaymak için Ekle'yi seçin.
Bu, svn:ignore
özelliğine dosyaları ekler . Dosyaları kontrol ederken, svn:ignore
ile eşleşen dosyalar yoksayılır ve işlemezler.
Visual Studio projesinde, yoksaymak için aşağıdaki dosyaları ekledik:
bin obj
*.exe
*.dll
*.pdb
*.suo
Bu yöntemi başarıyla kullanarak Comparetrap SVN kaynak kodunu yönetiyoruz
svn status
size hangi dosyaların SVN'de olmadığını ve nelerin değiştiğini söyleyecektir.
İgnore özelliği için SVN özelliklerine bakın.
Her şey için SVN, Kırmızı Kitap gereklidir.
SVN'nin yapılandırma dosyasında genel bir yoksayma düzeni de ayarlayabilirsiniz.
Subversion'a bir dizin ekleme ve dizin içeriğini göz ardı etme
svn propset svn:ignore '\*.*' .
veya
svn propset svn:ignore '*' .
Dosyaların durumunu göstermek için çalışma kopyanızda svn status komutunu kullanın, henüz sürüm kontrolü altında olmayan (ve yoksayılmayan) dosyaların yanında bir soru işareti bulunur.
Dosyaları görmezden gelmek için svn: ignore özelliğini düzenlemelisiniz, http://svnbook.red-bean.com/en/1.5/svn.advanced.props.special. ignore.html . Kitapta ayrıca svn durumunu kullanma hakkında daha fazla bilgi açıklanmaktadır.