首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Github仓库的校验和

问Github仓库的校验和
EN

Stack Overflow用户
提问于 2015-07-06 07:52:57
回答 1查看 2.7K关注 0票数 1

我如何计算Github存储库的内容的校验和,使具有不同历史但内容相同的两个repos产生相同的校验和?

我试图用存储库的tarball计算校验和,但由于不同文件之间的时间戳不同,因此遇到了麻烦,而这些时间戳在其他方面是相同的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-06 16:54:11

对于其他可能需要的人,这里有一个解决方案。

它从最近一次提交的树中的对象哈希创建一个散列。

​

代码语言:javascript
复制
console = { log: log };

// construct hash of a github repository

function getRepoHash(login, repo, cb) {
    
  // get latest commit
  ghapi('getRepoCommits', login, repo, { per_page: 1 }, function (err, res, commits) {
      
      // get tree of last commit
      ghapi('getRepoGitTree', login, repo, commits[0].sha, function (err, res, body) {
          
          // construct an array of shas from tree
          var shas = body.tree.map(function (obj) {
            return obj.sha;
          });
          
          // hash the shas
          var repoSha = sha1(shas.toString()).toString();
          cb(null, repoSha);
      })
  })
}

// nodejs/io.js vs joyent/node

getRepoHash('nodejs', 'io.js', function (err, sha1) {
  getRepoHash('joyent', 'node', function (err, sha2) {
    var equal = sha1 === sha2;
    console.log('nodejs/io.js '+ sha1)
    console.log('joyent/node '+ sha2)
    console.log('equal? '+ equal)
  });
});

// logging
function log(message) {
      var logger = document.getElementById('log');
      logger.innerHTML += message + '<br>';
  }
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/js-sha1/0.3.0/sha1.min.js"></script>
<script src="https://wzrd.in/standalone/ghapi@latest"></script>
<div id="log"></div>

​

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31240445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档