-
Notifications
You must be signed in to change notification settings - Fork 37
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
贡献者名称获取 #689
Comments
在 build 时执行,API 可以缓存结果(到文件),(用 scheduled Actions)定期更新(以防用户名更改)。 |
啊,其实可以从 commit 获取 author 而非 search.. |
// build 时用来获取作者
function getAuthor(map, { email, sha }) {
if (map.has(email)) return map.get(email);
const res = get(
`https://api.github.com/repos/OI-wiki/OI-wiki/commits/${sha}`
);
if (res.author) {
const author = res.author.login;
map.set(email, author);
return author;
}
return null;
}
// 定期运行
function updateAll() {
const emailToAuthor = new Map();
commits.forEach((commit) => getAuthor(emailToAuthor, commit));
}
// build 结束 / updateAll 结束后,将 emailToAuthor 存下来,build 开始时读取 大概这种感觉 |
我的想法:
|
我是觉得手动修改 author 太麻烦了,而且不是所有人都会知道需要修改。可能一个人想留名但第一次贡献,就改个 typo,根本不会知道什么是 author 字段。 |
文件改动的时候再加 author 字段,以前都是这么搞的。 |
有道理 我有个方案:让bot来fetch github commit,然后修改author子段,只増不删 这样可以解决新人贡献和文件改动的问题 🌚 |
我是觉得搞个脚本帮助移动文件时添加 author 比较好.. |
每次都用 bot 改的话:
另外就是 |
之前写了一个 VuePress 插件满足同样的需求,用了一个取巧的办法,希望能有所帮助。 如果想要本地解析 Git 日志可以参考 https://github.com/Fischermaen/vuepress-plugin-contributors |
这个东西不支持文件重命名,也不支持手动设置识别不出来的邮箱的 GitHub 帐号。
本地解析确实高效一些,我写的调用 Git 很有点慢..但是懒得研究了。大约不会比 Mathjax SSR 以及 Gulp minify 慢( |
最近几天整了一个 git-authors-info,从目前干的事情来看和 github-file-authors 好像差不多,除了在实现的功能和性能上有些许差异。 关于贡献者名称的获取,我建议的方式是:类似 sidebar.yml,使用 bootstrap 构建时生成一个缓存了邮件地址和对应贡献者名称的 json 文件,在 changelog 等需要贡献者名称的页面,利用邮件地址对贡献者名称进行替换。带来的改变是每个页面都需要查询对应的 commit log 以记录 Author 的邮件地址和名称,关于这一点我还没试过 gatsby-source-local-git 能不能做到。 如果做不到的话,我写的脚本稍微改一下,也能缓存每个页面的 Author。目前的仓库也可以跑一下 build 生成单独的脚本,可能和 bootstrap 整合起来比较方便。 拿出来想请教一下各位,我不知道我这个思路和脚本各位觉得行不? |
最好不要和bootstrap扯上关系 这个东西只是用来预览全量版本的 |
@diauweb 嗯嗯,只要在构建的时候同时跑一下就可以了。 |
https://github.com/OI-wiki/oiwiki-migrator/tree/goodauthor abuse 了一下 GraphQL API, 一次性查询了所有 commit (~4500) 的 authors,且只消耗了 5 个 quota |
这个文件重命名后还能查到作者吗 |
因为是按文件 git log 的 所以大概 --follow 之后可以 |
哦,刚刚没看代码..我还以为全是用 API 实现的 🌚 |
mgt, [08.09.21 22:22] mgt, [08.09.21 22:22] |
用 author 肯定是不行的,用 API 依次查询每个 commit 的 author 工作量有点大,我希望是通过 API 查询每个 author 的 username。
伪代码:
The text was updated successfully, but these errors were encountered: