如何在BitBucket中访问旧提交的完整源代码?

时间:2013-01-25 18:44:48

标签: bitbucket

讨厌在流程中问这个问题,但对于我的生活,我无法弄清楚或找到有关如何以新的Bit Bucket格式访问旧提交源的文档。这甚至可能了吗?太沮丧了!

10 个答案:

答案 0 :(得分:354)

我知道你想通过BitBucket网页界面下载旧版本而不使用Mercurial / Git客户端。

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

通过在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也是有效的。

答案 1 :(得分:190)

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

当您浏览代码时,URL就像:

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

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

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

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

答案 2 :(得分:164)

第1步

Step 1


第2步

Step 2


第3步

Step 3


第4步

Step 4


最后一步

Final Step

答案 3 :(得分:19)

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

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

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

如果我从下拉菜单中选择一个不同于主人的分支,我会得到:

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>

现在我可以在提交时浏览整个回购。

答案 4 :(得分:9)

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

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

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

Tag Downloads

答案 5 :(得分:8)

为了记录,您还可以通过这种方式玩弄网址:

浏览最新来源时,您会遇到以下情况: https://bitbucket.org/my/repo/src/latestcommithash/my.file?at=master

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

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

答案 6 :(得分:2)

  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

答案 7 :(得分:1)

您可以通过追加查看特定提交的文件来源 URL中的?until=<sha-of-commit>(文件名后面)。

答案 8 :(得分:1)

我知道为时已晚,但是有了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 <link>file_get_contents(<link>)来检索文件。

>

最终,您可以在命令行中使用以下内容进行过滤:

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

在php中,只需对数组foreach进行$data循环。

注意:如果<path_file>有一个/,则必须将其转换为%2F

在此处查看文档:{​​{3}}

答案 9 :(得分:1)

搜索了很长时间,最后,我找到了解决方法:)

请检查此图,该图说明了步骤。 enter image description here