2013-02-19 5 views
5

Ich möchte die neueste Änderungsliste im Depot für meine aktuelle Client-Spezifikation abrufen. Dies wäre effektiv die Änderung, die synchronisiert werden würde, wenn ich einen p4 sync in meinem Arbeitsbereich machen würde.So erhalten Sie die neueste Perforce-Änderungsliste im Depot für die aktuelle Client-Spezifikation

Ich habe versucht, p4 changes -s submitted -m1 -c [client-name], aber das gibt die letzte Änderung zurück, die über meinen Client eingereicht wurde.

Doing p4 changes -s submitted -m1 //depot/path/... wird funktionieren, aber ich möchte die Client-Spezifikation nicht abfragen müssen, um herauszufinden, was der Depot-Pfad ist. Und wenn es mehr als ein Mapping gäbe, wüsste ich nicht, wie ich das verstehen soll.

Es scheint, es muss eine einfache Möglichkeit, dies zu tun, die ich vermisse.

EDIT

ich den Client spec Abfrage haben müssen, aber wie in der akzeptierte Antwort darauf hingewiesen, konnte ich die Client-spec root als Dateipfad verwenden und müssen nicht auf die Ansicht sehen Zuordnungen.

Endlösung mit P4Python:

# Get client 
clientspec = p4.fetch_client() 
root = clientspec["Root"] 

# Get latest changenum in client mapping 
changes = p4.run("changes", "-s", "submitted", "-m1", root + "/...") 
changenum = changes[0]['change'] 
+0

Ist 'p4 Änderungen -s übergeben -m 1' (ohne Pfad) nicht geeignet? – jamesdlin

+1

@jamesdlin - Nein, das gibt die letzte Änderungsliste auf dem Server an, bei der es sich um einen Depot-Pfad handeln kann, den ich meiner Client-Spezifikation nicht zugeordnet habe. – dwikle

Antwort

1

Ich glaube, Sie gehen, um Ihre Client-spec haben abfragen seine lokalen Wurzeln zu finden. Wenn Sie nicht über AltRoots kümmern müssen, dann könnte dies sein:

p4 changes -s submitted -m 1 "$(p4 client -o | grep "^Root:" | cut -f 2)/..." 

in bash. Wenn Sie Ihren lokalen Client anstelle des Depotpfads verwenden, vermeiden Sie das Problem mit mehreren Zuordnungen.

Verwandte Themen