【问题标题】:How to access full source of old commit in BitBucket?如何访问 BitBucket 中旧提交的完整来源?
【发布时间】:2013-01-09 19:16:02
【问题描述】:

我无法弄清楚或找到有关如何以新的 Bit Bucket 格式访问旧提交源的文档。这还有可能吗?

【问题讨论】:

  • 什么新格式?你使用 Mercurial 还是 Git?只需使用 Mercurial 或 Git 客户端更新到旧版本。

标签: bitbucket


【解决方案1】:

我了解到您想通过 BitBucket Web 界面下载旧版本,而不使用 Mercurial/Git 客户端。

检查此related question。在 cmets 上,有人说没有办法做到这一点。幸运的是,这并不完全正确。

通过在 BitBucket 项目页面上导航,我没有找到下载任意版本的链接。有下载特定标签的链接,格式为:

https://bitbucket.org/owner/repository/get/v0.1.2.tar.gz

但是通过稍微调整一下上面的 url,通过提交哈希更改标签名称,例如:

https://bitbucket.org/owner/repository/get/A0B1C2D.tar.gz

您实际上可以下载特定版本。

正如Rakka Rage 在评论中提到的,将.tar.gz 替换为.zip 也可以。

【讨论】:

  • 我可以在 Android Studio 终端中使用上面的链接来克隆提交吗?如果有,能否提供基本的终端代码?
  • 我希望他们能在他们的网站上展示这个,所以很明显。
  • 为什么不相关?我刚刚再次测试了它(2018-08-06),它仍然有效。也许这是“内部”BitBucket 服务器的问题?我在bitbucket.org 服务器上对此进行了测试。
  • @AlexanderMills,我刚刚测试过,它只适用于上面的bitbucket.org。也许您的意思是 bitbucket.org URL 将为此目的而被弃用?是这样吗?
  • 可以确认它仍然适用于 bitbucket.org
【解决方案2】:

我试图弄清楚是否可以像在 GitHub 上一样浏览早期提交的代码,它把我带到了这里。我使用了我在这里找到的信息,在摆弄了 url 之后,我实际上也找到了一种浏览旧提交代码的方法。

当您浏览代码时,URL 类似于:

https://bitbucket.org/user/repo/src/

并在末尾添加一个提交哈希,如下所示:

https://bitbucket.org/user/repo/src/a0328cb

您可以在提交时浏览代码。我不明白为什么没有直接选择提交的下拉框,该功能已经存在。奇怪。

【讨论】:

  • 这正是我所需要的。严重缺少从 Bitbucket 网站到此 URL 的直接链接。
  • 唉,这行不通。或者更确切地说,工作,但部分。例如。你可以浏览https://bitbucket.org/lyro/evil/src/8cbfd51,但是如果你输入hg clone https://bitbucket.org/lyro/evil/src/8cbfd51,你会得到一些随机的修订,也许是最新的。
  • 找到了解决方法,它是hg clone -r8cbfd51 https://bitbucket.org/lyro/evil/src/
  • 对于那些不喜欢复制+粘贴的人:浏览到某个提交,url 将类似于https://bitbucket.org/user/project/commits/0000000000000000000000000000000000000000?at=master。现在,只需将 url 中的 commits 更改为 src,您就可以在此提交中浏览完整源代码!
【解决方案3】:

第 1 步


第 2 步


第 3 步


第 4 步


最后一步

【讨论】:

  • @ManojG 这是我的一个。所以显然有一种方法可以在某个提交时到达整个树,尽管是以一种相当混乱的方式。
  • 喜欢这个答案。注意:您也可以转到文件并使用下拉菜单。谢谢!
  • 比这个答案更令人惊奇的是,我们不能通过单击按钮来完成它......有些事情真的很神奇......
  • 这一步没有为我解决,给出的结果是:@mattdlockyer 的答案,选择一个文件,单击下拉列表,选择一个较旧的提交,然后返回到 repo 基本链接,如奥斯卡邮报的最后一张图片
  • 所有这些都可以,但是下载它时,它总是最新的提交。是我做错了还是那样?
【解决方案4】:

以防万一有人在我的船上,而这些答案都没有完全奏效,这就是我所做的。

也许我们内部的 Bitbucket 服务器的设置与大多数服务器略有不同,但这里是我通常用于查看 master 分支中文件的 URL:

https://<BITBUCKET_URL>/projects/<PROJECT_GROUP>/repos/<REPO_NAME>/browse

如果我从下拉菜单中选择与 master 不同的分支,我会得到:

https://<BITBUCKET_URL>/projects/<PROJECT_GROUP>/repos/<REPO_NAME>/browse?at=refs%2Fheads%2F<BRANCH_NAME>

所以我尝试这样做并且成功了:

https://<BITBUCKET_URL>/projects/<PROJECT_GROUP>/repos/<REPO_NAME>/browse?at=<COMMIT_ID>

现在我可以浏览提交时的整个 repo。

【讨论】:

  • 这个答案是唯一真正有效的答案。比较流行的似乎是指旧版本的 Bitbucket
【解决方案5】:

几年前的好答案。现在 Bitbucket 让它变得更容易了。

标记您要下载的提交(如 Rudy Matela 的回答中所述)。

然后前往下载并点击“标签”标签,您将获得多个下载选项。

