SVN kullanmaya yeni başladım ve kaynak kontrolü altında ihtiyacım olmayan bir önbellek dizinim var. SVN ile tüm dizini / klasörü nasıl yoksayabilirim?
SVN kullanmaya yeni başladım ve kaynak kontrolü altında ihtiyacım olmayan bir önbellek dizinim var. SVN ile tüm dizini / klasörü nasıl yoksayabilirim?
Yanıtlar:
svn:ignore
Üst dizinin özelliğini ayarlayın :
svn propset svn:ignore dirname .
Yok sayılacak birden çok şeyiniz varsa, özellik değerinde yeni satırlarla ayırın. Bu durumda, harici bir düzenleyici kullanarak özellik değerini düzenlemek daha kolaydır:
svn propedit svn:ignore .
svn rm --keep-local dirname
ilk. (Svn stat
svn propset svn:ignore -F file.txt .
svn:ignore
değil, ayarladığına dikkat et svn::ignore
. Rasgele özellikler ayarlayabilirsiniz, böylece sonuncusu TAMAM olarak ayarlanır ve özelliği görebilir ve düzenleyebilirsiniz, ancak SVN listelediğiniz dosyaları yoksaymaz.
Örnek bir dizin yapısı:
\project
\source
\cache
\other
İçinde bulunduğunuzda project
önbellek dizininizin eklenmediğini ve böyle göründüğünü görürsünüz.
> svn st
M source
? cache
İgnore özelliğini ayarlamak için
svn propset svn: önbelleği yoksay.
burada svn:ignore
ayarladığınız mülkün adı, mülkün cache
değeri ve .
bu mülkü ayarladığınız dizindir. Özelliğe cache
ihtiyaç duyan dizinin üst dizini olmalıdır .
Hangi özelliklerin ayarlandığını kontrol etmek için:
> svn proplist
Properties on '.':
svn:ignore
Değerini görmek için svn:ignore
:
> svn propget svn:ignore
cache
Önceden ayarlanmış özellikleri silmek için:
svn propdel svn:ignore
dirname
. Örneğin, yazarken svn propset svn:ignore dirname
, (bash) kabuğunun sizin için dirname doldurmasına izin verirseniz, o sondaki eğik çizgiyi ekler ve sizi komutla bırakır svn propset svn:ignore dirname/
ve bu da klasörün yok sayılmasına neden olmaz. En azından benim deneyimimdi.
Bahsetmek önemli:
Komut satırında kullanamazsınız
svn add *
Bu, yok sayılan dosyaları da ekleyecektir, çünkü komut satırı genişler *
ve bu nedenle svn add
tüm dosyaların eklenmesini istediğinize inanır. Bu nedenle bunun yerine şunu kullanın:
svn add --force .
svn add --force *
ÇALIŞMAYIN. Yıldızı değil, noktayı kullanın.
Bu işe almak için çalışırken bir süre harcadığım için, dosyalar zaten SVN'de varsa, svn delete
onlara ihtiyacınız ve svn:ignore
özelliği düzenlemek gerekir .
Bunun açık göründüğünü biliyorum, ancak ?
listemde olduğu gibi görünmeye devam svn status
ettiler, sadece yerel olarak görmezden geleceğini düşündüğümde.
Hafifçe genişletmek için bunu svn komut satırı aracıyla yapıyorsanız, şunu yazmak istersiniz:
svn propedit svn:ignore path/to/dir
seçtiğiniz metin düzenleyicinizi açacak, ardından içindeki her şeyi yoksaymak için '*' yazıp kaydet + quit - bu dizinin kendisini svn'de içerecek, ancak içindeki tüm dosyaları yok sayacak, dizini yok saymak için üst yolunu tıklatın ve dosyaya dizinin adını yazın. Kaydettikten sonra bir güncelleme çalıştırın ('svn up') ve ardından uygun yolu kontrol edin.
svn:ignore
Özelliği üst dizinde ayarlayın :
$ cd parentdir
$ svn ps svn:ignore . 'cachedir'
Bu, öğesinin şu anki değerinin üzerine yazılır svn:ignore
. Değeri şu şekilde düzenlersiniz:
$ svn pe svn:ignore .
Hangi editörünüzü açar. Her satıra bir tane olmak üzere birden çok desen ekleyebilirsiniz.
Geçerli değeri şununla görüntüleyebilirsiniz:
$ svn pg svn:ignore .
Bir GUI kullanıyorsanız, bunu yapmak için bir menü seçeneği olmalıdır.
svn ps svn:ignore . 'cachedir'
ile sonuçlanır cachedir is not under version control
. svn ps svn:ignore 'cachedir' .
benim için çalıştı
Yukarıdaki tüm katkılar için teşekkürler. Dosyaları görmezden gelirken deneyimlerimden bazı ek bilgileri paylaşmak istiyorum.
Klasörler zaten revizyon kontrolü altında olduğunda
Svn alma ve sonra svn co biz genellikle ilk kez ne dosyalar,.
Tüm çalışma zamanı önbelleği, ek klasörleri sürüm kontrolü altında olacaktır. yani önce svn ps svn: yoksaymadan , onu depodan silmemiz gerekir.
Yukarıdaki SVN sürüm 1.5 ile svn del --keep-local your_folder
, ancak önceki bir sürüm için benim çözümüm:
.svn
gizli klasör )Yok sayılmak için birden fazla klasöre ihtiyacımız olduğunda
svn:ignore
svn pe
metin dosyasını düzenlemeniz gerekir ve vi kullanarak metin düzenleyicinizi ayarlamak için gerekirse bu komutu kullanabilirsiniz :
export SVN_EDITOR=vi
Dosya basitçe şöyle görünür:
runtime
cache
attachments
assets
svn propset svn:ignore -F .ignorethesefiles .
dosyanın içeriğini kullanacak şekilde de kullanabilirsiniz . Etrafta saklamayı seviyorum, böylece neyin ihmal edildiğini biliyorsun. Düzenlemeler için takip desteği gerekir.
Dizininiz foo
zaten sürüm kontrolü altındaysa, önce dizini kaldırın:
svn rm --keep-local foo
svn propset svn:ignore foo .
... ve birden fazla dizini (diyelim build/
temp/
ve *.tmp
dosyalar) yok saymak isterseniz , iki adımda (ilk ilki yok sayılır ve yoksayma özelliklerini düzenler (burada diğer yanıtlara bakınız)) ya da biri gibi bir şey yazabilirsiniz
svn propset svn:ignore "build
temp
*.tmp" .
komut satırında.
Belirli bir SVN istemcisi TortoiseSVN kullanıyorsanız , taahhütte, öğeleri sağ tıklayıp "Yoksayılanlar listesine ekle" seçeneğini seçebilirsiniz.
Birden çok girişi yok sayma komutu biraz zor ve ters eğik çizgi gerektirir.
svn propset svn:ignore "cache\
tmp\
null\
and_so_on" .
Bu komut adındaki bir şey yok sayacaktır cache
, tmp
, null
ve and_so_on
geçerli dizinde.
svn propset svn:ignore -F .ignorethesefiles .
bir dosya kullanmanıza izin verir. Ve belirtildiği gibi, her zaman propaganda yaptınız.
Yuvalanmış dizinleri göz ardı etmekte sorun yaşadım; yoksaymak istediğim üst dizin 'svn status' ile gösterilmezdi, ancak tüm alt dizinler bunu gösterdi. Bu muhtemelen herkese açıktır, ancak paylaşacağımı düşündüm:
MİSAL:
/ gövde
/ Gövde / önbellek
/ Gövde / cache / subdir1
/ Gövde / cache / subdir2
cd /trunk
svn ps svn:ignore . /cache
cd /trunk/cache
svn ps svn:ignore . *
svn ci
"Teşekkür ederim" tür iğrenç, sahte ve dosyaları görmezden gelmenin zor yolu için svn.
Bu yüzden bir komut dosyası yazdım svn-ignore-all :
#!/bin/sh
# svn-ignore-all
# usage:
# 1. run svn status to see what is going on at each step
# 2. add or commit all files that you DO want to have in svn
# 3. remove any random files that you don't want to svn:ignore
# 4. run this script to svn:ignore everything marked '?' in output of `svn status`
svn status |
grep '^?' |
sed 's/^? *//' |
while read f; do
d=`dirname "$f"`
b=`basename "$f"`
ignore=`svn propget svn:ignore "$d"`
if [ -n "$ignore" ]; then
ignore="$ignore
"
fi
ignore="$ignore$b"
svn propset svn:ignore "$ignore" "$d"
done
Ayrıca, belirli dosya / yol adları listesini yok saymak için bu svn-ignore değişkenini kullanabiliriz . Sanırım svn-ignore-all gerçekten xargs svn-ignore gibi olmalı.
#!/bin/sh
# svn-ignore
# usage:
# svn-ignore file/to/ignore ...
for f; do
d=`dirname "$f"`
b=`basename "$f"`
ignore=`svn propget svn:ignore "$d"`
if [ -n "$ignore" ]; then
ignore="$ignore
"
fi
ignore="$ignore$b"
svn propset svn:ignore "$ignore" "$d"
done
Bir şey daha var: Ben svn check-out'larımı birçok rastgele dosya ile kirletme eğilimindeyim. İşlem yapma zamanı geldiğinde, bu dosyaları 'eski' bir alt dizine taşıyorum ve svn'ye 'eski' yoksaymasını söylüyorum.
Birden fazla yoksayma için basma oneliner:
svn propset svn:ignore ".project"$'\n'".settings"$'\n'".buildpath" "yourpath"
Proje dizininiz / Project olarak adlandırılmışsa ve önbellek dizininiz / Project / Cache olarak adlandırılmışsa, / Project üzerinde bir subversion özelliği ayarlamanız gerekir. Özellik adı "svn: ignore" ve özellik değeri "Cache" olmalıdır.
Özellikler hakkında daha fazla bilgi için Subversion kılavuzundaki bu sayfaya bakın .
SVN'İN OLACAĞI DİREKTÖRLERİ TUTMAK İÇİN:
svn delete --keep-local path / directory_to_keep / *
svn propset svn: "*" yolunu yoksay / directory_to_keep
TortoiseSVN gibi SVN için bir ön uç veya bir çeşit IDE entegrasyonu kullanıyorsanız, aynı menüde taahhüt / ekleme işlemi gibi bir yoksayma seçeneği de olmalıdır.
Svn: ignore özelliğini ayarlayın . Çoğu UI svn aracının, bunun yanı sıra bağlantıdaki komut satırı tartışmasının bir yolu vardır.
Eclipse ile Çözüldü sonraki şekilde :
Her şeyden önce, klasörünüzü projeyle senkronize edin:
ekibi -> senkronize et
Sonraki görünümde, ekip görünümünde, SVN sunucusuna taahhüt edebileceğiniz tüm kaynakları görebilirsiniz.
Bu nedenle, yoksaymak istediğiniz kaynağın kaynak klasörünü seçin ve ardından kullanarak yok sayabilirsiniz.
ekibi -> ekle
svn:ignore
.
Bundan sonra, onay penceresinde ilk seçeneği belirleyin: "ada göre yoksay".
Örneğin, hedef klasörü ve .class kaynaklarını yok saymak istersem senkronize edeceğim ve senkronizasyon görünümünde hedef klasörü seçeceğim. Bundan sonra, seçeceğim
ekibi-> eklenti
için svn:ignore
ve sonra onaylama penceresinde ilk seçeneği onaylamak edeceğiz.
Bu basit aktivitenin nasıl yapılacağını araştırmak için çok zaman kaybettikten sonra, iyi bir açıklama bulmak zor olmadığına karar verdim.
İlk önce örnek yapıyı bırakın
$ svn st? proje / gövde / hedef? / Gövde / myfile.x proje
1 - önce düzenleyiciyi yapılandır, mycase vim dışa aktarma SVN_EDITOR = vim
2 - “svn propedit svn: ignore project / trunk /” yeni bir dosya açacak ve dosyalarınızı ve alt dizininizi bize ekleyebilirsiniz.
$ svn st? / Gövde / myfile.x proje
Teşekkürler.