2008-12-01 12 views
13

Angenommen, ich habe eine Änderungsliste (in Perforce) mit vielen Dateien eingecheckt und möchte die gesamte Änderungsliste wiederherstellen. Gibt es eine einfache Möglichkeit, die gesamte Änderungsliste auf einen Schlag zurückzusetzen?Gibt es eine einfache Möglichkeit, eine vollständige P4-Änderungsliste wiederherzustellen?

Zur Zeit mache ich so etwas wie dies für jede Datei in der Änderungsliste:

  • p4 sync // path/to/file # n (wobei "n" ist die vorherige Version der Datei)
  • cp Datei Datei # n
  • p4 sync // path/to/file
  • p4 bearbeiten // path/to/file
  • cp Datei # n Datei
  • rm Datei # n

Wie Sie sich vorstellen können, ist dies für eine große Änderungsliste ziemlich umständlich.

Antwort

10

Die geposteten Antworten liefern korrekte Antworten, aber beachten Sie auch, dass es in P4V eine aktuelle Menüoption gibt, die das jetzt für Sie erledigt. Es ist in der neuesten Betaversion 2008.2 und sollte daher die nächste Woche oder drei offiziell veröffentlicht werden.

Diese link gibt Details.

Es sollte viel einfacher zu bedienen sein als die früheren Antworten, aber ich hatte noch nicht die Gelegenheit, es selbst zu versuchen.

Aktualisieren Dies wurde jetzt vollständig freigegeben. Siehe Perforce downloads.

+0

Danke Greg - Ich werde den Beta-Client ausprobieren! –

+0

Ich habe gerade diese Beta-Version von P4V ausprobiert und kann bestätigen, dass es eine "zurückgeschickte Änderungsliste" -Funktion hat, die genau das tut. Da dies ein offizielles Perforce-Feature und kein Drittanbieter-Skript ist, sollte dies meiner Meinung nach als offizielle Antwort akzeptiert werden. –

3

This sieht interessant aus. Ich habe es nicht persönlich versucht.

+0

Dank - ich habe gerade versucht es und es funktionierte großartig! Obwohl ich die P4V-Integration nicht auf meinem Mac ausführen konnte, funktionierte das Skript über die Befehlszeile problemlos. –

+0

Falls der Blog-Post, mit dem Sie verlinkt haben, ausfällt, finden Sie hier einen direkten Link zum Skript in Google Code: http://code.google.com/p/p4scripts/source/browse/trunk/src/p4revert.py –

+0

Auch , eine Anmerkung: Das Python-Skript ist (momentan) im DOS-Format gespeichert, daher müssen Sie in Unix-Zeilenendungen konvertieren, damit es auf Unix-basierten Systemen wie Linux und OS X korrekt funktioniert. –

0

Ich habe das gleiche Problem, wenn ich eine gesamte Änderungsliste löschen möchte. Daher verwende ich das folgende Skript (beachten Sie, dass es auch das Shelve der Änderungsliste und die Änderungsliste selbst löscht. Wenn Sie nur zurückschreiben möchten, kopieren Sie die relevanten Zeilen). Stellen Sie außerdem sicher, dass das sed für Ihre Version von p4 gilt.

#!/bin/bash 

set -e 

if [[ $# -ne 1 ]]; then 
echo "usage: $(basename $0) changelist" 
    exit 1 
fi 

CHANGELIST=$1 

#make sure changelist exist. 
p4 describe -s $CHANGELIST > /dev/null # set -e will exit automatically if fails 

p4 shelve -d -c $CHANGELIST 2> /dev/null || true # changelist can be shelveless 
files_to_revert=$(p4 opened 2> /dev/null | grep "change $CHANGELIST" | sed "s/#.*//g") 
if [[ -n "$files_to_revert" ]]; then 
    p4 revert $files_to_revert 
fi 
p4 change -d $CHANGELIST 
+1

Schließlich hochgeladen mit einigen anderen p4 Skripten - https://github.com/arnonzilca/p4u –

0

Das Problem beginnt, wenn Sie eine ganze Änderungsliste zurückkehren möchten (als Masse), die Sie gerade gesendet haben, und Sie müssen zurückkehrt Dateien von # n-1 ein starten, indem man schnell (weil es die Produktion ist) ...

Gesucht ya23 der Antwort- den Link eines Python-Skript zu unterstützen - es ist wirklich sehr einfach zu bedienen (und wirklich leicht zu übersehen sein Kommentar)

Sie geben ihm die Revision, die Sie rückgängig zu machen möchten, und es bereitet alles automatisch vor (jede Datei # n-1 & Verschmelzung und alles) ... Sie reichen nur ein.

1

Aus irgendeinem Grund funktioniert der awk-Schritt nicht für mich. Ich laufe von einer Windows-Umgebung mit emulierten Unix-Kommandozeilen-Tools.Allerdings ist die folgende Arbeiten:

p4 describe -s [changelist_number] | grep // | sed "s/\.\.\. //" | sed "s/#.*//" | p4 -ztag -x - where | grep "... path " | sed "s/\.\.\. path //" 

Hier sind mögliche Standorte Unix-Kommandozeilen-Tools in einer Windows-Umgebung zu erhalten:

http://sourceforge.net/projects/getgnuwin32/?source=typ_redirect http://unxutils.sourceforge.net/

Verwandte Themen