web-dev-qa-db-fra.com

Qu'est-ce que le "mode de fichier" de git?

Pour quelque chose qui existe dans CHAQUE repo git sur terre ... il n'y a certainement pas beaucoup d'informations sur filemode. Les 100 premières réponses de google ont été partout, et une question avec ce titre n'a pas été posée .. alors voilà ... Qu'est-ce que filemode? Pour moi, c'est dans chaque repo ./git/config fichier, vers le haut, un lá ...

 [core]
    filemode = true

Qu'Est-ce que c'est? Qu'est-ce que ça veut dire? At-il un rapport avec

    bare = false

que je n'ai pas vraiment non plus ... J'utilise gitcomme un fo, et je sais quoi n million d'autres de git's sans fin, et à mon humble avis, concocté arbitrairement/demi-cerveaconfig les paramètres font .. mais pas celui-ci ... Je suis sûr que c'est une chose simple (peut-être liée aux autorisations? ou la guerre déclenche un indicateur de changement ?), donc si vous en savez plus sur la façon de manipuler le réglage/et à quel effet .. ce serait bien de savoir ...

31
Alex Gray

Un dépôt nu git ( détaillé ici ) n'a aucun rapport avec le mode de fichier.
.

qu'est-ce qu'un "faux" fichier? et qu'est-ce qui constitue un répertoire "fonctionnel"?

Il n'y a pas de "faux" fichier. C'est juste qu'un dépôt nu ne contient que les fichiers d'administration et de contrôle de git, pas le fichier de données réel avec lequel vous pouvez travailler et modifier.
Ceux-ci sont extraits dans un "répertoire de travail", lorsque le dépôt n'est pas nu.

Le git config page de manuel

core.fileMode

Si faux, les différences de bits exécutables entre l'index et l'arborescence de travail sont ignorées; utile sur les systèmes de fichiers cassés comme FAT (File Allocation Table) .
Voir git-update-index .

La commande honore core.filemode variable de configuration.
Si votre référentiel se trouve sur un système de fichiers dont les bits exécutables ne sont pas fiables, cela doit être défini sur false.
Cela fait que la commande ignore les différences dans les modes de fichier enregistrés dans l'index et le mode de fichier sur le système de fichiers s'ils diffèrent uniquement sur le bit exécutable.
Sur un système de fichiers aussi malheureux, vous devrez peut-être utiliser git update-index --chmod=.

Pour moi, c'est dans chaque repo ./git/config fichier, vers le haut,

Moi aussi, mais sous Windows, c'est toujours:

git config --local core.filemode
false

N'oubliez pas que git n'enregistre que deux modes de fichiers:

  • 644
  • 755
38
VonC

filemode set true signifie que les modifications des autorisations du mode fichier sont considérées comme des modifications.

bare set true signifie que le répertoire n'est pas un répertoire de travail (pas de vrais fichiers).

9
cforbish