我正在Github上对Java项目进行一些大规模的分析;这包括通过git克隆项目(这里没什么特别的),然后静态读取代码进行分析,等等。
我的问题:有没有办法以编程方式恢复克隆存储库中每个源文件的Github网址?我试图得到这个,所以我可以链接回Github并查看原始来源。
例如,以下网址(我想要的):https://github.com/elastic/elasticsearch/blob/master/libs/elasticsearch-nio/src/main/java/org/elasticsearch/nio/BytesWriteOperation.java#L35指向特定功能。当然,克隆版本中的目录结构与url名称不匹配,例如,/ blob / master /似乎特定于此项目和存储库的结构。
答案 0 :(得分:1)
因此,如果我理解正确,您需要创建指向人类可读代码视图的链接,并突出显示特定行。
基本上,正常的GitHub链接分解为:
https://github.com/elastic/elasticsearch
(又名远程起源)/blob/
这些组件中的每一个都非常简单。
<强> 1。远程起源
(又名&lt; remote-origin&gt;)
克隆存储库时,您创建的本地副本存储对远程源URL的引用。
$ git config --get remote.origin.url
https://github.com/elastic/elasticsearch
或,了解更多详情:
$ git remote show origin
* remote origin
Fetch URL: https://github.com/elastic/elasticsearch
Push URL: https://github.com/elastic/elasticsearch
HEAD branch: develop
Remote branches:
1.4 new (next fetch will store in remotes/origin)
2.0 tracked
add-code-of-conduct-1 tracked
build_test tracked
...
等等
<强> 2。分支强>
(又名&lt; branch&gt;)
你无疑知道如何获得回购的分支机构:
git branch
develop
* master
但您也可以使用git rev-parse --abbrev-ref HEAD
返回当前分支。
git rev-parse --abbrev-ref HEAD
master
根据这些信息和回购本地副本中的文件路径,您可以构建链接
<remote-origin>/blob/<branch>/<path-to-file-in-repo>#L<line_number>
答案 1 :(得分:0)
根据建议您可以使用githubusercontent: 语法应该是:
https://raw.githubusercontent.com/<user>/<repo>/<branch>/<file>