2012-03-29 11 views
57

Wie man fromotherposts lesen kann, hat Git End-of-Line-Normalisierung seine Vor- und Nachteile. Ich habe ein bestimmtes Windows-Projekt, bei dem ich denke, dass es am besten ist, die End-of-Line-Normalisierung ganz zu deaktivieren. Das heißt, ich möchte alle Zeilenumbrüche (von denen die meisten CRLF sind) intakt lassen, anstatt sie auf LF - nur hinter den Kulissen - normalisieren zu lassen, und ich möchte, dass sich diese Änderung auf alle Klone des Repositorys auf allen Maschinen auswirkt. Die Frage ist der effektivste Weg, dies zu tun.Wie zu Git-End-of-Line (CRLF zu LF) über alle Klone/Maschinen zu deaktivieren?

Die meisten Diskussionen über Git End-of-Line-Normalisierung sind in Bezug auf core.autocrlf, und ich konnte mein Ziel erreichen, indem Sie core.autocrlf=false setzen. Dies ist jedoch eine git-config-Einstellung, und ich glaube, man muss das für jeden Rechner separat einstellen. Wenn das stimmt, scheint das fehleranfällig zu sein, besonders da das msysgit Installationsprogramm einen in die Einstellung core.autocrlf=true führt.

Antwort

101

Der beste Weg, um zu vermeiden, core.autocrlf separat einstellen auf jeder Maschine der Kontrolle eine .gitattributes Datei in das Repository zu sein scheint

* -text 

Oder die einzige Zeile enthält, wenn Sie eine ältere Version von Git haben dann

Dies sagt Git, dass für alle Pfade (also die *), sollte keine End-of-Line-Normalisierung versucht werden. Soweit ich das beurteilen kann, sollte dies keine weiteren Nebenwirkungen haben. Insbesondere sollte es nicht ändern, wie Diffs erzeugt werden (dies hat das separate Attribut diff/-diff) oder wie Merges gehandhabt werden (dies hat ein separates Attribut merge/-merge).

Für weitere Informationen, schlage ich vor, diese Ressourcen:

  1. Die gitattributes Dokumentation (git help attributes oder an online copy), die im Detail beschreibt beide, wie End-of-line Normalisierung funktioniert und die besonderen Auswirkungen verschiedenen Attribute. (Wahrscheinlich sind die meisten relevant sind text, crlf, diff, merge und binary.)
  2. Git Mailingliste Thread Is the "text" attribute meant only to specify end-of-line normalization behavior, or does it have broader implications? (30. März 2012), die auf die Bedeutung verschiedener Attribute erweitert, und stellt klar, dass -text nicht einfach bedeutet " Dies ist eine Binärdatei ".
+0

Der Link in Ihrem Beitrag ist tot. Vielleicht könntest du das stattdessen benutzen? http://git.661346.n2.nabble.com/Is- the-quot-text-quot-attribute-meant-only-to-specify-end-of-line-normalization-behavior-or-does-it- -td7420001.html – Antimony

Verwandte Themen