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

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)'

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'

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.


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)'

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.


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.


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


-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 ...]


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.