Come ha detto torek, probabilmente non vorrai farlo. Generalmente non è una buona idea condividere un repository tra sistemi operativi.
Tuttavia, è possibile, proprio come è possibile condividere un repository tra Windows e il sottosistema Windows per Linux. Potresti provare a impostare core.checkStat
a minimal
, e se ciò non è sufficiente, core.trustctime
a false
. Ciò porta alla quantità minima di informazioni memorizzate nell'indice, il che significa che i dati saranno il più portabili possibile.
Nota, tuttavia, che se il tuo repository ha collegamenti simbolici, è probabile che nulla di ciò che fai impedirà gli aggiornamenti. Linux in genere considera la lunghezza di un collegamento simbolico come la sua lunghezza in byte e Windows considera che prenda uno o più blocchi del disco, quindi ci sarà una discrepanza di dimensioni tra i sistemi operativi. Ciò non è evitabile, poiché la dimensione è uno degli attributi utilizzati nell'indice che non può essere disabilitato.
Hai completamente ragione qui:
-
La cosa che stai usando qui, che Git chiama in vari modi index , l'area di sosta o la cache , contiene infatti i dati della cache.
-
I dati della cache che contiene sono il risultato di chiamate di sistema.
-
I dati della chiamata di sistema restituiti da un sistema Linux sono diversi dai dati della chiamata di sistema restituiti da un sistema Windows.
Quindi, un cambio di sistema operativo invalida completamente tutti i dati della cache.
... come posso utilizzare l'impostazione del file indice per un sistema diverso?
La soluzione migliore qui è non farlo affatto. Crea due diversi alberi di lavoro, o forse anche due diversi repository. Ma, se questo è più doloroso di quest'altra alternativa, prova queste idee:
L'effettivo file di indice che Git utilizza semplicemente ha come valore predefinito .git/index
. Puoi specificare un diverso file impostando GIT_INDEX_FILE
a qualche altro percorso (relativo o assoluto). Quindi potresti avere .git/index-linux
e .git/index-windows
e imposta GIT_INDEX_FILE
in base al sistema operativo in uso.
Alcuni comandi Git usano un indice temporaneo. Lo fanno impostando GIT_INDEX_FILE
loro stessi. Se non -set in seguito, potrebbero usare accidentalmente .git/index
a questo punto. Quindi un'altra opzione è rinominare .git/index
fuori mano quando si cambia sistema operativo. Mantieni un .git/index-windows
e .git/index-linux
come prima, ma rinomina quello in uso in .git/index
mentre è in uso, quindi rinominalo in .git/index-name
prima di passare all'altro sistema.
Ancora una volta, non consiglio di provare nessuno di questi metodi, ma è probabile che funzionino, più o meno.