La mia domanda è questa: cosa potrebbe causare Mercurial per indicare (tramite "status" o TortoiseHgWorkbench) i file come "Modificati" quando sono invariati?hg mostra i file modificati che sono invariati, perché potrebbe essere?
Ecco la situazione: ho un repository locale su una macchina Linux. Lavoro solo con il repository sulla macchina Linux. Tuttavia, ho una copia esatta del repository (e del file di lavoro) su una macchina Windows (mi sincronizzo tramite un'unità flash, usando BeyondCompare). Al mio miglior ricordo, non invoco mai mercurial sulla macchina Windows, sebbene sia installata lì.
Recentemente ho voluto eseguire un commit sulla macchina Linux e molti file che non mi aspettavo di visualizzare erano elencati come "Modificati". Ho fatto un diff visivo (usando BeyondCompare) che indica che la copia della directory di lavoro è "binaria identica" al genitore nel repository. TortoiseHgWorkbench mostra il file "modificato" e la finestra delle differenze mostra l'intero file, in verde, (come se il repository avesse un file vuoto, immagino). Sul file in questione, la data del file sul file system è vecchia di un mese, mentre il mio ultimo commit (ho commesso tutti i file modificati) era un paio di settimane fa. Alcuni file non modificati appaiono come "modificati", ma altri no. Non ho mai visto questo comportamento in precedenza, quindi sono un po 'confuso.
Ho eseguito "hg verify" nel repository e non ha rilevato nulla di interessante.
Immagino che non sia un grosso problema dato che tutti i file nella directory di lavoro sono intatti, e se dovessi commettere i file (anche se sono invariati), non sono sicuro che qualcosa sarebbe danneggiato. Ma sono desideroso di capire cosa è successo.
Grazie in anticipo per qualsiasi idea su cosa cercare.
[EDIT]
ancora non hai trovato una causa principale (permessi dei file e le date di accesso invariati), ma la risposta di @ barjak mi ha segnalato nella direzione in cui ho trovato questo: Why does "hg status" show changed files when "hg diff -g" doesn't? (One parent). La mia situazione è la stessa descritta qui (sia hg diff che hg diff --git mostrano solo i file che sono realmente cambiati, mentre lo stato di hg mostra alcuni file non modificati). BTW sto usando Hg 2.6.
[EDIT]
Se è utile a nessuno, ecco come sono tornato in un repository normale:
in un guscio:
cd src
hg diff --git > ../junk
grep "\-\-git" ../junk
in tortoiseHgWorkbench
uncheck all files marked "M"
check all files indicated in the grep results above (i.e., have real diffs)
commit
in una shell:
hg revert --all
quindi pulire la directory di lavoro (ripristinare - tutti hanno generato alcuni file defunti. Ripristino anche alcune date dei file (sono l'unica persona che utilizza questo repository e le date dei file sono utili per me. Sì, c'è un'estensione Hg per ripristinare le date dei file ma non l'ho ancora installato).
Questo processo mi ha fatto ripartire tutti.
In BC3, in Sessione-> Impostazioni sessione, nella scheda Confronto è impostato su "Confronto binario" o "Basato su regole". Che tipo di file stai confrontando? – Edward
Il confronto è impostato su "Basato su regole". Il file è un file sorgente C++. Il risultato BC3 di "binario stesso" è effettivamente corretto. Ora vado a considerare la possibilità di "permessi" come suggerisce @barjak. (la prima ispezione sembra che le autorizzazioni non siano cambiate, ma scaverò un po 'di più ...) –
Per me questo succede se devo usare Windows di Microsoft. Se lo uso per il commit, quindi se mai aggiornare a questa revisione, quindi i file ci vengono mostrati modificati. (Forse MS Windows sta salvando qualcosa sul repository, che non è/o non può essere rappresentato da Unix). –