分配Git SHA1';s没有Git换行符

分配Git SHA1';s没有Git换行符,git,sha1,Git,Sha1,git hash object命令以某种方式检测blob的内容是文本文件还是二进制文件 还有一个git配置上下文()的问题。如果您将git配置为将某些类型的文件视为二进制内容,那么git的行为将有所不同。不知道上下文可能会生成错误的哈希代码。对吧? 我认为最安全的方法是在项目的上下文中调用git hash object some_文件,然后您可以100%确定它将给出正确的结果 我是对的还是我错过了什么 下面的代码是一种再现这种情况的方法 import org.apache.commons.cod

git hash object命令以某种方式检测blob的内容是文本文件还是二进制文件

还有一个git配置上下文()的问题。如果您将git配置为将某些类型的文件视为二进制内容,那么git的行为将有所不同。不知道上下文可能会生成错误的哈希代码。对吧?

我认为最安全的方法是在项目的上下文中调用git hash object some_文件,然后您可以100%确定它将给出正确的结果

我是对的还是我错过了什么

下面的代码是一种再现这种情况的方法

import org.apache.commons.codec.digest.DigestUtils
import org.apache.commons.lang3.ArrayUtils
class Test3 {
    public static void main(String[] args) {
        def bytesU = "this \n is a text".bytes
        def fileU = File.createTempFile("someFileU", ".tmp")
        fileU << bytesU;
        println DigestUtils.sha1Hex(ArrayUtils.addAll("blob ${bytesU.length}\0".bytes, bytesU))
        println "git hash-object ${fileU.absolutePath}".execute().text
        def bytesW = "this \r\n is a text".bytes
        def fileW = File.createTempFile("someFileW", ".tmp")
        fileW << bytesU;
        println DigestUtils.sha1Hex(ArrayUtils.addAll("blob ${bytesW.length}\0".bytes, bytesW))
        println "git hash-object ${fileW.absolutePath}".execute().text
        println DigestUtils.sha1Hex(ArrayUtils.addAll("blob 0\0".bytes, [] as byte[]))
        println DigestUtils.sha1Hex(ArrayUtils.addAll("blob 7\0foobar".bytes, [] as byte[]))
    }
}
import org.apache.commons.codec.digest.DigestUtils
导入org.apache.commons.lang3.ArrayUtils
类Test3{
公共静态void main(字符串[]args){
def bytesU=“这是一个文本”.字节
def fileU=File.createTempFile(“someFileU”,“.tmp”)
菲卢
我认为最安全的方法是在项目上下文中调用
git hash object some_file
,然后您可以100%确定它将给出正确的结果

没错。除了新行约定外,您还可以提供自定义过滤器来规范化/本地化内容,例如替换和删除特定于repo的设置等等,并且
git hash object
查找这些设置并运行它们