3 Stimmen

Perforce: Wie man die ursprüngliche Nummer einer Änderungsliste findet

In Perforce werden Änderungslisten bei der Übermittlung neu nummeriert. Wenn die Änderungsliste erstellt wurde, hätte sie z.B. die Nummer 777, aber bei der Übermittlung der Änderungsliste würde sie in 790 umnummeriert.

Meine Frage ist, wie bekomme ich die neue CL-Nummer (790), wenn ich die alte CL-Nummer 777 kenne, oder umgekehrt?

5voto

Tim Clemons Punkte 5851

Die einzige Möglichkeit, die mir einfällt, ist das Hinzufügen der ursprünglichen Änderungslistennummer als Teil des Beschreibungsfeldes der Änderungsliste. Zunächst benötigen Sie ein Skript, um die ursprüngliche Changelist-Nummer zu speichern:

#!/bin/env perl
$id = $ARGV[0];
open (CHANGE_IN, "p4 change -o $id|");
open (CHANGE_OUT, "|p4 change -i $id");
while (<CHANGE_IN>)
{
    if (/^Description:/ and not /ORIGID/)
    {
        s/(^Description:)(.*)$/$1 ORIGID $id. $2/;
    }
    print CHANGE_OUT $_;
}
close (CHANGE_IN);
close (CHANGE_OUT);

Speichern Sie diese Datei als origid.pl auf dem Perforce-Server, wobei das ausführbare Bit gesetzt ist. Richten Sie dann einen Trigger mit p4 triggers .

Triggers:
    add_origid change-submit //depot/... /usr/bin/origid.pl %change%

5voto

Mark Punkte 9728

Wenn Sie wirklich die ursprüngliche Änderungslistennummer, die von Perforce abgerufen werden kann, ohne die ursprüngliche Änderungslistennummer in die Beschreibung einbetten zu müssen. Sie können die Befehlszeilenoption -ztag verwenden, um sie zu erhalten. Und Sie können sie nur über den Befehl "changes" abrufen (soweit ich weiß):

d:\sandbox>p4 submit -c 24510
Submitting change 24510.
Locking 1 files ...
edit //depot/testfile.txt#2
Change 24510 renamed change 24512 and submitted.

d:\sandbox>p4 -ztag changes -m1 //depot/testfile.txt
... change 24512
... time 1294249178
... user test.user
... client client-test.user
... status submitted
... oldChange 24510
... desc <enter description here>
<saved

Wie bereits erwähnt, ist es wahrscheinlich nicht sehr nützlich. Ich wollte jedoch darauf hinweisen, dass es möglich ist, an sie heranzukommen.

4voto

Eric Miller Punkte 1804

Mit der Version 2012.1 von Perforce wurde das Argument -O (Großbuchstabe oh) für p4 describe eingeführt, mit dem Sie eine Änderungsliste anhand ihrer ursprünglichen Nummer abfragen können (bevor sie von p4 submit neu nummeriert wurde).

Ich finde das sehr hilfreich, da ich mir oft Notizen zu einem Änderungssatz mache, bevor ich ihn einreiche, und dann vergesse, zu notieren, welche Nummer er bei der Einreichung erhalten hat.

Wenn ich also eine Notiz habe, in der es um die Änderung 12300 geht, kann ich jetzt durch Eintippen sehen, worauf sie sich bezieht:

p4 describe -s -O 12300

und mir von Perforce sagen zu lassen:

Change 12345 by me@myhost on 2013/10/31 00:00:00

    Fix that thing I wrote that note about

Affected files ...

    ... //Proj/MAIN/foo.c

Die bereits erwähnte ztag-Methode kann verwendet werden, um die alt Nummer der Änderungsliste einer eingereicht ändern:

> p4 -ztag describe -s 12345 | grep oldChange
... oldChange 12300

0voto

ChrisF Punkte 130622

Wenn Sie nicht etwas tun, wie Tim vorschlägt, geht die alte Nummer der Änderungsliste bei der Übermittlung verloren.

Die Nummern der Änderungslisten sind nur vorübergehend, bis Sie sie tatsächlich einreichen. Wenn Sie also eine neue Änderungsliste erstellen (z. B. 777) und dann beschließen, sie zu löschen, wird die nächste Änderungsliste, die Sie erstellen, die Nummer 778 haben.

0voto

Jordan Stefanelli Punkte 1328

Etwas eleganter geht es, wenn Sie das Python-Modul P4 verwenden.

d.h.

import P4
p4 = P4.P4()
p4.connect() # having a valid p4 workspace/connection is on you :)

c = p4.run_describe('969696') # describe a Submitted, renumbered changelist, i.e. 969696

old_pending_cl_number = c['oldChange'] # print out prior/pending CL# if this exists.

Prost

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X