Is it possible to create merge requests in pure Git from the command line?
Asked Answered
B

4

48

I'm using a behind-firewall install of Gitorious.

I can go into the web application and create a pull request from a clone and target the master repo from which it was cloned.

I'd like to be able to do this on the command line. More specifically, I'd like to be able to open merge requests from the command line from one branch to another (rather than from clone to seed repo).

Since I'm not using Github, I can't use Github specific tools or libraries. Is this possible?

Benner answered 1/9, 2011 at 16:34 Comment(0)
K
3

There is no such thing as “merge request” in git itself. So, if this would be possible, it would require something specific to your git host.

Kirshbaum answered 1/9, 2011 at 17:13 Comment(2)
As git updated, this selected answer is not valid anymore. See my answer below.Slovakia
@AliZarezade AFAICT, that's still depending on where you're pushing to, it's not something git itself understands. But it's definitely much closer than eckes' answer and so I have upvoted your answer.Kirshbaum
C
89

The answer given by svick is not correct. It is possible.

There's git request-pull which is part of the Git suite. Using that command line tool, you could create a pull request that could be sent per E-Mail.

Example:
your origin holds a branch master. Now you create a local bugfix branch fix, implement the bug fix and push that fix branch to origin:

git push origin fix:fix

Then, you want someone to merge the changes made in the fix branch into master. Create the pull request with

git request-pull master origin

This will create a text formatted as follows:

The following changes since commit <SHA of master>:

  <commit message of SHA of mster>

are available in the git repository at:
  <repo location> fix

<User Name> (<Number of Commits>):
      <messages of the commits>
      ...

 <changed files>
 ...
 <file statistics>

If the merge request shall go to somebody that cannot access your repo where you pushed your changes, there's always the opportunity of doing it with git format-patch.

After pushing your fix branch to origin (you don't even need to do that), while being on the fix branch create the patch using

git format-patch master..

This will create a patch file for each commit you did in fix since branching off master. You could bundle the generated .patch files with

tar czf fix.tgz *.patch

and then send to someone e.g. via E-Mail to review and apply.

For the sake of completeness: applying the patches could be done with git am.

Confluence answered 2/9, 2011 at 11:43 Comment(5)
You seemed to have missed the actual question and only answered the title... It clearly states the pull request needs to go on Gitorious, which has its own pull request mechanism.Achlamydeous
This doesn't change the fact there is no concept of “merge request” in git itself.Kirshbaum
@Idan: The OP asks for a command line way to open merge requests. And that's exactly what I'm describing.Confluence
@Confluence this don't create a merge request under the web interface. instead it generates patches and description for a email pull request, like LKML. this is not a gitorious merge request.Alpert
Note that "merge request" is a different name for "pull request" https://mcmap.net/q/53716/-pull-request-vs-merge-requestChrysler
S
20

Gitlab add this feature from v11.10. After committing your final changes, instead of push simply use:

git push -o merge_request.create

to create a merge request. More details in push docs or merge request docs.

Slovakia answered 24/6, 2019 at 9:20 Comment(0)
A
5

You may use this command line tool: https://github.com/brauliobo/gitorious-merge-request

./gitorious-merge-request -e [email protected] -s 'test' -r '~brauliobo/noosfero/brauliobos-noosfero' -a easysafeinstall -b master -t 'noosfero/noosfero'
Alpert answered 30/10, 2012 at 20:40 Comment(0)
K
3

There is no such thing as “merge request” in git itself. So, if this would be possible, it would require something specific to your git host.

Kirshbaum answered 1/9, 2011 at 17:13 Comment(2)
As git updated, this selected answer is not valid anymore. See my answer below.Slovakia
@AliZarezade AFAICT, that's still depending on where you're pushing to, it's not something git itself understands. But it's definitely much closer than eckes' answer and so I have upvoted your answer.Kirshbaum

© 2022 - 2024 — McMap. All rights reserved.