Frage

Kurzversion:

Nach dem in P4 Verzweigung, wie kann ich die „Quelle“ Änderungsliste der Branche informieren?

Lange Version:

Lassen Sie uns sagen, ich habe einen Hauptast meines Projekts in

//project/main/...

Die neuesten Änderungs hier vorgelegten @ 123, wenn ich mich entscheide, einen Zweig für die Freigabe erstellen 1.0 in

//project/1.0/...

Von P4V eine neue Änderungsliste erstellt wird (sagen @ 130), gelöst und vorgelegt.

Von der CLI, würde es wie folgt aussehen:

p4 integrate -c 123 -o //project/main/... //project/1.0/...
p4 submit

Später sehe ich den Änderungslisten unter //project/1.0, und sehen Sie die @ 130 Änderungs viel verzweigten Dateien enthält. Wie kann ich nicht die Änderungsliste herausfinden. dass diese ursprünglich verzweigt wurde von (das heißt, @ 123)?

War es hilfreich?

Lösung

p4 changes wird eine Liste der eingereichten Änderungslisten angezeigt werden, die gegebenenfalls zu einem bestimmten Pfad gefiltert.

p4 changes //project/main/...
Change 123 ... 'Very last change.'
Change 122 ... 'Next-to-last change.'
Change 100 ... 'Only two changes to go...'
...

Keine Überraschung, aber, wie Sie gefunden haben, ist p4 changes weniger hilfreich, wenn Sie all diese Änderungen in einer einzigen Änderung integrieren:

p4 changes //project/1.0/...
Change 130 ... 'Integrated everything from main.'

Der Trick besteht darin, die -i Option verwenden , die enthält alle Änderungslisten integriert in die angegebenen Dateien .

p4 changes -i //project/1.0/...
Change 130 ... 'Integrated everything from main.'
Change 123 ... 'Very last change.'
Change 122 ... 'Next-to-last change.'
Change 100 ... 'Only two changes to go...'
...

genau das bekommen, was Sie wollen (123) finden Sie ein Skript schreiben müssen, die die Ausgabe von p4 changes -i //project/1.0/... filtert jede Änderung von p4 changes //project/1.0/... aufgelistet zu entfernen (und dann die letzten verbleibenden ändern).

(Wenn die Erkundung, finde ich häufig auch die -m max Option nützlich. Diese Grenzen Änderungen an den ‚max‘ jüngste . Dies hilft, die Ausgabe nicht außerhalb des Bildschirms fließen, wenn es viele Veränderungen.)

Andere Tipps

Ich weiß nicht, von jedem einfachen Befehl, führt, was Sie tun mögen. Wenn Sie ein wenig und der Befehl zum Skript bereit sind, muss nicht schnell ausführen Sie vielleicht Skript so etwas wie die folgenden für könnten versuchen, alle verzweigten Dateien:

  1. Hier finden Sie die Quelldatei / Revision für eine Zieldatei.

      

    p4 FileLog // Projekt / 1.1 / foo.bar # 1
      //project/1.1/foo.bar
      ... # 1 Änderung 6416 Zweig auf 2009.07.10 von foo @ bar (Text) 'Version 1.1'
      ... ... Zweig von // Projekt / main / foo.bar # 1, # 2

  2. Erhalten Sie die Änderungsliste, bei der die Quelldatei / Revision vorgelegt wurde.

      

    p4 fstat // Projekt / main / foo.bar # 2
      ... depotFile //project/main/foo.bar
      ... headAction bearbeiten
      ... headType Text
      ... headTime 1201771167
      ... headRev 2
      ... headChange 5353
      ... headModTime 1201770971

  3. Wiederholen Sie für alle Dateien in Zweig und wählen Sie die höchste Veränderung keine (headChange oben), die die letzte Änderung der Eltern vorgelegt werden sollte für diese spezielle Datei, bevor Verzweigung. Sie könnten eine vollständige Liste aller verzweigten Dateien erhalten unter Verwendung von z.B. "P4 Dateien //project/1.0 /...# 1".

