2011-01-03 7 views
2

Ich habe gerade ein Projekt geöffnet, an dem ich vor zwei Wochen gearbeitet habe, und habe herausgefunden, dass meine Arbeitsversion mehrere Revisionen hinter sich hat (mit Mercurial über Bitbucket). Die neuesten kompilierten Assemblies auf meinem Rechner sind 100% up-to-date, aber meine lokalen und Remote-Code-Repositories fehlen alle neuen Code, den ich auf meinem Rechner in die neuesten Baugruppen kompiliert.Neuer Code ging AWOL, linke alte Revision. Wo ist es hin?

Zerlegen der letzten Kompilierung (einen Monat alt) mit Red Gate .NET Reflector, ich kann alle meine neuesten Code sehen, aber nichts davon ist jetzt irgendwo auf meinem Computer oder in einem meiner Repositories gefunden werden. Es ist wie alles mein Code ging zurück in die Zukunft. Ist es möglich, dass ich unbeabsichtigt einen Code aus meinem Remote-Repository zurückgesetzt und überschrieben habe und es keine Spur davon gibt?

Ich muss meine letzten Änderungen nicht übernommen haben, aber diese sollten immer noch in meiner Arbeitskopie sein? Mir sind keine System-Rollbacks bekannt. Ich führe Visual Studio 2010 auf meiner Windows 7 Dev Box aus und ich bin mir sicher, das ist nicht Mercurials Fehler, aber gibt es einige Funktionen, die mir nicht bekannt sind? Wie ist das möglich?

Antwort

3

Nicht verbindend ist immer eine schlechte Idee, committing ist, wie Sie sagen "das ist etwas" nicht "das ist fertig".

Was ist die Ausgabe von hg summary? Ist es möglich, dass Sie d zu einer früheren Revision haben - wenn also alle neuen Sachen noch im Repo sind, einfach nicht das Arbeitsverzeichnis. Mercurial verwirft niemals festgeschriebene Änderungen und löscht nur nicht festgeschriebene Änderungen, wenn Sie eine Option wie --clean beim Aktualisieren verwenden. Wenn Sie hg revert getan haben, haben Sie .orig Backup-Dateien, es sei denn, Sie haben eine --no-backup.

Kurz gesagt, Mercurial wird Änderungen nicht wegwerfen, wenn Sie nicht sehr hart daran arbeiten, also sind sie entweder noch da oder es war etwas Äußeres.

+0

YYEEEEEEESS !!!! Meine neueren Versionen sind in den .orig-Dateien. Wie kann ich Mercurial mitteilen, meine aktuelle (veraltete) Version durch die (neueren) .orig-Dateien zu ersetzen? Ich werde Jon Skeet eine frische Kanne Kaffee bringen lassen. –

+0

Nevermind, sortierte es mit 'für/f% i in ('dir/s/b * .orig') machen Sie @copy% i% ~ dpni', um die Arbeitskopie durch die .orig Dateien zu ersetzen. –

+0

Froh, es hat geklappt. Sei vorsichtig mit dem Zurückkehren, wenn du nicht gewohnheitsmäßig verpflichtest. Oder besser noch zwanghaft. :) –