Wie verhindere ich, dass NULL-Bytes in meinem gesamten GIT-Repository erscheinen und Nachrichten committen?

8

Ich habe eine relativ saubere Installation von Mac OS X Mavericks 10.9 mit Git Version 1.8.5.1; Meine Dateien befinden sich auf einer gemounteten SMB-Freigabe, und ich kann nicht mehr ordnungsgemäß mit meinen GIT-Repositorys arbeiten, da NULL-Bytes (\ 0) weiterhin in allen versionsgesteuerten Dateien angezeigt werden ... und sogar in Dateien, die im laufenden Betrieb generiert werden von GIT.

Die Eingabe von git commit -m "Test message" von Hand gibt mir:

%Vor%

Und wenn ich stattdessen git commit versuche, sieht die Standard-Commit-Nachricht in der pico -Ansicht folgendermaßen aus:

%Vor%

Eine Weile lang funktionierte das manuelle Entfernen dieser NULL-Bytes am Ende, und ich konnte committen, aber in bestimmten Intervallen funktioniert das auch nicht mehr (der Fehler ist derselbe wie oben), und ich bin gezwungen, meinen gesamten zu löschen Repo, klonen Sie es erneut und wiederholen Sie alles, was ich versuchen wollte.

Das frische Repository funktioniert eine Weile lang normal, aber irgendwann schleichen sich die NULL-Zeichen ein und ich habe wieder das gleiche Problem.

Die gleichen NULL-Bytes (wie oben) erscheinen am Anfang und am Ende von Dateien, die ich modifiziere, was dazu führt, dass GIT sie als Binärdateien behandelt, bis ich vi manuell benutze, um die NULL-Zeilen zu löschen.

  • Hat jemand anderes dies erfahren und / oder eine Lösung gefunden?
  • Was könnte das verursachen?

Ich würde mich über jede Hilfe freuen, die Sie anbieten können.

    
GrubLord 20.12.2013, 05:02
quelle

7 Antworten

11

Es sieht so aus, als sei dies ein Problem mit OS X 10.9 Mavericks und (einigen?) SMB-Shares. Zurzeit gibt es keine Lösung oder Abhilfe.

Einige Leute haben vorgeschlagen, eine Verbindung zur Freigabe mit cifs: // anstelle von smb: // herzustellen, aber das scheint das Problem NICHT zu lösen.

Das Problem kann wie folgt reproduziert werden:

%Vor%

Wenn Sie also mit dem Terminal eine Datei mit einer kleineren Datei überschreiben, erhalten Sie diese NUL-Zeichen am Ende. Es kann auch andere Möglichkeiten geben, dass die Datei mit diesen NUL-Zeichen angehängt oder vorangestellt wird.

Eine Reihe von Menschen beschweren sich darüber, zum Beispiel: Ссылка

Hier ist die Schlussfolgerung von dieser Seite:

  

Ich kann die Nullzeichen in Komodo Edit und Aptana Studio replizieren, daher scheint dies kein spezielles Problem von Netbeans zu sein und hängt wahrscheinlich mit dem NAS / SMB-Problem zusammen.

     

Ich habe die smb1-Verbindung erzwungen, aber das machte keinen Unterschied. Selbst wenn ich die Freigaben austausche und wieder mit cifs: // verbinde und eine Datei erstelle, modifiziere und speichere, ist sie immer noch beschädigt.

     

Es sieht so aus, als würde Apple das Problem lösen müssen, es sei denn, jemand kann einen brauchbaren Workaround finden.

Hoffentlich wird Apple dieses Problem in Kürze beheben. Bis dahin könnten Sie möglicherweise Double Commander oder ein anderes Programm verwenden, das seinen eigenen SMB-Stack implementiert.

    
GrubLord 02.01.2014, 00:12
quelle
2

