Mercurial: "Nicht verfolgte Datei im Arbeitsverzeichnis unterscheidet sich von Datei in angeforderter Revision"?

78

Kann mir jemand sagen, was dieser Mercurial-Fehler bedeutet?

Die nicht verfolgte Datei im Arbeitsverzeichnis unterscheidet sich von der Datei in der angeforderten Revision

Dies geschah beim Ausführen eines hg-Abrufs:

C:\myapp>hg fetch ssh://hg/myapp-v1
pulling from ssh://hg/myapp-v1
searching for changes
adding changesets
adding manifests
adding file changes
added 93 changesets with 693 changes to 78 files (+1 heads)
updating to 797:0df7dbe7dc06
196 files updated, 0 files merged, 196 files removed, 0 files unresolved
merging with 704:edb7765768c6
abort: untracked file in working directory differs from file in requested revision: 'a/b/c/d.java'

Soweit ich weiß, stimmt diese Datei (a / b / c / d.java) nicht mit den in .hgignore konfigurierten Pfaden überein. Und diese spezifische Datei ist auch in den beiden Repositorys (myapp & myapp-v1) identisch.

Mir ist nicht klar, was das überhaupt bedeutet. ??

Marcus Leon
quelle

Antworten:

83

Es sagt Ihnen, dass Sie bereits eine Datei mit dem Namen a/b/c/d.javain Ihrem lokalen Arbeitsverzeichnis des myapp-Repos haben, diese jedoch nicht hinzugefügt (nachverfolgt) wurde, und fetch ist nicht bereit, sie beim Aktualisieren / Zusammenführen zu überschreiben.

Dinge, die Sie tun können, sind Äther:

  • Bewegen Sie Ihre Kopie a/b/c/d.javaaus dem Weg und führen Sie dann das Ziehen / Aktualisieren durch. Danach vergleichen Sie Ihren Umzug a/b/c/d.javamit dem einen Abruf.

oder

  • hg add a/b/c/d.java, hg commit a/b/c/d.javaUnd ziehen / merge

Ersteres funktioniert, weil keine Datei mehr im Weg ist, und letzteres funktioniert, weil Ihre Kopie nachverfolgt wird, damit Mercurial sie zusammenführen kann.

Sie sollten auch in Betracht ziehen, die Verwendung einzustellen fetch. Es kombiniert pullund updateund mergefür Sie, was einfach kein sicherer Weg ist. In diesem Fall pullwäre es Ihnen gelungen und beides, updateund mergeSie hätten viel hilfreichere Nachrichten erhalten.

Ry4an Brase
quelle
Vor dem Zusammenführen werden hg statuskeine ausstehenden Änderungen zurückgegeben. hg add a/b/c/d.javagibt "a / b / c / d.java bereits verfolgt" zurück
Marcus Leon
Interessanter Punkt über Fetch vs Pull / Merge. Ich habe eine gemacht pull, und dann mergebekomme ich viele Nachrichten in der Form:remote changed dir/blah.xml which local deleted use (c)hanged version or leave (d)eleted?
Marcus Leon
Ja, Zusammenführen ist Codierung und sollte nicht beschönigt werden. Zum ersten Teil könnten wir es wahrscheinlich mit Ihrer hg statAusgabe herausfinden , aber könnte es sein, dass Ihr aktuelles Arbeitsverzeichnis nicht das Repo-Stammverzeichnis ist? Dies würde es hg add ermöglichen, hinzugefügt zu sagen, aber abrufen, nicht verfolgt. Nur eine Vermutung.
Ry4an Brase
29

Ich habe das umgangen, indem ich gerannt bin hg update --clean

azeroth12
quelle
11

Akzeptieren Sie einfach den Fehlerdialog und kreuzen Sie an Discard local changes, no backup

Geben Sie hier die Bildbeschreibung ein

Und Sie sollten gut sein, es wird alle nicht verfolgten lokalen Dateien überschreiben ...

Matas Vaitkevicius
quelle
8

Ich habe Ry4ans Antwort (Löschen der Datei) ausprobiert und es hat immer noch nicht funktioniert, also habe ich eine Bereinigung durchgeführt und alle Spuren entfernt, so dass es danach funktioniert hat. Nur für den Fall, dass jemand nach einer alternativen Lösung sucht.

Justin Pihony
quelle
hg purge schien bei mir nicht zu funktionieren, es hat nichts gelöscht und ich bekomme immer noch die gleiche Nachricht
Naguib Ihab
3

Wenn Sie TortoiseHG verwenden, können Sie im Update-Fenster die Option "Lokale Änderungen verwerfen, keine Sicherung" aktivieren.

Owen Pauling
quelle