Time for another Gitorious.org update! This time we’ve done some big improvements to the merge requests, resulting in a much better workflow if your project deals with a lot of merge reuqests.
But first up, some notes on the Markdown rendering in wiki pages, for far too long our markdown rendering have been less than optimal in some cases. But the causes was finally figured out in this thread on the mailing list.
Comments have also received some markup enhancements. We noticed that people aren’t that concerned with formatting according to the markdown rules in the comments, especially when it comes to new-lines (Markdown requires two newlines to render it as multiple paragraphs). As of today we do a bit of pre-processing of the comments so that a single newline becomes a <br /> tag. Wiki pages still work according to the stricter Markdown rules.
We’ve received some requests to be able to deny non-fast-forward pushes (eg `git push –force`), so under the repository settings there’s now a switch to deny non-fast-forwards. Turning it on will also deny deletion of refs (eg. `git push origin :branch-to-delete`).
But most of the recent work has been focused on the merge requests, for instance it’s now possible to supply a list of custom statuses for a merge request, if you find the default set doesn’t quite fit your needs, under the project settings.
Furthermore the set of commits in a merge request is now versioned, so if you get some feedback on your merge request and want to improve it, you no longer have to create a new merge request. In fact, all you have to do is push your changes to a special ref in the target repository!
$ git push firstname.lastname@example.org:diff-display/mainline.git master:refs/merge-requests/892 Counting objects: 13, done. Compressing objects: 100% (7/7), done. Writing objects: 100% (7/7), 670 bytes, done. Total 7 (delta 3), reused 0 (delta 0) To email@example.com:diff-display/mainline.git 2a9b685..e30128e master -> refs/merge-requests/892 => Syncing Gitorious... [OK]
And my merge request suddenly has a new version number, I can even switch back and forth between the versions to see the changes.
Likewise as an integrator I can easily pull in the latest version of a merge request, since it’s stored in a special ref in the repository (which won’t be downloaded if you clone a repository, so you don’t end up with lots of refs you may not care about). So do integrate the merge request I could do the following:
$ git checkout -b integration Switched to a new branch "integration" $ git pull origin refs/merge-requests/892 From firstname.lastname@example.org:diff-display/mainline * branch refs/merge-requests/892 -> FETCH_HEAD Already up-to-date. $ git log --pretty=oneline --abbrev-commit master..integration e30128e... Support the nonewline Line type in the renderers 2a9b685... Skip lines raising "invalid byte sequence" exceptions
Note that the above only applies to newly created merge-requests, for consistency reasons older merge requests haven’t been migrated (if you really need it, do contact email@example.com and we’ll see what we can do). Another nice thing about the merge requests being versioned, is that I can still go back and see the commits after they have been merge.
We’ll be improving the merge requests even further over the next few weeks, but we think the above changes are pretty cool and useful.