1*90249ba7SSatish Balay(mr_fork)= 2*90249ba7SSatish Balay 3*90249ba7SSatish Balay# Checkout fork merge request branch 4*90249ba7SSatish Balay 5*90249ba7SSatish Balay`Developers` at times, need to checkout and build changes from a merge request fork branch. Any one of the following methods can be used: 6*90249ba7SSatish Balay 7*90249ba7SSatish Balay- Checkout `COMMIT-SHA` of the branch HEAD. It is available on the "Commits" tab of the merge request web page. 8*90249ba7SSatish Balay 9*90249ba7SSatish Balay ```console 10*90249ba7SSatish Balay % git fetch origin <COMMIT-SHA> 11*90249ba7SSatish Balay % git checkout FETCH_HEAD 12*90249ba7SSatish Balay ``` 13*90249ba7SSatish Balay 14*90249ba7SSatish Balay- Checkout branch using the repository `URL`. The `URL with branchname` is available as "Source branch" hyperlink on merge request web page. 15*90249ba7SSatish Balay 16*90249ba7SSatish Balay ```console 17*90249ba7SSatish Balay % git fetch <URL> <branchname> 18*90249ba7SSatish Balay % git checkout FETCH_HEAD 19*90249ba7SSatish Balay ``` 20*90249ba7SSatish Balay 21*90249ba7SSatish Balay- Setup a local Git clone to access the merge request branch via the `MR-NUMBER`. Here use the following in `.git/config`: 22*90249ba7SSatish Balay 23*90249ba7SSatish Balay ```console 24*90249ba7SSatish Balay [remote "origin"] 25*90249ba7SSatish Balay url = https://gitlab.com/petsc/petsc.git 26*90249ba7SSatish Balay pushurl = git@gitlab.com:petsc/petsc.git 27*90249ba7SSatish Balay fetch = +refs/heads/*:refs/remotes/origin/* 28*90249ba7SSatish Balay fetch = +refs/merge-requests/*:refs/remotes/origin/merge-requests/* 29*90249ba7SSatish Balay ``` 30*90249ba7SSatish Balay 31*90249ba7SSatish Balay Now, the branch is available to checkout: 32*90249ba7SSatish Balay 33*90249ba7SSatish Balay ```console 34*90249ba7SSatish Balay % git fetch 35*90249ba7SSatish Balay % git checkout origin/merge-requests/<MR-NUMBER>/head 36*90249ba7SSatish Balay ``` 37*90249ba7SSatish Balay 38*90249ba7SSatish Balay# Commit and push changes to a merge request fork branch 39*90249ba7SSatish Balay 40*90249ba7SSatish BalayOnly `Owners/Maintainers` can push commits to a merge request fork branch. Here, use the `ssh-URL` for the Git repository. 41*90249ba7SSatish Balay 42*90249ba7SSatish Balay```console 43*90249ba7SSatish Balay% git fetch <ssh-URL> <branchname> 44*90249ba7SSatish Balay% git checkout -b <branchname> FETCH_HEAD 45*90249ba7SSatish Balay% git push -u <ssh-URL> <branchname> 46*90249ba7SSatish Balay% (edit/commit) 47*90249ba7SSatish Balay% git push 48*90249ba7SSatish Balay``` 49*90249ba7SSatish Balay 50*90249ba7SSatish BalayNotes: 51*90249ba7SSatish Balay 52*90249ba7SSatish BalayFor example, with `merge request` at <https://gitlab.com/petsc/petsc/-/merge_requests/8619> we have: 53*90249ba7SSatish Balay 54*90249ba7SSatish Balay- `MR-NUMBER` = `8619` 55*90249ba7SSatish Balay- `COMMIT-SHA` = `1b741c341f10772b6231f15a4abcef052bfe2d90` ("Copy commit SHA" of the HEAD commit from the "Commits" tab) 56*90249ba7SSatish Balay- `URL with branchname` = `https://gitlab.com/paul.kuehner/petsc/-/tree/add-tao-get-constraints` ("Copy link" of "Source branch") 57*90249ba7SSatish Balay- `URL` = `https://gitlab.com/paul.kuehner/petsc` 58*90249ba7SSatish Balay- `ssh-URL` = `git@gitlab.com:paul.kuehner/petsc.git` 59*90249ba7SSatish Balay- `branchname` = `add-tao-get-constraints` 60*90249ba7SSatish Balay 61