Ich habe das gleiche Problem seit der Aktualisierung auf Mavericks. Es passiert mit Git-Repositories, die auf SMB-Laufwerken bei jedem Commit gespeichert sind, das eine kürzere Nachricht als das vorherige Commit aufweist:

%Vor%

Ich habe bemerkt, dass die Commit-Nachricht in der Datei COMMIT_EDITMSG gespeichert wird, das heißt, wenn die Null-Bytes (wie von den anderen Postern beschrieben) enden. Das Löschen der Datei vor dem Commit hat Folgendes bewirkt:

%Vor%

Ich hoffe, dass diese Lösung auch für euch funktioniert. Es hat mich verrückt gemacht.

    
Markus 23.03.2014 23:33
quelle
0

Git nimmt eine UTF-8-Kodierung für Commit-Nachrichten an, ich nehme an, das ist irgendwie anders auf Ihrem System, und deshalb sieht es das \ 0-Byte. Versuchen Sie Folgendes:

%Vor%     
mockinterface 20.12.2013 10:04
quelle
0

Ich bin mir nicht sicher, ist es möglich, dass ein commit-msg-Hook dieses Verhalten verursacht?

Obwohl Sie sagen, dass Sie das Repository erneut klonen, kann der Hook innerhalb des Repos neu generiert werden.

    
Zaka Elab 20.12.2013 10:18
quelle
0

Ich habe genau dieses Problem mit Mercurial über eine SMB-Freigabe anstelle von Git erlebt. Es war eine saubere Installation von Mavericks, aber die Verbindung zu einer alten VM mit Ubuntu - mit der ich mich in den letzten paar Jahren ohne Probleme verbunden hatte. Die VM enthält einen lokalen Entwicklungsserver.

Immer, wenn ich versuchte, eine Datei kleiner zu machen, löschte sie das Ende der Datei mit leeren Bytes, was Mercurial dazu brachte, die Datei als Binärdatei zu sehen (ich glaube Mercurial hat sie als UTF-16 gelesen, aber ich bin mir nicht 100% sicher)

Es betrifft nur einige SMB-Freigaben und schließlich konnte ich das Problem bis in die smb.conf-Datei verfolgen.

Ich habe das Problem gelöst, indem ich die Datei conf durch eine Arbeitsdatei von einer anderen VM ersetzt und die Pfade und Benutzer aktualisiert habe.

Wenn ich testparm /etc/samba/smb.conf starte, ist dies die Ausgabe meiner Arbeitsdatei:

%Vor%

Ich weiß immer noch nicht genau, welche Einstellungen das Problem waren - wenn ich Zeit habe, das herauszufinden, werde ich diesen Beitrag aktualisieren.

Auf dem Weg habe ich alles ausprobiert wie zum Beispiel Mavericks zu benutzen, um smb1 statt smb2 zu verwenden, aber das Umschalten zu smb1 machte keinen Unterschied - es wurde smb.conf aktualisiert, das das Problem behob und ich benutze jetzt smb2.

    
John 13.01.2014 14:46
quelle
0

Ich hatte OSX El Capitan mit einem SMB-Anteil von CentOS lange Zeit benutzt und plötzlich fing ich an, NUL-Zeichen am Ende meiner Dateien zu bekommen, wenn ich sie verkürzte und sie speicherte. Ich habe verschiedene Fixes durchgesehen. Das Problem wurde behoben, indem SMB mit dem folgenden Code neu installiert wurde.

%Vor%

Danach habe ich neu gestartet und alles hat wieder richtig funktioniert. Ich weiß nicht, wo die Änderung von OSX oder CentOS kam. Das hat es für mich gelöst.

    
Andrew Threadgill 07.09.2016 17:19
quelle
-1

Deaktivieren Sie die Option 'unix extensions = off' in Ihrer Samba-Konfigurationsdatei:

%Vor%

(es funktioniert auf meinem debian-machine mit Samba 2: 3.5.6)

    
jack88 06.01.2014 16:43
quelle

Tags und Links