Gibt es einen Befehl zum Auflisten von SVN-Konflikten?

116

Kennt jemand einen SVN-Befehl zum Auflisten aktueller Konflikte zwischen dem Repo und der Arbeitskopie?

Vielen Dank

azz0r
quelle

Antworten:

168

Wenn Sie unter Linux nur die Konflikte sehen möchten, leiten Sie den Status über grep weiter.

svn status | grep -P '^(?=.{0,6}C)'
nshew
quelle
6
Wenn Sie -A 1zu den grep-Argumenten hinzufügen, wird die Zeile nach der Konfliktzeile angezeigt, die manchmal mit dem Konflikt zusammenhängt.
Wesley Hartford
4
-P sagt grep Perl regex zu verwenden, ^ = Beginn der Zeichenfolge (=?) Umschließen das Look - Ahead - Muster , das ist {0,6} jeder 0-6 Zeichen und den Buchstaben C, das der Indikator für Konflikte ist.
Pete
5
Was bringt es, den Lookahead-Teil zu verwenden? Konnte nicht '^.{0,6}C'so gut funktionieren?
Hans_meine
2
Um denselben Befehl unter OSX zu verwenden, müssen Sie GNU grep installieren, da das BSD grep nicht über das Perl-Regex-Flag (-P) verfügt
G.Rassovsky
4
Unter Windows ist die Powershell-Version davon(svn status) -Match '^(?=.{0,6}C)'
bstoney
28

Benutze einfach grep!

svn st | grep '^C'
Joseph Lust
quelle
2
@sid, es ist regulärer Ausdruck für 'beginnt mit', was bedeutet, dass das erste Zeichen ein C ist
Joseph Lust
1
Ich dachte, ob dies Dateien verpassen könnte, die den Status "A + C" haben. Ist das ein Problem?
Raghav
2
egrep '^ [AC +] +' würde dann den Trick machen, obwohl ich normalerweise keine A + C-Probleme habe.
Joseph Lust
1
Einfach zu beachten und für die meisten Fälle ausreichend. Danke @JosephLust.
Csonuryilmaz
11

Sie könnten versuchen zu svn merge -r <revision> --dry-runsehen, was auf diese Weise passiert.

corsiKa
quelle
Scheint unter Windows mit SVN 1.7.8 nicht zu funktionieren. Fehlerprotokoll: svn: E205001: Versuchen Sie 'svn help' für weitere Informationen svn: E205001: Quelle zusammenführen erforderlich
kakyo
4

Verwenden Sie für Windows PowerShell:

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

Wenn Sie bereits zusammengeführt haben, können Sie verwenden

svn status

und sehen Sie ein "C" in Großbuchstaben für Konflikte, aber normalerweise sollten Sie solche in Ihrer Arbeitskopie nicht sehen.

khmarbaise
quelle
1

Es ist möglicherweise möglich, svn merge --dryrundie Repository-URL mit allen Revisionen nach der letzten zu verwenden, mit der Sie aktualisiert haben.

Wenn Ihr aktuelles WC beispielsweise auf Revision 147 basiert, könnte dies Folgendes bewirken:

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

Es ist nichts, was ich selbst getan habe, also musst du es selbst versuchen.

Anders Abel
quelle
0

Wenn Sie keine Dateien zusammengeführt oder aktualisiert haben, verwenden Sie den folgenden Befehl

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

Kurz gesagt

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

Details
SVN markiert den Konfliktstatus (C) erst, wenn Sie die Datei (en) mit aktualisieren svn update.
Bis dahin werden die Status wie folgt angezeigt

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

M - Geändert in lokal
* - Updates / Eingehend von Remote
M und * - Geändert in lokal sowie in Remote - Dies ist ein Konflikt, aber svn hat noch nicht markiert

Sameer Khan
quelle
-2

auf Mac

$ svn status | grep -e '^!'

hat den Job gemacht

hier ist der mann für grep:

Verwendung: grep [-abcDEFGHhIiJLlmnOoqRSsUVvwxZ] [-A num] [-B num] [-C [num]] [-e Muster] [-f Datei] [--binary-files = value] [--color = when] [--context [= num]] [--directories = action] [--label] [--line-buffered] [--null] [pattern] [file ...]

das Sommerzeichen
quelle
Wie hilft das Abgleichen eines Ausrufezeichens bei der Suche nach widersprüchlichen Elementen?
anddam
^!ist der reguläre Ausdruck für jede Zeile, die mit beginnt !. Alle widersprüchlichen Zeilen beginnen mit!
Sommerzeichen
2
Nein, ich habe gerade Konflikte mit einem 1,9-Repo gelöst und die Konfliktlinien begannen nur mit "C".
anddam