如何防止NUL字节出现在我的GIT存储库中并提交消息?

Gru*_*ord 8 git macos smb

我有一个相对干净的安装Mac OS X Mavericks 10.9运行git版本1.8.5.1; 我的文件在已安装的SMB共享上,我无法再使用我的GIT存储库,因为NULL字节(\ 0)不断出现在我的所有版本控制文件中......甚至在动态生成的文件中也是如此通过GIT.

git commit -m "Test message"手工打字,给我:

error: a NULL byte in commit log message not allowed.
fatal: failed to write commit object
Run Code Online (Sandbox Code Playgroud)

如果我尝试git commit改为,则pico视图中显示的默认提交消息如下所示:

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch feature/centos_support
# Your branch is up-to-date with 'origin/feature/centos_support'.
#
# Changes to be committed:
#       modified:   README.md
#
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
Run Code Online (Sandbox Code Playgroud)

有一段时间,在最后手动删除那些空字节工作,我能够提交,但每隔一段时间甚至不再有效(错误与上面相同),我被迫废弃我的整个回购,重新 - 克隆它,并重做我想要提交的任何东西.

新鲜的存储库正常工作一段时间,但最终NULL字符再次出现,我再次遇到同样的问题.

相同的NULL字节(如上所示)出现在我修改的文件的开头和结尾,导致GIT将它们视为二进制文件,直到我手动使用vi删除NULL行.

  • 有没有其他人经历过这个,和/或找到了解决方案?
  • 可能是什么原因造成的?

我很感激您提供的任何帮助.

Gru*_*ord 11

看起来这是OS X 10.9 Mavericks和(部分?)SMB股票的问题.目前没有修复或解决方法.

有些人建议使用cifs://而不是smb://连接到共享,但这似乎不能解决问题.

该问题可以转载如下:

<on an SMB share>

$ echo "blah blah blah blah" > test.txt
$ more test.txt

<file is fine>

$ echo "blah" > test.txt
$ more test.txt

<file has ^@ characters at the end>
Run Code Online (Sandbox Code Playgroud)

因此,使用终端,如果用较小的文件覆盖文件,那么最后会得到这些NUL字符.可能还有其他方法可以使文件附加或附加那些NUL字符.

很多人都抱怨这个,例如:https: //netbeans.org/bugzilla/show_bug.cgi?id = 237766

以下是该页面的结论:

我可以在Komodo Edit和Aptana Studio中复制空字符,因此这似乎不是Netbeans特定的问题,并且可能与NAS/SMB问题有关.

我强迫smb1连接,但它没有任何区别.即使我弹出共享,并重新连接cifs://并创建,修改和保存文件,它仍然已损坏.

看起来Apple似乎必须解决这个问题,除非有人能提出可行的解决方法.

希望Apple能尽快解决这个问题.在此之前,您可能会使用Double Commander或其他一些实现自己的SMB堆栈的程序.