同样的输入同样的 id
(build_id(files):files 是 {文件名: 内容},按文件名排序后逐个喂给 sha256,交回前 8 位——同样的输入永远同样的 id。)
同一组文件换个顺序、改一个字节,看 id:
import hashlib
def build_id(files):
h = hashlib.sha256()
for name in sorted(files):
h.update(name.encode() + b"\0" + files[name].encode() + b"\0")
return h.hexdigest()[:8]
files = {"app.py": "print(1)\n", "lib.py": "X = 2\n"}
same = {"lib.py": "X = 2\n", "app.py": "print(1)\n"}
changed = {"app.py": "print(2)\n", "lib.py": "X = 2\n"}
print(str(build_id(files) == build_id(same)) + "/" + str(build_id(files) == build_id(changed)) + "/" + str(len(build_id(files))))
全部评论