SVN Belirli dosyaları kesin


219

Yalnızca belirli dosyaların bir listesini işlemenin herhangi bir yolu var mı (eq, SVN'nin taahhüt etmek istediği dosya listelerinden sadece biri).

Herhangi bir kullanıcı arayüzü olmadan Terminal altında MAC OS X üzerinde çalışıyorum.

Yanıtlar:


331

Elbette. Sadece dosyaları listeleyin:

$ svn ci -m "Fixed all those horrible crashes" foo bar baz graphics/logo.png

Belirli bir dosya kümesini yoksaymasını söylemenin bir yolunun farkında değilim. Tabii ki, taahhüt etmek istediğiniz dosyalar kabuk tarafından kolayca listeleniyorsa, bunu kullanabilirsiniz:

$ svn ci -m "No longer sets printer on fire" printer-driver/*.c

Svn komutunun bir dosyadan işlem yapmak için dosya listesini okumasını da sağlayabilirsiniz:

$ svn ci -m "Now works" --targets fix4711.txt

1
yani, temelde, ben dosyaları açıkça adlandırmak gerekir? sadece bu dosyaya dokunma diyemeyiz?
0100110010101

16
şunları yapabilirsiniz: svn st | -c 9-> targets.txt dosyasını kesin, sonra belirli bir dosyayı kaldırmak için targets.txt dosyasını düzenleyin ve - listeyi belirtmek için --targets parametresini kullanın.
dizgin

17
Yeni zorluğumun yazıcıyı ateşe veren bir hata yaratmak olduğunu düşünüyorum .
James Webster

3
Hem acıklı hem de saçma. Evreleme alanı yok. svn adddepolara dosya eklemek için kullanılır.
Kandinski

68

Değişiklikler kullanın. Dosya belirtmenin avantajı, taahhütte bulunmadan önce istediğiniz her şeyi görselleştirip onaylayabilmenizdir.

$ svn changelist fix-issue-237 foo.c 
Path 'foo.c' is now a member of changelist 'fix-issue-237'.

Bu yapıldı, svn artık işleri sizin için ayrı tutuyor. Bu, birden fazla değişikliğe hokkabazlık yaptığınızda yardımcı olur

$ svn status
A       bar.c
A       baz.c

--- Changelist 'fix-issue-237':
A       foo.c

Son olarak, değişmesini istediğiniz şeyi yapmasını söyleyin.

$ svn commit --changelist fix-issue-237 -m "Issue 237"

On-point cevap için +1. Changelistler gerçekten gitmenin yolu!
Miro Markaravanes

1
Bir değiştiriciye yeni dizinler eklemek istiyorsanız, önce svn svn changelist fix-issue-237 --recursive path/to/directory
add'i

Aslında changelistler yeni dizinlerle kullanılamaz .... "Subversion şu anda dizinlerle
changelistlerin

1
@fschmengler: SVN korkunç bir araçtır. Sadece yaptığı kötü işi en iyi şekilde yapmaya çalışıyordum. Git'e geçin. : P
jcwenger

10
Yıllar önce Git'e geçtim ve asla geriye bakmadım. Bir müşteri için
svn'yi

38

Temel olarak işlemek istediğiniz dosyaları komut satırına

svn ci file1 file2 dir1/file3

1
yani, temelde, ben dosyaları açıkça adlandırmak gerekir? sadece bu dosyaya dokunma diyemeyiz?
0100110010101

2
bağımsız değişken olmadan çalıştır svn değiştirilen tüm dosyaları taahhüt eder, bağımsız değişken olarak bir dosya ile çalıştırılırsa bu dosya bir dizinle çalıştırılırsa dizindeki tüm değiştirilmiş dosyalar işleme alınır
Wienczny

22

Yıkım durumum yüzünden yaratıcı olmak zorunda kaldım. svn stgösterdi M, Ave ~durumlar. Sadece istedim Mve Abu yüzden ...

svn st | grep ^[A\|M] | cut -d' ' -f8- > targets.txt

Bu komut bütün hatlar çıkış bulmak diyor svn sto başlangıcında Mveya Adaha sonra sona colums 8 olsun, kesme uzay ayırıcı kullanılarak,. Bunu targets.txt dosyasına dökün ve üzerine yazın.

Daha sonra dosya listesini daha da ayarlamak için targets.txt dosyasını değiştirin. Ardından, taahhütte bulunmak için aşağıda çalıştırın:

svn ci -m "My commit message" --targets targets.txt

Muhtemelen en yaygın kullanım durumu değil, ama umarım birine yardımcı olur.


2
İstediğinizi grep -v '^~'kara listeye almak için de kullanabilirsiniz .
Martin Konecny


7

bu komut dosyasını deneyin ..

#!/bin/bash
NULL="_"
for f in `svn st|grep -v ^\?|sed s/.\ *//`; 
     do LIST="${LIST} $f $NULL on"; 
done
dialog --checklist "Select files to commit" 30 60 30 $LIST 2>/tmp/svnlist.txt
svn ci `cat /tmp/svnlist.txt|sed 's/"//g'`

1

Ben dosyayı taşımak, "gizlemek" adlı bir (alt) klasör oluşturun yok orada taahhüt istiyoruz. Sonra eksik dosya hakkında şikayet yoksay, benim taahhüt yapmak. Ardından gizli dosyayı gizlemeden tekrar ./ ​​klasörüne taşıyın.

Bu taktiğin bir dezavantajı olmadığını biliyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.