Some projects on gitorious want all patches via git merge requests. This is very tedious, particularly for small changes. It’s therefore likely that many small improvements will never be submitted. Projects must care about that if they care about quality.
As far as I can tell, you must do it like this:
Create a remote clone
You can do that via the project’s top level web page. For instance. Then you need to “checkout” that clone on the command line.
Or reuse an existing clone, though you’ll have to rebase against the original, probably fixing some awkward conflicts from previous commits to your clone if you haven’t used branches for everything as I suggest below. It looks like people often create new clones for each merge request.
Create a branch in your remote clone
For instance:
- git branch mr_dosomethingtofooforgoo master
- git checkout mr_dosomethingtofooforgoo
- Make your changes, add and commit them.
- git push origin mr_dosomethingtofooforgoo
Request a Merge
Click the “Request Merge” button at the right, when looking at your clone’s top-level. For instance. There is no “Merge Request” button when looking at an individual commit, or even when looking at a branch. This would make it far easier to submit small changes.
Then you must copy/paste the first-line and details from your commit message into the two text fields on the Request Merge form.
You must also choose your branch name from a drop-down list and choose the commit from that branch that you want to use.
Then you can finally click “Create Merge Request”.
Yeah, I don’t really see any reason why I shouldn’t be able to make a merge request from any arbitrary commit in my personal clone. Like a cherry-pick.
And for those who don’t enjoy making their own clones, branching, etc…it should be fairly easy to extend the feature so that you can upload patches generated with `git am`.
BTW, in case you didn’t know this, you can combine the first two lines in your branch creation/checkout steps like so:
git checkout -b mr_dosomethintofooforgoo master
And of course you can leave off the “master” argument if that’s your already your current branch.
Did anything ever happen with this? I’m about to move to GitHub for exactly this reason. Not only is it a pain, but its time consuming/complicated to keep the clones updated.
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’
You could also migrate to Gitlab.
I’m evaluating it right now.