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