【讨论】:

  • 这很容易成为最简单的方法。对于那些无法获取标签问题的人,单击特定提交,在右上角您将看到查看源代码、分支、提交和标签。在那里添加你的标签,然后去下载它。
【解决方案6】:

为了记录,你也可以这样玩弄 URL:

浏览最新的源代码时,您会看到类似: https://bitbucket.org/my/repo/src/latestcommithash/my.file?at=master

只需更改提交哈希并删除 GET 参数: https://bitbucket.org/my/repo/src/wantedcommithash/my.file

在上面 +1 @Hein A. Grønnestad:一切正常,真的想知道为什么 GUI 中没有任何东西可以使用它。

【讨论】:

    【解决方案7】:

    您可以通过追加查看文件的源直到特定的提交 URL 中的?until=&lt;sha-of-commit&gt;(在文件名之后)。

    【讨论】:

      【解决方案8】:
      1. 最简单的方法是单击该提交并向该提交添加标签。 I have included the tag 'last_commit' with this commit

      2. 比在位桶的侧面导航左角去下载。 Click on download in the left side

      3. 现在单击导航栏中的标签并从 UI 下载 zip。 Find your tag and download the zip

      【讨论】:

        【解决方案9】:

        我知道为时已晚,但使用 API 2.0 你可以做到

        从命令行使用:

        curl https://api.bitbucket.org/2.0/repositories/<user>/<repo>/filehistory/<branch>/<path_file>
        

        或在 php 中使用:

        $data = json_decode(file_get_contents("https://api.bitbucket.org/2.0/repositories/<user>/<repo>/filehistory/<branch>/<path_file>", true));
        

        那么您就有了文件的历史记录(从最近的提交到最旧的提交):

        {
        "pagelen": 50,
        "values": [
            {
              "links": {
                "self": {
                  "href": "https://api.bitbucket.org/2.0/repositories/<user>/<repo>/src/<hash>/<path_file>"
                },
                "meta": {
                  "href": "https://api.bitbucket.org/2.0/repositories/<user>/<repo>/src/<HEAD>/<path_file>?format=meta"
                },
                "history": {
                  "href": "https://api.bitbucket.org/2.0/repositories/<user>/<repo>/filehistory/<HEAD>/<path_file>"
                }
              },
              "commit": {
                "hash": "<HEAD>",
                "type": "commit",
                "links": {
                  "self": {
                    "href": "https://api.bitbucket.org/2.0/repositories/<user>/<repo>/commit/<HEAD>"
                  },
                  "html": {
                    "href": "https://bitbucket.org/<user>/<repo>/commits/<HEAD>"
                  }
                }
              },
              "attributes": [],
              "path": "<path_file>",
              "type": "commit_file",
              "size": 31
            },
            {
              "links": {
                "self": {
                  "href": "https://api.bitbucket.org/2.0/repositories/<user>/<repo>/src/<HEAD~1>/<path_file>"
                },
                "meta": {
                  "href": "https://api.bitbucket.org/2.0/repositories/<user>/<repo>/src/<HEAD~1>/<path_file>?format=meta"
                },
                "history": {
                  "href": "https://api.bitbucket.org/2.0/repositories/<user>/<repo>/filehistory/<HEAD~1>/<path_file>"
                }
              },
              "commit": {
                "hash": "<HEAD~1>",
                "type": "commit",
                "links": {
                  "self": {
                    "href": "https://api.bitbucket.org/2.0/repositories/<user>/<repo>/commit/<HEAD~1>"
                  },
                  "html": {
                    "href": "https://bitbucket.org/<user>/<repo>/commits/<HEAD~1>"
                  }
                }
              },
              "attributes": [],
              "path": "<path_file>",
              "type": "commit_file",
              "size": 20
            }
          ],
          "page": 1
        }
        

        其中values > links > self 提供当前历史记录中的文件,您可以使用curl &lt;link&gt;file_get_contents(&lt;link&gt;) 检索它。

        最终,您可以从命令行过滤:

         curl https://api.bitbucket.org/2.0/repositories/<user>/<repo>/filehistory/<branch>/<path_file>?fields=values.links.self
        

        在 php 中,只需在数组 $data 上创建一个 foreach 循环。

        注意:如果&lt;path_file&gt;/,则必须将其转换为%2F

        在此处查看文档:https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Busername%7D/%7Brepo_slug%7D/filehistory/%7Bnode%7D/%7Bpath%7D

        【讨论】:

          【解决方案10】:

          您可以在您的 BitBucket 网站上查看它

          正如Atlassian community site 中所解释的那样,转到Source 页面(可从左侧菜单中获得)并将您的提交ID 放入url 的at= 查询参数中就足够了。因此,例如,url 将以?at=bacf2ad3095 结尾。

          【讨论】:

            【解决方案11】:

            找了半天,终于找到了方法:)

            请查看说明步骤的图片。

            【讨论】:

              【解决方案12】:

              以 Atlassian Bitbucket v6.10 为例

              https://<bitbucket.myserver.it>/projects/<myproject>/repos/<myrepo>/browse?at=<full-commit-hash>
              

              【讨论】:

                猜你喜欢
                • 2021-02-05
                • 1970-01-01
                • 1970-01-01
                • 2012-10-05
                • 2010-12-28
                • 1970-01-01
                • 1970-01-01
                • 2020-08-13
                • 1970-01-01
                相关资源
                最近更新 更多