在本地检查bitbucket pull请求

时间:2014-09-22 05:08:25

标签: bitbucket

我找到了这个要点: https://gist.github.com/kennethreitz/3709868

我正在使用bitbucket,我正在寻找类似的功能。

你能帮帮我吗? 谢谢

9 个答案:

答案 0 :(得分:16)

可以使用以下方法从Bitbucket Server的拉取请求中获取代码:

git fetch origin refs/pull-requests/$PR_NO/from:$LOCAL_BRANCH

答案 1 :(得分:14)

我发现this answer并认为实际上可以获取bitbucket上的pull请求的refs。

但事实并非如此。

OP的问题的答案是 不可能 there's been an open feature request issue about it未经答复且无人看管 4 5 六年年。

解决方法?

您可以将PR作为可下载的.patch文件获取,并将其应用于您手动创建的新分支。但您无法轻松应用更新。

我想出了另一条出路,我已经实现了in git-repo,所以每个人都可以使用它。我正在做的是使用API​​来获取PR的远程和分支,并自动在本地创建新的上游和分支。这样你就可以从PR海报上获得更新。缺点是git遥控器的混乱。

答案 2 :(得分:6)

我关注了这篇文章Pull request Fetching

它起作用了,但是我发现我只需要在当前仓库中添加一行,而不是创建一个民间仓库和一个上游仓库。运行此行

git config --add remote.origin.fetch '+refs/pull-requests/*/from:refs/remotes/origin/pr/*'

您还可以将其手动添加到项目中的.git / config文件中。

下一步运行git pull,您应该会看到一个列表:

  • [新裁判] refs / pull-requests / 488 / from-> origin / pr / 488
  • [新裁判] refs / pull-requests / 666 / from-> origin / pr / 666

然后,您可以运行git checkout origin/pr/666来获取拉取请求的更改。

答案 3 :(得分:2)

获取/结帐提取请求

这适用于bitbucket。其他服务器可能具有不同的refs: refspecs )或根本没有refs:

第一次

首先,您需要添加远程存储库的拉取请求refs:。要对存储库执行此操作(例如,别名为“上游”):

git config --add remote.upstream.fetch '+refs/pull-requests/*/from:refs/remotes/upstream/pull-requests/*'

也就是说,您在git .config文件上添加了最后一行:

[remote "origin"]
   url = ssh://git@git.blablabla.net/~user/repository.git
   fetch = +refs/heads/*:refs/remotes/origin/*
   fetch = +refs/pull/*/head:refs/remotes/origin/pull-requests/*

获取

然后,如果您执行远程 fetch ,您应该会看到(同时)所有拉取请求的检索:

git fetch upstream

From ssh://git.blablabla.net/somepath/repository
 * [new ref]         refs/pull-requests/1188/from -> upstream/pull-requests/1188
 * [new ref]         refs/pull-requests/1741/from -> upstream/pull-requests/1741
 * [new ref]         refs/pull-requests/2394/from -> upstream/pull-requests/2394

签出

最后,您可以签出您喜欢的拉取请求:

git checkout pull-requests/2723

已在专用bitbucket服务器19/02/27上成功测试。

答案 4 :(得分:0)

似乎最简单的方法仍然是获取请求请求的补丁。根据{{​​3}}的回答,this question的评论仍然是唯一的方法。它使用Alexandre调用。

我使用了以下bash脚本:

USER=username
PASSWORD=password
REPO=repo-name
PULL_NO=42
OUTPUT_FILE=output.patch

# Add -i to include the HTTP-header in the output for debugging
curl -u $USER:$PASSWORD https://bitbucket.org/api/2.0/repositories/$USER/$REPO/pullrequests/$PULL_NO/patch -L -o $OUTPUT_FILE

将其保存到名为pull-patch.sh的文件中,并在环境变量中填写您的帐户详细信息。该脚本要求您已安装curl(例如sudo apt install curl)。然后运行:

chmod +x pull-patch.sh
./pull-patch.sh

应该从拉取请求中创建一个名为output.patch的文件。

答案 5 :(得分:0)

当无法签出请求请求时,一个诀窍是您可以签出该请求的最后提交

  javaOptions ++= {
    val props = sys.props.toList
    props.map {
      case (key, value) => s"-D$key=$value"
    }
  },

答案 6 :(得分:0)

在bitbucket中,您可以做的是

git config remote.origin.fetch "+refs/heads/:refs/remotes/origin/"

然后

git fetch

之后,您可以签出您想要的分支

git checkout BRANCH_NAME

P.S:希望bitbucket可以解决此问题https://jira.atlassian.com/browse/BCLOUD-5814

答案 7 :(得分:0)

我发现这有点困难,因此,我尝试了另一种方法。如果某人在bitbucket中向我的回购请求拉取请求,我会用他的名字(bill)来设置他的(bill)来源。然后到这个-

git checkout -b bill-auth bill/bill-auth 

这里bill是贡献者回购源/链接,然后bill-auth是他的分支名称。

在这里,我要创建一个与他的(bill)功能分支同名的分支。

答案 8 :(得分:0)

git fetch origin refs / pull-requests / $ PR_NO / merge-适用于Butbucket v5.14.1