Perché Git non ha impostato il tempo del file?

4

Git per impostazione predefinita non ha la logica per impostare file-time di conseguenza quando i file vengono sincronizzati con l'origine. Ignora solo il tempo di file dell'origine e IMO questo è un comportamento davvero fastidioso.

Non ha senso che il file abbia una data di modifica dell'ultimo commit (remoto o locale), piuttosto che l'ultima volta che è stata recuperata dal server?

GitHub mantiene l'ultimo tempo di commit per ogni file, in base alla loro cronologia. Perché Git% nontouch ogni file al loro ultimo tempo di commit quando i file vengono estratti dal server?

So che è possibile modificare la configurazione di Git per ottenere qualcosa di simile, ma quello che sto chiedendo è perché Git non imposta il tempo del file sul tempo registrato nella cronologia dei commit di default .

Se esiste un motivo particolare per cui Git non lo fa in modo predefinito (a parte una caratteristica che nessuno ha ritenuto utile implementarlo), sono interessato a conoscere la decisione contro l'implementazione di questo.

    
posta DRS David Soft 08.06.2017 - 00:49
fonte

2 risposte

17

È perché romperebbe ogni sistema di build come make , maven , gradle , ecc. che dipende dai tempi di modifica dei file per sapere cosa deve essere ricostruito. Se un git checkout o un git pull richiama in commit più vecchi dell'ultimo eseguibile che hai creato, darebbe a quei file un timestamp più vecchio. make pertanto non li rileverà come dipendenza aggiornata e non includerà quelli in una nuova build senza prima eseguire un make clean . Questo è super fastidioso.

C'è git log per trovare l'ultima volta che un file è stato modificato nel controllo di versione e ls per trovare l'ultima volta che è stato modificato sul tuo disco locale, e risulta che ci sono buone ragioni per tenerli separati.

    
risposta data 08.06.2017 - 04:05
fonte
1

Onestamente, penso che sia perché l'obiettivo era quello di rendere Git il più veloce possibile. Quindi, invece di aggiungere cose extra, l'attenzione era (ed è tuttora) su come effettuare il commit e il patching il più velocemente possibile.

Tuttavia non penso che sia mai stato esplicitamente dichiarato.

    
risposta data 08.06.2017 - 01:02
fonte

Leggi altre domande sui tag