2017-06-28 1 views
1

Je suis en train de traiter des fichiers sans extensions .gitattributes:fichiers sans extension dans .gitattributes

* text=auto 
*. eol=lf 
.py eol=lf 

*. qui ne contribue pas. git check-attr --all -- ./foo sorties:

./foo: texte: auto

Comment cela peut-il faire?

+0

'* .' signifie fichiers qui ont une période comme dernier caractère. "Extensions" est une notion humaine stupide, pas quelque chose que les ordinateurs font. :-) Donc un fichier nommé 'foo' est juste" un fichier nommé 'foo'" ici, il n'y a pas de notion de l'existence d'une extension. (Cela était différent dans les anciens jours de FLiename DOS 8.3, dans MS-DOS et CP/M au moins, où les noms étaient vraiment stockés sous le nom "name, extension", mais cela a cessé d'être vrai dans les années 1990.) – torek

+0

torek Je suppose que cela dépend totalement de la façon dont un logiciel particulier analyse cette idée humaine idiote. Cela explique pourquoi cela peut ne pas fonctionner dans Git mais pas comment il devrait être réparé. – estus

+0

D'où le commentaire plutôt que de répondre. Je pense que pour le moment vous êtes coincé avec la méthode du zigame. Dans Mercurial, vous pouvez utiliser des expressions régulières (qui sont plus puissantes que la notation de globes de fichiers et donc capables de détecter les noms de fichiers qui ne contiennent aucun point), bien que Mercurial lui-même n'ait pas l'équivalent de '.gitattributes'. Mais Git n'a pas de support d'expression régulière sur les chemins. – torek

Répondre

2

Je pense que vous devez définir la valeur que vous voulez tous les fichiers, puis à distance l'attribut pour les fichiers avec l'extension:

* text=auto eol=lf 
*.* -eol # or set another default value 
*.py eol=lf 

Il donnera le résultat:

$ git check-attr --all -- file 
file: text: auto 
file: eol: crlf 
$ git check-attr --all -- foo.py 
foo.py: text: auto 
foo.py: eol: lf 
$ git check-attr --all -- bar.txt 
bar.txt: text: auto 
bar.txt: eol: unset 
+0

Je dois définir 'eol = lf' uniquement sur' * .' et '* .py'. Pas sur '*. *'. C'est pourquoi la question a été posée. – estus

+0

Oh, mon mauvais. Je vais réparer ma réponse. – zigarn