Subversion'daki dosyaları nasıl yok sayabilirim?
Ayrıca, sürüm kontrolü altında olmayan dosyaları nasıl bulurum?
Subversion'daki dosyaları nasıl yok sayabilirim?
Ayrıca, sürüm kontrolü altında olmayan dosyaları nasıl bulurum?
Yanıtlar:
(Bu yanıt SVN 1.8 ve 1.9'un davranışına uyacak şekilde güncellendi)
2 sorunuz var:
"Yoksayılan dosya" derken, dosya "sürüm değiştirilmemiş" olarak bile listelerde görünmez: SVN istemciniz dosya dosya sisteminde hiç yokmuş gibi davranacaktır.
Yok sayılan dosyalar bir "dosya deseni" ile belirtilir. Dosya kalıplarının sözdizimi ve biçimi SVN'nin çevrimiçi belgelerinde açıklanmıştır: http://svnbook.red-bean.com/nightly/en/svn.advanced.props.special.ignore.html "Alt sürümdeki Dosya Örnekleri".
Subversion, sürüm 1.8 (Haziran 2013) ve sonrası itibariyle, dosya desenlerini belirtmenin 3 farklı yolunu desteklemektedir. İşte örneklerle bir özet:
global-ignores
seçenek:global-ignores
diğer kullanıcılar tarafından paylaşılmaz ve bilgisayarınıza çıkış yaptığınız tüm depolar için geçerlidir.C:\Users\{you}\AppData\Roaming\Subversion\config
Software\Tigris.org\Subversion\Config\Miscellany\global-ignores
hem de HKLM
ve HKCU
.~/.subversion/config
svn:ignore
Dizinlerde ayarlanan özellik (dosyalar değil):.gitignore
çalıştığına benzer .svn:ignore
dizinlere uygulanır ve özyinelemesiz veya kalıtsaldır. Üst dizinin Dosya Kalıbı ile eşleşen herhangi bir dosya veya hemen alt dizini hariç tutulur.SVN 1.8 "miras alınan mülkler" kavramını eklerken, svn:ignore
mülkün kendisi derhal olmayan alt dizinlerde yok sayılır:
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
(Bu nedenle, ./subdirectory/ignoreThis
" ignoreThis.txt
" .
repo köküne uygulanmış olsa bile dosya yok sayılmaz ).
Bu nedenle, yoksayma listesini tekrar tekrar uygulamak için kullanmalısınız svn propset svn:ignore <filePattern> . --recursive
.
<filePattern>
değer bir çocuğun dizinde farklıdır sonra çocuğun değeri tamamen anne geçersiz kılar böylece hayır "katkı maddesi" etkisi yoktur.<filePattern>
kök .
, o zaman bunu değiştirmeniz gerekir --recursive
çocuk ve torun dizinleri üzerine yazmak.Komut satırı sözdiziminin karşı sezgisel olduğunu unutmayın.
svn ignore pathToFileToIgnore.txt
, ancak SVN'nin yoksayma özelliği bu şekilde çalışmıyor.svn:global-ignores
Mülkiyet. SVN 1.8 (Haziran 2013) gerektirir:svn:ignore
SVN 1.8'in "miras alınan özellikler" özelliğini kullanması dışında buna benzer .svn:ignore
, dosya kalıbı her alt dizine otomatik olarak uygulanır (sadece hemen çocuklar değil).
svn:global-ignores
, --recursive
bayrakla ayarlanmanın gereksiz olduğu anlamına gelir .Önceki örnekteki komut kümesinin aynısını çalıştırma, svn:global-ignores
bunun yerine şunu kullanma:
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 Gezgini menü sisteminde kullanıldığı gibi) başlangıçta bana yanıltıcıydı - Yoksay menüsünün "Yinelemeli ekle", "Ekle *" ve "Ekle" nin ne anlama geldiğinden 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, yok sayılan dosyaları ayarlamak için komut satırını kullanmanızı öneririm, böylece GUI kullanmak yerine nasıl çalıştığına dair bir fikir edinebilirsiniz ve komut satırıyla rahat olduktan sonra özellikleri değiştirmek için yalnızca GUI'yi kullanabilirsiniz.
Komut svn status
, yok sayılan dosyaları (yani, RGA global-ignores
deseniyle eşleşen veya hemen üst yönetici svn:ignore
dizisi deseniyle eşleşen veya herhangi bir ata dizinin svn:global-ignores
deseniyle eşleşen dosyalar) gizler .
--no-ignore
Listelenen dosyaları görmek için seçeneği kullanın . Yok sayılan dosyaların durumu vardır I
, daha sonra çıktıyı grep
yalnızca "I" ile başlayan satırları gösterecek şekilde bağlayın.
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!
svn propedit svn:ignore .
ve herhangi bir metin düzenleyicisi yapılandırılmamışsa, svn: E205007: SVN_EDITOR, VISUAL veya EDITOR ortam değişkenlerinden hiçbiri ayarlanmadı ve 'editor-cmd' çalışma zamanı yapılandırma seçeneği belirlenmediğini belirten bir hata iletisi alırsınız. bir editör açmak yerine bulundu . Dolayısıyla, sadece belirtmek --editor-cmd nano böylesvn propedit svn:ignore . --editor-cmd nano
svn status | grep '^?'
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 yoksaymak istediğiniz dosyaları bırakacak şekilde düzenleyin . Ardından, dosyada listelenen dosyaları yok saymak için bunu kullanın:
svn propset svn:ignore -F ignoring.txt .
Satırın sonundaki noktaya dikkat edin. SVN'ye özelliğin geçerli dizinde ayarlandığını bildirir.
Dosyayı silin:
rm ignoring.txt
Sonunda,
svn ci --message "ignoring some files"
Ardından hangi dosyaların yoksayıldığını şu yollarla kontrol edebilirsiniz:
svn proplist -v
svn status | awk "/^?/ {print \$2}" > ignoring.txt
.
svn pg svn:ignore . >> ignore.txt
Geçerli komutu eklemek için ilk komuttan sonra dosyaya yok sayar.
.Gitignore gibi bir dosyayı veya dizini yok sayabilirsiniz. Yoksaymak istediğiniz dizinlerin / dosyaların listesinden bir metin dosyası oluşturun ve aşağıdaki kodu çalıştırın:
svn propset svn:ignore -F ignorelist.txt .
VEYA bir metin dosyası kullanmak istemiyorsanız, bunu şu şekilde yapabilirsiniz:
svn propset svn:ignore "first
second
third" .
Kaynak: Karsten Blog - svn: set komut satırından birden fazla dosya için yoksay
svn:ignore
komutu yeniden çalıştırmanız gerektiğini unutmayın (bkz. Stackoverflow.com/a/58380306/189518 )
TortoiseSVN kullanıyorsanız , bir dosyaya sağ tıklayın ve ardından yok saymak için TortoiseSVN / Ekle'yi seçin . Bu, dosyayı / joker karakteri svn:ignore
özelliğe ekler .
svn:ignore
dosyaları iade ettiğinizde kontrol edilir ve eşleşen dosyalar yok sayılır. Bir Visual Studio .NET projesi için aşağıdaki yoksay listesi var:
bin obj
*.exe
*.dll
_ReSharper
*.pdb
*.suo
Bu listeyi TortoiseSVN / Properties içindeki bağlam menüsünde bulabilirsiniz .
Kimsenin bahsetmediği gibi ...
svn propedit svn:ignore .
Daha sonra yok sayılacak kalıpları belirtmek, düzenleyiciden çıkmak ve işiniz bittiğinde dosyanın içeriğini düzenleyin.
Java için .svnignore Örneği makalesini buldum .
Ö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 örnekleri. .Svnignore için kullanabilirsiniz
Propedit kullanırken dosyanın yoksay listesinden çıkarılmasına neden olacak herhangi bir boşluk olmadığından emin olun.
Başlamak için dosyayı oluşturmak üzere linux'da tab-autocomplete kullanırsanı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 bunu yapabilirsiniz:
config
dosyadan bahseden tek yanıttır .
Bkbilly'nin cevabının daha okunabilir bir versiyonu :
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 SVN'nin yapılandırma dosyasında genel bir yok sayma kalıbı ayarlayabilirsiniz.
svn status
hangi dosyaların SVN'de olmadığını ve nelerin değiştiğini size söyleyecektir.
Bak SVN özellikleri özelliğini görmezden için.
SVN ile ilgili her şey için Kırmızı Kitabın okunması gerekmektedir.
Alt sürüme bir dizin ekleme ve dizin içeriğini yoksayma
svn propset svn:ignore '\*.*' .
veya
svn propset svn:ignore '*' .
Dosyaların durumunu göstermek için çalışma kopyanızdaki svn durumu komutunu kullanın; henüz sürüm denetimi altında olmayan (ve yoksayılmamış) dosyaların yanında soru işareti olacaktır.
Dosyaları görmezden gelmeyle ilgili olarak, svn: ignore özelliğini düzenlemeniz gerekiyorsa, http://svnbook.red-bean.com/en/1.5/svn.advanced.props.special.ignore adresindeki svnbook'taki Ters Çevrilmemiş Öğeleri Yok Sayma bölümünü okuyun . html . Kitapta ayrıca svn durumunun kullanımı hakkında daha fazla bilgi verilmektedir.
SVN'nin ignore
TortoiseSVN'de yönetimi kolaydır. TortoiseSVN'yi açın ve dosya menüsüne sağ tıklayın, ardından yoksayılanlar listesine ekle'yi seçin.
Bu, svn:ignore
özellikteki dosyaları ekleyecektir . Dosyaları kontrol ettiğimizde, onunla eşleşen dosya svn:ignore
göz ardı edilir ve işlemez.
Visual Studio projesinde yoksaymak için aşağıdaki dosyaları ekledik:
bin obj
*.exe
*.dll
*.pdb
*.suo
Comparetrap'ın SVN'sindeki kaynak kodunu bu yöntemi başarıyla kullanarak yönetiyoruz
Benim için ne işe yaradı:
Subversion'daki dosyaları nasıl yok sayabilirim?
1. Dosya Gezgini'nde, SVN projesi klasör adını sağ
tıklayın 2. "SVN
İşlemi ..." seçeneğini tıklayın.
3. "Bir" kesinleştirme "penceresi görünecektir.
Yoksayılanlar listesine
ekle'yi tıklayın 6.Klasörü
/ dosyayı seçin 7. "Özellik değişikliğini" SVN'ye gönderin
Ayrıca, sürüm kontrolü altında olmayan dosyaları nasıl bulurum?
Yukarıdaki 3. Adımdan sonra, "Sürüm bilgisi olmayan dosyaları göster" i tıklayın