Legen Sie ein persistentes Referenzdatum für das Repository fest

255
brianmearns

Mit dem hg commitBefehl (und mehreren anderen) können --dateSie angeben, an welchem ​​Datum Sie das Commit speichern möchten. Zum Beispiel kann ich das machen:

hg commit --date "Oct 27 2000" 

Um so zu tun, als hätte ich die Änderungen vor 13 Jahren vorgenommen.

Aber ich möchte die --dateOption nicht jedes Mal angeben, wenn ich einen Commit durchführe, und ich möchte, dass die Zeit zwischen Commits korrekt ist. Gibt es eine Möglichkeit, mercurial etwas zur Wirkung von "Betrachten Sie diesen Moment jetzt als Mitternacht am 27. Oktober 2000" zu sagen (zum Beispiel), und lassen Sie von dort aus automatisch alle Zeitstempel entsprechend anpassen?

Wenn dieser hypothetische Befehl beispielsweise aufgerufen wurde date, könnte er etwa wie folgt aussehen:

> date Mon Oct 28 20:00:00 EDT 2013 > hg date "Oct 27 2000 00:00:00" > > #edit some files > date Mon Oct 28 20:30:00 EDT 2013 > # 30 minutes have elapsed > > hg ci > hg log changeset: 0:2f0b7f53d6e1 tag: tip user: sh1ftst0rm date: Sun Oct 27 00:30:00 2000 -0400 > > #edit some more files > date Mon Oct 28 21:15:00 EDT 2013 > # Another 45 minutes has elapsed, 1h15m since hg date was set. > > hg ci > hg log changeset: 1:a92497e622e9 tag: tip user: sh1ftst0rm date: Sun Oct 27 01:15:00 2000 -0400  changeset: 0:2f0b7f53d6e1 user: sh1ftst0rm date: Sun Oct 27 00:30:00 2000 -0400 
0

1 Antwort auf die Frage

0
wingedsubmariner

Ich kann mir zwei mögliche Lösungen vorstellen:

  1. Schreiben Sie eine Shell-Funktion / ein Skript hg, das anstelle des hgdirekten Aufrufs verwendet werden soll, und fügen Sie sie --datezum Festschreiben und anderen Befehlen hinzu, die dies erfordern. Es muss das korrekte Datum aus dem aktuellen Datum berechnet werden.
  2. Erstellen Sie eine VM und stellen Sie ihre Uhr auf irgendwann in der Vergangenheit ein, und nehmen Sie alle hg-Commits von dort aus vor.