在克隆项目中查找Github url以获取代码

时间:2018-02-12 09:24:25

标签: git github

我正在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 /似乎特定于此项目和存储库的结构。

2 个答案:

答案 0 :(得分:1)

因此,如果我理解正确,您需要创建指向人类可读代码视图的链接,并突出显示特定行。

基本上,正常的GitHub链接分解为:

  1. 用户回购的网址,例如https://github.com/elastic/elasticsearch(又名远程起源)
  2. /blob/
  3. 回购 中文件 的路径,该路径应与您刚刚克隆的本地仓库相同。
  4. 这些组件中的每一个都非常简单。

    <强> 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>