2016-05-12 5 views
1

J'ai un dépôt git dont les fins de ligne des fichiers doivent être CRLF ou LR sur la caisse en fonction du fichier spécifique. Par exemple, je veux que tous les fichiers * .sh soient extraits avec les fins de ligne LR alors que tous les fichiers * .bat avec CRLF.Dépôt Git avec les deux fichiers CRLF et LF?

J'ai essayé de retirer ceci sans résultat, suivant est mon .gitattributes fichier:

* text=auto 
# 
# Declare files that will always have CRLF line endings on checkout. 
# 

*.sh text eol=LF 

# 
# Declare files that will always have LF line endings on checkout. 
# 

*.bat text eol=CRLF 

# 
# Denote all files that are truly binary and should not be modified. 
# 

*.zip binary 
*.tar binary 
*.exe binary 
*.dll binary 
*/dropbear binary 
*update-binary binary 

Quand j'ouvre un fichier .sh ou un fichier .bat les fins de ligne sont CRLF. Qu'est-ce que je fais mal?

Remarque: Je développe sur un ordinateur Windows.

EDIT: système, configuration globale et locale

Système:

core.symlinks=false 
core.autocrlf=true 
color.diff=auto 
color.status=auto 
color.branch=auto 
color.interactive=true 
pack.packsizelimit=2g 
help.format=html 
http.sslcainfo=/bin/curl-ca-bundle.crt 
sendemail.smtpserver=/bin/msmtp.exe 
diff.astextplain.textconv=astextplain 
rebase.autosquash=true 

mondial:

merge.tool=kdiff3 
diff.guitool=kdiff3 
core.editor="C:/Program Files (x86)/GitExtensions/GitExtensions.exe" fileeditor 
core.autocrlf=true 
credential.helper=!'C:\Users\XXXX\AppData\Roaming\GitCredStore\git-credential-winstore.exe' 
user.name=xxxxx.xxxx 
[email protected] 
filter.lfs.clean=git-lfs clean %f 
filter.lfs.smudge=git-lfs smudge %f 
filter.lfs.required=true 
push.default=matching 

Local:

core.repositoryformatversion=0 
core.filemode=false 
core.bare=false 
core.logallrefupdates=true 
core.symlinks=false 
core.ignorecase=true 
core.hidedotfiles=dotGitOnly 
remote.origin.url=https://github.com/XXXXXX/xxxxxx.git 
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/* 
branch.master.remote=origin 
branch.master.merge=refs/heads/master 
branch.v2.10.0.remote=origin 
branch.v2.10.0.merge=refs/heads/v2.10.0 
branch.v2.10.1.remote=origin 
branch.v2.10.1.merge=refs/heads/v2.10.1 

En outre, GitHub's documentation énonce ce qui suit:

En option, vous pouvez configurer la façon dont Git gère les fins de ligne sur une base par dépôt en configurant un fichier spécial de .gitattributes. Ce fichier est validé dans le référentiel et remplace le paramètre core.autocrlf d'un individu, garantissant un comportement cohérent pour tous les utilisateurs, quels que soient leurs paramètres Git.

EDIT 2:

Si je mets core.autocrlf-false et commenter toutes les lignes de .gitattributes sont ensuite ouverts les deux fichiers .sh et .bat avec des fins de ligne LF.

Répondre

3

La valeur d'attribut eol, comme la plupart de Git, est sensible à la casse. Vous voulez:

*.sh eol=lf 
*.bat eol=crlf 
+0

Une "bonne réponse", un +1 et si possible je vous donnerais un baiser. Tu as résolu un problème qui m'a fait perdre de nombreuses heures! – Storo

+0

omg .. J'ai eu le même problème quand j'ai utilisé .gitattributes pour la première fois, et j'ai complètement oublié que – quetzalcoatl