Wie durchsuchen Sie den Text von Änderungslistenbeschreibungen in Perforce?

71

Gelegentlich möchte ich den Text von Änderungslistenbeschreibungen in Perforce durchsuchen. In P4V scheint es keine Möglichkeit zu geben, dies zu tun. Ich kann es tun, indem ich die Ausgabe des Änderungsbefehls in eine Datei umlenke ...

p4 changes -l > p4changes.txt

... (der Schalter -l weist ihn an, den vollständigen Text der Änderungslistenbeschreibungen zu speichern) und dann die Datei zu durchsuchen, dies ist jedoch ziemlich umständlich. Hat jemand einen besseren Weg gefunden?

Rabe
quelle
Die wirkliche Lösung wäre, dass p4d einen Volltextindex für Änderungslistenbeschreibungen (und die Quelldateien selbst ...) hat. Etwas seltsam, das es noch nicht in das Produkt geschafft hat.
Jonesome Reinstate Monica

Antworten:

66

Wenn der übermittelte Bereich der Änderungsliste den Fokus hat, können Sie mit STRG + F eine beliebige Textsuche durchführen, die Beschreibungen der Änderungsliste enthält.

Die einzige Einschränkung besteht darin, dass nur die Änderungslisten durchsucht werden, die vom Server abgerufen wurden. Daher müssen Sie möglicherweise die abgerufene Nummer erhöhen. Dies erfolgt über die Einstellung "Anzahl der gleichzeitig abzurufenden Änderungslisten, Jobs, Zweigzuordnungen oder Beschriftungen", die Sie finden, indem Sie zu Bearbeiten-> Einstellungen-> Serverdaten navigieren.

Greg Whitfield
quelle
Nett. Versuchte dies und es springt, um jede passende Änderungsliste auszuwählen. Wirklich praktisch.
Epu
Das hat mir wirklich geholfen. Vielen Dank!
Roney Michael
1
Ich wünschte, ich könnte wieder upvoten. Ich habe diese Antwort heute vergessen und wieder gefunden, aber gesehen, dass ich sie bereits positiv bewertet habe.
CoderDennis
1
Für mich ist es eine schreckliche Situation, wenn p4v keine so nützliche Suche enthält. Stellen wir uns eine Situation vor, in der Ihr CL sehr alt ist (~ mehr als zwei Jahre alt in hochentwickelten Anwendungen). Sie werden es auf diese Weise nicht finden.
23W
22

p4 changes -L | grep -B 3 searchstring

-B 3 bedeutet, dass 3 Zeilen vor der übereinstimmenden Zeichenfolge angezeigt werden. Dies sollte ausreichen, um die Änderungs-ID mit 2 Zeilen-Kommentaren anzuzeigen. Sie können sie jedoch nach Bedarf ändern.

Paul Medcraft
quelle
17

Ich benutze p4sql und führe eine Abfrage in der Datenbank "Änderungen" aus. Hier ist das Perforce-Datenbankschema

Die Abfrage sieht ungefähr so ​​aus (ungetestet)

select change from changes where description like '%text%' and p4options = 'longdesc'

Bearbeiten: Die p4-Optionen wurden hinzugefügt, um mehr als 31 Zeichen in der Beschreibung zurückzugeben.

jop
quelle
Das hat nicht funktioniert. Aus irgendeinem Grund verhält sich "like" wie "=". Angenommen, die Beschreibung lautet "foo bar". wie 'foo' scheitert, aber wie 'foo bar' gelingt. Noch wichtiger ist, dass nicht der gesamte Text der Beschreibung verfügbar ist, sondern nur die ersten 30 Zeichen.
Rabe
@raven - Die% -Zeichen sind für SQL wichtig und sollten dazu führen, dass die Abfrage funktioniert. Ich denke auch nicht, dass Sie in der Beschreibung richtig sind - Sie sollten in der Lage sein, alles zu erreichen. Können Sie Ihre Anfrage stellen?
Greg Whitfield
@ Greg Whitfield: Du hast recht, ich habe die% -Zeichen nicht verwendet. Die Abfragen funktionieren, sind aber nicht sehr nützlich. Ich habe überprüft, dass nur die ersten 31 Zeichen der Beschreibung abgefragt und angezeigt werden.
Rabe
@raven - Die Abfrage wurde aktualisiert und enthält nun p4options = 'longdesc'. das sollte die vollständige Beschreibung zurückgeben.
Jop
p4options macht die Abfrage allerdings etwas langsamer.
Jop
7

Hier ist eine Powershell-Version von Pauls "grep" -Antwort. Wieder sucht es nach der angegebenen Zeichenfolge in der Änderungsbeschreibung und gibt die 3 Zeilen davor zurück, um die Änderungs-ID einzuschließen:

p4 changes -L | select-string "search string" -Context (3,0)
Julian Martin
quelle
3

Warum in eine Datei umleiten, wenn Sie die Ausgabe durchleiten lessund die lessSuche verwenden können?

p4 changes -l | less

Drücken Sie dann, um /zur Eingabe einer Suchzeichenfolge aufzufordern. Danach nspringt man zum nächsten Spiel und Shift+ nspringt zum vorherigen.

Eine Implementierung von lessfür Windows ist als Teil von UnxUtils verfügbar .

Jamesdlin
quelle
Dies ist wahrscheinlich die benutzerfreundlichste Option, vorausgesetzt, Sie haben bereits weniger. Ich hatte es bereits mit msys2 installiert, so dass es einfach aufzurufen war.
leetNightshade
1

Die Verwendung von p4sql ist wirklich die einzige Möglichkeit, effektiv das zu tun, was Sie wollen. Mir ist kein anderer Weg bekannt. Der Vorteil ist natürlich, dass Sie die select-Anweisungen verwenden können, um den Bereich der Änderungslistenwerte (über Datum, Benutzer usw.) zu begrenzen. Ihre Methode funktioniert, wird jedoch sehr schnell umständlich, wenn Sie mehr Änderungslisten erstellen. Sie können den Umfang des Befehls "Änderungen" einschränken, erhalten jedoch nicht die Flexibilität von p4sql.

Kennzeichen
quelle
0

Wenn Sie Ihre Befehlszeile immer noch lieben, können Sie ein kleines Perl-Skript schreiben, das:

  • Ändert das Datensatztrennzeichen $ / so, dass die neue Zeile "\ n \ n" verdoppelt wird, sodass die Eingabe in vollständige Datensätze der ztagged p4-Ausgabe gefiltert wird.
  • scannt den Teil '/ ^ ... desc /..//' mit regulären Ausdrücken aus den Argumenten.

Verwendung wäre so etwas wie 'p4 -ztag Änderungen -l | yourperlfilter.pl searchterm1 searchterm2 '

Wenn das in Ordnung war, können Sie es in das p4win-Tools-Menü integrieren .

Epu
quelle