Checkout bitbucket pull requests locally

后端 未结 9 463
再見小時候
再見小時候 2020-12-08 02:48

I found this gist, showing how to check out a pull request locally from GitHub.

I\'m using bitbucket and I\'m looking for a similar function.

Can you help m

相关标签:
9条回答
  • 2020-12-08 03:01

    It seems the easiest way to do this is still to get a patch of the pull request. Based on this question's answer, Alexandre's comment is still the only way to do this. It uses this BitBucket API call.

    I used the following bash script:

    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
    

    Save that to a file called pull-patch.sh and fill in the environment variables with your account details. The script requires that you have curl installed (e.g. sudo apt install curl). Then run:

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

    And a file called output.patch should be created from the pull request.

    0 讨论(0)
  • 2020-12-08 03:01

    I found this difficult in bit bucket, so, I tried a different approach. If a person give a pull request to my repo in bitbucket, i set his(bill) origin by him name(bill) . then to this -

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

    Here bill is that contributer repo origin / link , then bill-auth is his branch name.

    Here I am creating a branch same name as his(bill) feature branch.

    0 讨论(0)
  • 2020-12-08 03:03

    git fetch origin refs/pull-requests/$PR_NO/merge - it works for Butbucket v5.14.1

    0 讨论(0)
  • 2020-12-08 03:04

    I followed this article Pull request Fetching.

    It worked but I found out I just need add one line to the current repo, rather than create a folk repo and an upstream repo. Run this line

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

    You can also add it manually to the file .git/config in your project.

    Next run git pull you should see a list:

    • [new ref] refs/pull-requests/488/from -> origin/pr/488
    • [new ref] refs/pull-requests/666/from -> origin/pr/666

    Then you can run git checkout origin/pr/666 to get the pull request changes.

    0 讨论(0)
  • 2020-12-08 03:07

    Fetch/Checkout Pull Requests

    This works for bitbucket. Other server could have different refs: (refspecs) or no refs: at all.

    First Time

    First of all you need to add the pull request refs: of the remote repository. To do that to a repository (e.g. aliased 'upstream'):

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

    That is, you add the last line on git .config file:

    [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/*
    

    Fetching

    Then if you perform the remote fetch you should see the retrieval of (also) all the pull requests:

    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
    

    Checking out

    Finally you can checkout the pull-request you prefer:

    git checkout pull-requests/2723
    

    Successfully tested on dedicated bitbucket server 27/02/19.

    0 讨论(0)
  • 2020-12-08 03:09

    I found this answer and thought that it was actually possible to fetch refs for a pull request on bitbucket.

    But it's not.

    The answer for the OP's question is that it is NOT possible: there's been an open feature request issue about it that has been unanswered and unattended for four five SIX SEVEN years.

    The workaround?

    You can get the PR as a downloadable .patch file you can download and apply to a new branch you create manually. But you won't easily be able to apply updates.

    I figured another way out, which I've implemented in git-repo, so everybody can use it. What I'm doing is use the API to get the PR's remote and branch, and automatically create a new upstream and branch locally. That way you can get updates from the PR poster. The downside is the clutter of git remotes.

    edit: I hope this gets done and the feature request is closed. But there has been a solution for this on dedicated bitbucket servers for some time now, but not on the bitbucket.org service. On June 5th, a bitbucket staff member commented on this ticket:

    Hi y'all -- thanks again for your feedback and patience on this issue. This feature is still high on the priority list in the backlog. When we have more information to share about the expected delivery of this feature, we will share it here.

    0 讨论(0)
提交回复
热议问题