Ist der einzige Weg, um die „live“ Revisionen eines bestimmten SVN Pfad „svn log -q -v“ plus einen Filter zur Liste?

StackOverflow https://stackoverflow.com/questions/1608060

  •  05-07-2019
  •  | 
  •  

Frage

Ist die Durchführung einer „svn log -q -v“ über alle Revisionen gegen das Repository root und dann Filterung von dem gewünschten Weg wirklich das beste (nur?) Weg, dies zu tun? Wir müssen diese Bereiche finden, um peg Revisionen zu einem automatisierten Werkzeug und unterstützt Detail in unsere Änderung Berichterstattung hinzuzufügen.

Ich habe die Wurzel der Abfrage bereits eine leichte Optimierung gemacht:

Bei einem Pfad:

Protokoll: //server/repo/a/b/c/d/foo.txt

Ich habe schon geschrieben, ein Skript wiederholt svn lügen Abfragen durchführen, um den Pfad:

svn log -q -v ... / a / b / c / d / foo.txt
svn log -q -v ... / a / b / c / d
svn log -q -v ... / a / b / c
svn log -q -v ... / a / b
svn log -q -v ... / a
svn log -q -v ...

, bis ich nicht bekommen:

svn: Die Datei wurde nicht gefunden: ...

Ich habe keine signifikanten Profil Tests laufen, aber es scheint mir, dass die Fehler nicht schnell verarbeitet werden sollten und das Gesamtpotenzial Reduzierung des Netzwerkverkehrs sollten die Kosten der wiederholten Anfragen in allen Fällen überwiegen außer dem, in dem das Repository root ohnehin abgefragt werden müssen.

Das oben funktioniert nicht, wenn die Vorfahren mehrere aktive Bereiche aufweist; es sei denn, jemand weiß besser, meine einzige Option ist aus dem Repository root abgefragt werden.

Aus den Ergebnissen ich im Wesentlichen die Liste der unterschiedlichen Bereiche wollen, wo die Datei vorhanden ist (was ich später auch Geschichte verfolgen ändern kann, so dass eine auferstandene Datei mehrere Bereiche hat, so pervers wie es klingen mag, haben wir Fälle haben wo Dateien mit dem gleichen Pfad zu sein ohne Beziehung am Ende). Im Moment bin ich Parsen Revisionsnummern, wie sie passieren, der letzten Revision des gewünschten Weg zu verfolgen, wo er oder einer seiner Vorfahren gelöscht wurde (zunächst HEAD, die überschrieben wird, wenn ich einen Lösch sehen). Wenn ich sehe, dass der Pfad hinzugefügt wurde, habe ich eine Reihe rev_added - rev_lastdeleted auskippen.

Die oben genannten Arbeiten, aber es mit sich bringt einiges an Informationen latschen durch, die meisten davon falsch. Gibt es eine effizientere Art und Weise, dies zu tun, vorzugsweise einen, in der mehr Arbeit auf der Serverseite, um den Verkehr zu minimieren Netzwerk erfolgt (viele unserer Arbeit erfolgt remote über VPN)?

Es scheint, dass der einzige Weg, TortoiseSVN diese gleiche Information liefert, wird durch den gleichen Prozess durchführt (das Protokoll eines Vorfahren und dann filtern).

War es hilfreich?

Lösung

Das glaube ich nicht so. Wenn Sie diese Daten in einer bestimmten Weise zu formatieren möchten, dann werden Sie SVN den Ausgang nehmen müssen und verarbeiten es, wie Sie tun.

Die Ausgabe von svn log filename sollte Ihnen alle relevanten Änderungen für filename - einschließlich seiner Geschichte bewegt / umbenennt - die Sie dann Format, wie Sie wollen

.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top