it-swarm-tr.com

Subversion'da dosyaları nasıl görmezden gelirim?

Subversion'da dosyaları nasıl görmezden gelirim?

Ayrıca, sürüm kontrolü altında olmayan dosyaları nasıl bulabilirim?

589
andyuk

(Bu cevap SVN 1.8 ve 1.9 davranışına uyması için güncellendi)

2 sorunuz var:

Dosyaları yok sayılıyor olarak işaretleme:

"İ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:

1 - Çalışma Zamanı Konfigürasyon Alanı - global-ignores seçeneği:

  • Bu yalnızca client tarafıdır ayarıdır, bu nedenle 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.
  • Bu ayar Çalışma Zamanı Yapılandırma Alanı dosyanızda tanımlanır:
    • Windows (dosya tabanlı) - C:\Users\{you}\AppData\Roaming\Subversion\config
    • Windows (kayıt defteri tabanlı) - hem HKLM hem de HKCU içinde Software\Tigris.org\Subversion\Config\Miscellany\global-ignores.
    • Linux/Unix - ~/.Subversion/config

2 - Dizinlerde ayarlanan svn:ignore özelliği (dosyalar değil):

  • Bu depoda saklanır, böylece diğer kullanıcılar aynı yoksayma dosyalarına sahip olurlar. .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.

    • Bu özellik, her alt dizinde mülkün bir kopyasını yaratacaktır.
    • <filePattern> değeri bir alt dizinde farklıysa, çocuğun değeri ebeveynleri tamamen geçersiz kılar, bu nedenle "ek" bir etki olmaz.
    • Bu nedenle, <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'deki bir dosyayı 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.

3- svn:global-ignores özelliği. SVN 1.8 gerektirir (Haziran 2013):

  • Bu, SVN 1.8'in "miras aldığı özellikler" özelliğini kullanması dışında, 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.
    • Bu, miras alınan yoksay dosya dosyalarının otomatik olarak kalıtsal olarak uygulandığından, 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!
    

TortoiseSVN kullanıcıları için:

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.

Yok sayılan dosyaların listelenmesi:

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!

690
andyuk

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
76
ulitosCoder

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.

47
artur02

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

36
Adrian Enriquez

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

https://github.com/github/gitignore

21
d.danailov

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.

15
Yorick

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' .
10
Kenneth

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:

  1. Durum dosyalarını svn'den alır.
  2. Tüm dosyaları ile kaydeder mi? "svnignore.txt" dosyasına
  3. Zaten yok sayılan dosyaları alır ve onları "svnignore.txt" dosyasına ekler.
  4. Svn'ye "svnignore.txt" içindeki dosyaları yoksaymasını söyler.
  5. Dosyayı kaldırır
8
bkbilly

Ayrıca, Tortoise SVN kullanıyorsanız, şunları yapabilirsiniz:

  1. Bağlam menüsünde "TortoiseSVN" ve ardından "Özellikler" i seçin.
  2. Görünen pencerede "Yeni", ardından "Gelişmiş" i tıklayın.
  3. "Özellik adı" nın karşısındaki pencerede "svn: ignore" ı seçin veya yazın, "Özellik değeri" nin karşısına istediğiniz dosya adını veya klasör adını veya dosya maskesini yazın (benim durumumda "*/target" idi), "Uygula" yı tıklayın özyinelemeli mülkiyet "
  4. Tamam. Tamam.
  5. Işlemek
7
msangel

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:

  1. Durum dosyalarını svn'den alır.
  2. Tüm dosyaları ile kaydeder? "svnignore.txt" dosyasına
  3. Zaten yok sayılan dosyaları alır ve onları "svnignore.txt" dosyasına ekler.
  4. Svn'ye "svnignore.txt" içindeki dosyaları yoksaymasını söyler.
  5. Dosyayı kaldırır
5
LivingDust
  1. cd ~/.Ayırma
  2. config yapılandır
  3. 'global-ignores' gibi satırı bulun
  4. yoksay dosya türünü ayarla: global-ignores = * .o * .lo * .la * .al .libs * .so .so. [0-9] * .pyc * .pyo 88 * .rej ~ # #. # *. *. Swp .DS_Store node_modules çıkışı
4
范陆离

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

3
Slack

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.

3
DGM

SVN'nin yapılandırma dosyasında genel bir yoksayma düzeni de ayarlayabilirsiniz.

3
petr k.

Subversion'a bir dizin ekleme ve dizin içeriğini göz ardı etme

svn propset svn:ignore '\*.*' .

veya

svn propset svn:ignore '*' .
3
Al Conrad

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.

2
  1. jetBrains Ürününü kullanın (ör. Pycharm)
  2. daha sonra üstteki araç çubuğundaki 'kibar' düğmesini tıklayın veya 'ctrl + k' screenshot_toolbar kısayolunu kullanın
  3. taahhüt arayüzünde, istenmeyen dosyalarınızı aşağıdaki gibi başka bir değişiklik listesine taşıyın . screenshot_commit_change
  4. bir dahaki sefere yalnızca varsayılan değişiklik listesini yapabilirsin.
0
G. Googol