我正在使用 git-svn 将大型 SVN 存储库(约 28k 提交)转换为 Git。当这个过程完成时(~ 1 1/2 周),我遇到了一些 .ps1 文件在差异中被视为二进制文件。我已经在 master 上提交了一个 .gitignore 文件(当然是在转换之后),它告诉 git 将文件视为文本:
* -text
*.snk binary
*.ico binary
*.chm binary
and so on...
注意:-text 只是告诉它按原样处理行尾(不将它们与 Unix 行尾一起存储在其数据库中)
但是,当然,我只能在转换后添加 .gitattributes 。
.gitattributes 在 Git-extensions 中对于以前的提交/差异并不完全有效,但这可能是我现在不想讨论的另一个问题。主要问题是存储在 git 中的二进制文件。
我在某处读到您可以在 .git/INFO 下存储 gitattributes。我可以在转换过程之前执行此操作,但我没有再尝试过,因为转换需要一个多星期的时间,我希望在第一次罢工时就做好。
所以基本上我的问题现在如下:考虑到转换后的存储库:我可以将现有 git 存储库中的现有二进制文件转换为文本文件吗?
如果不是:我如何告诉 git-svn 在整个转换过程中使用 gitattributes 哪些文件将被视为文本/二进制文件?
编辑:问题不在于转换中的任何内容(git 故意将文件视为二进制文件),而是文件被“git diff”或 Git 扩展视为二进制文件。(见答案)当使用差异工具(例如 BeyondCompare)时,您仍然可以使用这些文件。在历史上只是有点烦人。由于文件按原样迁移,因此转换工作完美无缺。(即UTF-16)