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

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.

  • Why do I get a Windows file permission error (IO Error 13) with Android SDK when writing to files starting with a dot?
  • Privately manage public project - GIT
  • How to work with Git branches and Rails migrations
  • Delete remote branch accidentally
  • Why am I getting a “destination path '.' already exists” error when trying clone from my webfaction server?
  • How do I undo 6 local commits in GIT?
  • 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?

  • How can I match a file to a git commit?
  • How do you remove Microsoft Git Provider?
  • How to add android studio project in same repo on github
  • setting up egit repos for team programming
  • git, gitolite error push
  • git p4 rebase attempts to reapply past commits
  • 3 Solutions collect form web for “Is it possible to create merge requests in pure Git from the command line?”

    There is no such thing as “merge request” in git itself. So, if this would be possible, it would require Gitorious-specific tools. It’s not possible in pure git.

    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.

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

    ./gitorious-merge-request -e brauliobo@gmail.com -s 'test' -r '~brauliobo/noosfero/brauliobos-noosfero' -a easysafeinstall -b master -t 'noosfero/noosfero'
    
    Git Baby is a git and github fan, let's start git clone.