Comme Torek l'a mentionné, vous ne voulez probablement pas faire cela. Ce n'est généralement pas une bonne idée de partager un référentiel entre les systèmes d'exploitation.
Cependant, il est possible, tout comme il est possible de partager un dépôt entre Windows et le sous-système Windows pour Linux. Vous pouvez essayer de définir core.checkStat
à minimal
, et si cela ne suffit pas, core.trustctime
à false
. Cela conduit à la quantité minimale d'informations stockées dans l'index, ce qui signifie que les données seront aussi portables que possible.
Notez cependant que si votre référentiel contient des liens symboliques, il est probable que rien de ce que vous ferez n'empêchera les actualisations. Linux considère généralement que la longueur d'un lien symbolique est sa longueur en octets, et Windows considère qu'il prend un ou plusieurs blocs de disque, il y aura donc une différence de taille entre les systèmes d'exploitation. Cela n'est pas évitable, car la taille est l'un des attributs utilisés dans l'index qui ne peut pas être désactivé.
Vous avez tout à fait raison :
-
La chose que vous utilisez ici, que Git appelle de diverses manières l'index , la zone de préparation , ou le cache , contient en fait des données de cache.
-
Les données de cache qu'il contient sont le résultat d'appels système.
-
Les données d'appel système renvoyées par un système Linux sont différentes à partir des données d'appel système renvoyées par un système Windows.
Par conséquent, un changement de système d'exploitation invalide complètement toutes les données du cache.
... comment puis-je utiliser définir le fichier d'index pour un système différent ?
Votre meilleur pari ici est de ne pas le faire du tout. Créez deux arbres de travail différents, ou peut-être même deux référentiels différents. Mais, si c'est plus douloureux que cette autre alternative, essayez ces idées :
Le fichier d'index réel que Git utilise simplement par défaut .git/index
. Vous pouvez spécifier un différent fichier en définissant GIT_INDEX_FILE
vers un autre chemin (relatif ou absolu). Vous pourriez donc avoir .git/index-linux
et .git/index-windows
, et définissez GIT_INDEX_FILE
en fonction du système d'exploitation que vous utilisez.
Certaines commandes Git utilisent un index temporaire. Ils le font en définissant GIT_INDEX_FILE
eux-mêmes. S'ils un -réglez-le après, ils peuvent accidentellement utiliser .git/index
À ce point. Donc une autre option est de renommer .git/index
à l'écart lors du changement de système d'exploitation. Gardez un .git/index-windows
et .git/index-linux
comme avant, mais renommez celui qui est utilisé en .git/index
pendant son utilisation, puis renommez-le en .git/index-name
avant de passer à l'autre système.
Encore une fois, je ne recommande pas d'essayer l'une ou l'autre de ces méthodes, mais elles sont susceptibles de fonctionner, plus ou moins.