我找不到关于如何以新的位桶格式访问旧提交的源代码的文档。这还有可能吗?


当前回答

以防有人和我一样,这些答案都不正确,下面是我做的。

也许我们内部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>

现在我可以浏览整个回购,因为它是在提交时。

其他回答

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

步骤1


步骤2


步骤3


步骤4


最后一步

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

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

通过浏览BitBucket项目页面,我没有找到下载任意版本的链接。这里有下载特定标签的链接,格式为:

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

但是通过稍微调整上面的url,通过提交散列更改标签名,比如:

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

你可以下载一个特定的版本。

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

最简单的方法是单击该提交,并向该提交添加一个标记。 我在这个提交中包含了标签'last_commit' 而不是去下载在左侧角落的侧导航位桶。 点击左边的下载 现在点击导航栏中的标签,从UI下载压缩包。 找到您的标签并下载压缩包

我知道这已经太迟了,但是有了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
}

其中> 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中,只需在数组$data上做一个foreach循环。

注意:如果<path_file>有一个/,你必须在%2F中转换它。

在这里查看医生:https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Busername%7D/%7Brepo_slug%7D/filehistory/%7Bnode%7D/%7Bpath%7D