hg zeigt geänderte Dateien, die unverändert sind, warum könnte das so sein?

8

Meine Frage ist folgende: Was könnte dazu führen, dass Mercurial (über "status" oder TortoiseHgWorkbench) Dateien als "Modified" anzeigt, wenn sie unverändert sind?

Hier ist die Situation: Ich habe ein Repository lokal für einen Linux-Rechner. Ich arbeite nur mit dem Repository auf dem Linux-Rechner. Ich habe jedoch eine genaue Kopie des Repository (und der Arbeitsdatei) auf einem Windows-Rechner (Ich synchronisiere über ein Flash-Laufwerk, mit BeyondCompare). Nach meiner besten Erinnerung, rufe ich nie Mercurial auf dem Windows-Rechner, obwohl es dort installiert ist.

Ich wollte vor kurzem einen Commit auf dem Linux-Rechner durchführen, und viele Dateien, die ich nicht erwartet hatte, wurden als "Modified" aufgelistet. Ich habe ein visuelles Diff (mit BeyondCompare) gemacht, das anzeigt, dass die Kopie des Arbeitsverzeichnisses "binär identisch" mit dem Elternteil im Repository ist. TortoiseHgWorkbench zeigt die Datei "modifiziert" und das Differenzen-Fenster zeigt die gesamte Datei in grün an (als ob das Repository eine leere Datei hätte, denke ich). In der fraglichen Datei ist das Dateidatum auf dem Dateisystem Monate alt, während mein letztes Commit (ich übergebe alle geänderten Dateien) vor ein paar Wochen war. Einige unveränderte Dateien werden als "modifiziert" angezeigt, einige jedoch nicht. Ich habe dieses Verhalten vorher noch nie gesehen, daher bin ich etwas verwirrt.

Ich habe "hg verify" im Repository ausgeführt und es hat nichts interessantes bemerkt.

Ich denke, es ist keine große Sache, da alle Dateien im Arbeitsverzeichnis intakt sind, und wenn ich die Dateien festschreiben würde (obwohl sie unverändert sind), bin ich mir nicht sicher, dass irgendetwas verletzt würde. Aber ich bin gespannt, was passiert ist.

Vielen Dank im Voraus für Ideen, wonach Sie suchen sollten.

[BEARBEITEN]

Immer noch keine Ursache gefunden (Dateiberechtigungen und Zugriffsdaten unverändert), aber die Antwort von @ barjak wies mich in die Richtung, in der ich das gefunden habe: Warum zeigt" hg status "geänderte Dateien an, wenn" hg diff -g "nicht funktioniert? (Ein Elternteil) . Meine Situation ist die gleiche wie dort beschrieben (sowohl hg diff als auch hg diff --git zeigen nur Dateien an, die sich wirklich geändert haben, während der hg-Status einige unveränderte Dateien anzeigt). BTW Ich benutze Hg 2.6.

[BEARBEITEN]

Wenn es für jemanden hilfreich ist, hier ist, wie ich zurück zu einem normalen Repository kam:

in einer Shell:

%Vor%

in tortoiseHgWorkbench

%Vor%

in einer Shell:

%Vor%

bereinigen Sie das Arbeitsverzeichnis (revert --alles erzeugt einige defekte Dateien. Setzen Sie auch einige Dateidaten zurück (Ich bin die einzige Person, die dieses Repository verwendet, und Dateidaten sind für mich nützlich. Ja, es gibt eine Hg-Erweiterung zum Wiederherstellen Dateidaten, aber ich habe es noch nicht installiert).

Dieser Prozess hat mich alle wieder aufgereiht.

    
adt_Jeff 03.10.2013, 19:54
quelle

2 Antworten

10

Eine Datei kann als geändert markiert werden, wenn auch die Unix-Berechtigungen geändert werden. Probieren Sie hg diff -g aus, um nach den Berechtigungen zu suchen.

    
barjak 03.10.2013, 21:53
quelle
2

Nur eine Umkehrung zu tun hat mir nicht geholfen. Die Dateien bleiben im Modified-Zustand, obwohl ich sie übernommen habe. Wenn ich es nochmal versuchen wollte. Also habe ich nur die Dateien gelöscht, die als verändert angezeigt wurden (wenn nötig ein Backup machen), was dazu führte, dass alle Dateien mit einem! daneben, als ich lief

%Vor%

Danach habe ich den folgenden Befehl ausgeführt, um die Dateien zurückzusetzen (die bereits eingecheckt waren):

%Vor%

und das hat das Problem behoben

    
RPM 16.11.2015 21:36
quelle

Tags und Links