代码之家  ›  专栏  ›  技术社区  ›  qknight

nix预取git sha256要求,在标记上使用修订

  •  2
  • qknight  · 技术社区  · 6 年前

    问题

    使用时 nix-prefetch-git 用一个 --rev ,我们真的也需要sha256吗?

    假定

    使用时,我理解此要求 git 具有 tags 因为标签可以重新连接到不同的版本。

    因此,我目前的理论是,我们不信任git通过传递额外的sha256哈希来获取或处理文件的方式。遵循这个概念,可以通过以下方式计算哈希 吉特 将永远无法影响。

    对的

    nix预取git示例

    nix-prefetch-git https://github.com/ugorji/go --rev 9831f2c3ac1068a78f50
    Leeres Git-Repository in /tmp/git-checkout-tmp-bPibjanm/go-9831f2c/.git/ initialisiert
    remote: Counting objects: 2220, done.
    remote: Compressing objects: 100% (10/10), done.
    remote: Total 2220 (delta 4), reused 5 (delta 2), pack-reused 2208
    Empfange Objekte: 100% (2220/2220), 2.39 MiB | 2.86 MiB/s, Fertig.
    Löse Unterschiede auf: 100% (1706/1706), Fertig.
    Von https://github.com/ugorji/go
     * [neuer Branch]    master     -> origin/master
     * [neues Tag]       v.1.1-beta -> v.1.1-beta
     * [neues Tag]       v1.1       -> v1.1
    Zu neuem Branch 'fetchgit' gewechselt
    removing `.git'...
    
    git revision is 9831f2c3ac1068a78f50999a30db84270f647af6
    path is /nix/store/b0z5c3m25jd60rhdyqdqr8vwjcy3q4gj-go-9831f2c
    git human-readable version is v1.1
    Commit date is 2018-01-12 09:19:27 -0500
    hash is 0qxdq599sjwb03znlxy634mdnmfl90770wf1kk37dhzll6i84vkr
    {
      "url": "https://github.com/ugorji/go",
      "rev": "9831f2c3ac1068a78f50999a30db84270f647af6",
      "date": "2018-01-12T09:19:27-05:00",
      "sha256": "0qxdq599sjwb03znlxy634mdnmfl90770wf1kk37dhzll6i84vkr",
      "fetchSubmodules": true
    }
    
    1 回复  |  直到 6 年前
        1
  •  8
  •   knedlsepp    6 年前

    您认为散列是冗余的假设是正确的。由于git使用内容寻址存储,我们可以保证您检索的数据与提交哈希匹配。只有nix特定的技术原因才能说明 fetchgit .

    既然 nix 2.0 has been released 功能 builtins.fetchGit 内置的 输入nix,而不是通过 nixpkgs derivation fetchgit

    因此,一旦升级到nix 2.0,就不再需要指定 sha256 搞砸

    NB公司 :当仅指定分支或标记而不是提交哈希时,这也意外地包括不纯情况。当您的用例不需要可再现性,但您更希望提交某个分支的最新提交时,可以使用此选项。 然而,你不必担心失去宝贵的再现性,因为 pure-mode ,需要进行修订。

    推荐文章