2015-06-28 8 views
6

stavo testando sulla mia macchina locale (OS-X 10.10), che utilizza un caso del file system insensitive (HFS + [CI]) - quando ho ripristinato alla testa:I riferimenti GIT sono sempre senza distinzione tra maiuscole e minuscole?

$ git reset head --hard 
$ git reset HEAD --hard 

e

$ git checkout 4f2c 
$ git checkout 4F2C 

Hanno lo stesso identico risultato. Per quanto ne so, GIT memorizza i riferimenti all'interno di ./git/refs ma la sensibilità dei casi del file system sottostante influisce sui risultati?

Otterrei gli stessi risultati su un file system sensibile al maiuscolo/minuscolo?

risposta

6

Sì, non fanno distinzione tra maiuscole e minuscole. No, un file system sensibile al maiuscolo/minuscolo non ha importanza. Perché git refs fanno parte di un SHA-1 hash e quelle sono cifre esadecimali (base-16, sembrano solo lettere). Almeno per il commit-id. Come indicato da @EdwardThomson nei commenti, un ref-name può essere (o meno) sensibile alla distinzione tra maiuscole e minuscole (che dipende dal file system sottostante e dal fatto che il meccanismo di archiviazione sia libero o impacchettato).

+4

L'ID di commit che è il * target * di un ref è una stringa esadecimale, ma il nome di riferimento stesso è una stringa (ad esempio "master"). Può essere trattato caso sensibile (o meno) a seconda del meccanismo di memorizzazione (libero o affollato) e della semantica del filesystem sottostante. –

+0

@EdwardThomson Grazie per il * estremamente * commento costruttivo, modificato la mia risposta. –

5

No, non si otterrebbero gli stessi risultati su un filesystem sensibile al maiuscolo/minuscolo. Se è stato eseguito:

git reset branch --head 

su un filesystem sensibile caso, allora che non è la stessa cosa che lanciare:

git reset BRANCH --hard 

Dal momento che i riferimenti sono spesso memorizzati sul filesystem (nella cartella .git/refs/heads), la sensibilità caso del filesystem entra in gioco. Su un filesystem sensibile al maiuscolo/minuscolo, .git/refs/heads/branch e .git/refs/heads/BRANCH sono due file diversi.

Si noti che anche su un filesystem senza distinzione tra maiuscole e minuscole, i riferimenti possono finire "impacchettati", in un file che specifica il riferimento per riga. In questo caso, i tuoi riferimenti sono sempre case sensitive, indipendentemente dal tuo filesystem.

+0

C'è una logica semplice quando i riferimenti sono "impacchettati"? – max

Problemi correlati