SVN çakışmalarını listelemek için bir komut var mı?


116

Depo ile çalışan kopya arasındaki mevcut çatışmaları listelemek için bir SVN komutu bilen var mı?

Teşekkürler

Yanıtlar:


168

Linux'ta, yalnızca çatışmaları görmek istiyorsanız, durumu grep aracılığıyla yönlendirin.

svn status | grep -P '^(?=.{0,6}C)'

6
-A 1Grep argümanlarına eklemek size bazen çatışmayla ilgili olan çakışma satırından sonraki satırı gösterecektir.
Wesley Hartford

4
-P söyler grep ^ =, perl düzenli ifade kullanmak dize başlar, (? =) Çevrelemek için lookahead olan desen {0,6} 6 karakterler ve çakışma göstergesidir C harfi, herhangi 0.
Pete

5
Önden okuma kısmını kullanmanın amacı nedir? Sen de '^.{0,6}C'çalışamaz mıydı?
hans_meine

2
OSX'te aynı komutu kullanmak için, GNU
grep'i

4
Windows'ta bunun Powershell sürümü(svn status) -Match '^(?=.{0,6}C)'
bstoney

28

Sadece grep kullanın!

svn st | grep '^C'

2
@sid, 'şununla başlar' ifadesinin normal ifadesi, yani ilk karakter C
Joseph Lust

1
Bunun "A + C" statüsündeki dosyaları gözden kaçırıp atamayacağını düşünüyordum .. Bu bir sorun mu ..
Raghav

2
egrep '^ [AC +] +' o zaman işe yarar, ama genelde A + C sorunlarım olmaz.
Joseph Şehvet

1
Akılda tutulması basit ve çoğu durum için yeterlidir. Teşekkürler @JosephLust.
csonuryilmaz

11

Bu svn merge -r <revision> --dry-runşekilde ne olacağını deneyebilir ve görebilirsin.


Svn 1.7.8 ile Windows'ta çalışmıyor gibi görünüyor. Hata günlüğü: svn: E205001: Daha fazla bilgi için 'svn yardımını' deneyin svn: E205001: Kaynağı birleştirme gerekli
kakyo


4

Windows PowerShell kullanımı için:

svn status | sls -Pattern '^(?=.{0,6}C)'

3

Zaten birleştiyseniz kullanabilirsiniz

svn status

ve çatışma için büyük "C" harfini görürsünüz, ancak genellikle çalışma kopyanızda böyle bir tür görmemelisiniz.


1

En svn merge --dryrunson güncellediğinizden sonra tüm revizyonlarla birlikte depo URL'sini belirtirken kullanmak mümkün olabilir .

Örneğin, mevcut tuvaletiniz 147 numaralı revizyona dayanıyorsa, bu bunu yapabilir:

svn merge -r 148:HEAD http://url.to.repo/repo/

Kendi kendime yaptığım bir şey değil, bu yüzden kendiniz denemelisiniz.


0

Dosyaları birleştirmediyseniz veya güncellemediyseniz, aşağıdaki komutu kullanın

svn status --show-updates | grep -P '.*(?=.*M)(?=.*\*).*'

Kısaca

svn st -u | grep -P '.*(?=.*M)(?=.*\*).*'

Ayrıntılar
SVN, siz kullanarak dosya (lar) ı güncelleyene kadar çakışma (C) durumunu işaretlemez svn update.
O zamana kadar durumlar aşağıdaki gibi gösterilir

+---+------+---------------+---------------+
| M |      |               | 23246   file1 |
+---+------+---------------+---------------+
|   |      | *             | 23233   file2 |
+---+------+---------------+---------------+
| M |    * | 23233   file3 |               |
+---+------+---------------+---------------+

M - Yerelde değiştirildi
* - Güncellemeler / Uzak
M ve * ' den Gelen - Yerelde ve uzaktan değiştirildi - Bu bir çakışma ancak svn henüz işaretlenmedi


-2

mac'ta

$ svn status | grep -e '^!'

işi yaptım

işte grep için adam:

kullanım: grep [-abcDEFGHhIiJLlmnOoqRSsUVvwxZ] [-A num] [-B num] [-C [num]] [-e pattern] [-f file] [--binary-files = değer] [--color = ne zaman] [--context [= num]] [--directories = action] [--label] [--line-buffered] [--null] [pattern] [dosya ...]


Çakışan öğelerin bulunmasına yardımcı olacak bir ünlem işareti nasıl eşleştirilir?
anddam

^!ile başlayan her satırın normal ifadesidir !. Tüm çakışan satırlar!
thesummersign

2
Hayır, 1.9 repodaki çatışmaları çözdüm ve çatışma hatları sadece "C" ile başlıyordu.
anddam
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.