(oder vielleicht den einfachen Weg nehmen und fragt Perforce-Unterstützung)

Da keine der Antworten bisher den Code zur Verfügung stellt für die Suche nach der Quelle oder Wurzel Änderungsliste eines Zweigs, dachte ich, dass ich einen Einzeiler nur zu tun bieten würde, dass. Dieser Ansatz basiert auf @ CWAN Vorschlag, und die „Eltern“ Änderungsliste, aus dem der Zweig erstellt wurde gedruckt. Das FIRST_BRANCH_CL Argument muss mit der Zweigerzeugung Änderungsliste ersetzt werden (das heißt die ersten Änderungsliste auf den neuen Zweig eingereicht). Als ein konkretes Beispiel, FIRST_BRANCH_CL mit 130 von der ursprünglichen Frage zu ersetzen, diese Einzeiler ausgeben würde 123.

p4 describe -s FIRST_BRANCH_CL | perl -lne 'if(/^\.\.\. (.+#[0-9]+) .+$/) {print quotemeta $1}' | xargs p4 filelog -m1 | perl -lne 'if(/^\.\.\. \.\.\. branch from (.+#[0-9]+)/) {print quotemeta $1}' | xargs p4 fstat | perl -lne 'if(/^\.\.\. headChange (\d+)/) {$MaxCL=$1 if($1 > $MaxCL)} END {print $MaxCL}'

Kurze Antwort :

Mit dem Revisionsgraph in P4V ist Schritt zurück durch die Zeit und untersuchen, um die Integration der Geschichte. Video auf der Perforce Website .

Ich habe erfolgreich die Revision Graph auf Zweige mit Tausenden von Dateien zu verfolgen, wenn eine bestimmte Änderung in eine Filiale integriert. Deshalb habe ich es zu empfehlen und zu einem Video-Training verbunden, wie die meisten Menschen unterschätzen, weil sie nicht wissen, wie es zu benutzen.

Lange Antwort: :

... [removed]

UPDATE: Wie der Revisionsgraph scheinbar nicht machbar ist, können Sie vielleicht lösen diese einen Prozess / Politik verwenden, das heißt, wenn Sie führen die Integration, fügen Sie eine Notiz in der Beschreibung „Verzweigte @ CL 123 “. Wir nutzten diesen selbst Ansatz, wenn sie von einem Trunk Release Linien zu integrieren.

Wenn Sie die Geschichte Registerkarte in P4V verwenden wird es Ihnen alle Änderungslisten gegen einen Zweig eingereicht zeigen, so Blick auf diese für

//project/1.0/...

, wenn Sie die älteste Änderungsliste vorgelegt gefunden haben, dann auf einem der Dateien in dieser Änderungsliste für den Revisionsgraphen sehen, dies zeigt Ihnen den Zweig, dass die Datei (und der Rest der Dateien) integriert wurden.

Ich werde sehen, ob ich mit den p4 Befehlen zurückkommen kann, das Gleiche zu tun.

Aktualisiert Antwort: Ich denke, dies funktionieren wird. Versuchen Sie folgendes:

p4 interchanges from_branch  to_branch

Dies wird zeigen, nicht integrierte Änderungen von Ihrem Hauptzweig zu Ihrem Release-Zweig. Ich glaube, dass Sie die Top-Änderungsnummer minus 1 verwenden können, um Ihre Quelle Änderungsliste zu finden. interchanges ist eine nicht dokumentierte Perforce CLI-Funktion. Um mehr zu erfahren, geben Sie p4 help interchanges, um mehr über diesen Befehl.

Noch einmal, ich denken Dies funktioniert. Möglicherweise gibt es einige speziellen Fälle, in denen es nicht, aber es ist meine beste Vermutung auf ein hartes und wichtiges Problem.

"p4 integriert" für mich gearbeitet. Geben Sie für „Kopie von“ in der Beschreibung

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