[haiku-development] Re: Mercurial

  • From: Niels Reedijk <niels.reedijk@xxxxxxxxx>
  • To: haiku-development@xxxxxxxxxxxxx
  • Date: Tue, 9 Mar 2010 16:09:13 +0100

Hi,

On 7 March 2010 20:55, Andreas Färber <andreas.faerber@xxxxxx> wrote:
>> Now the reason that rebasing is not part of the official distribution
>> is because mercurial and git have two different philosophies. I would
>> say that mercurial is a revision control system (in which history is
>> sacred) as opposed to git which is more a patch control system. That
>> is why git is so much more flexible (which makes it so much more
>> complex).
>>
>> To illustrate that point, there has always been a way to 'rebase',
>> through the MQ (merge queue) extension. That extension is a patch
>> control system on top of a mercurial repository.
>>
>> Whenever you compare Git and Mercurial, keep that in mind. Their
>> philosophies will to a large part influence the actual development
>> process, and as such it is important to keep them in mind when
>> dreaming about a future SCM for Haiku.
>
> You shouldn't forget that this thread is about how Mercurial might be used
> for Haiku. And for all purposes outside the core developers, we are in fact
> talking about patch tracking:

Right, I was merely responding to your question why this was hidden away.

> * I'm supposed to submit patches to Trac. So I need to determine which
> changes are local and remote and create, e.g., a single working patch, not
> my history of local changesets. So I may need two branches, one where I do
> merges and document my progress, and a clean one where I prepare patches,
> hence the rebasing.

Or you can use the MQ extension. http://mercurial.selenic.com/wiki/MqExtension

> * If I run into a bug, someone might post a patch for me to try out. Then I
> need to apply that somehow but should not bother you with patches against
> something that is not in the main repository. So I would need either
> multiple branches/heads or the patch applied and removed again.[1]

Again, have a look at the MQ, it does the things you mention here. See
http://hgbook.red-bean.com/read/managing-change-with-mercurial-queues.html
for a good description of what it is and what it does. From what I see you
describing here it would server your purpose wonderfully.

> Everything would be fine if you guys would use Mercurial and we could opt to
> use another system for working on our patches. But unfortunately while there
> are many -g/--git options in hg, for Git users there is no official git-hg
> to interact with Mercurial from Git. A quick search turned up only the
> reverse:
> http://hg-git.github.com/

In that case I think you'd be happy to know that there is also a git
mirror of the SVN repository (http://git.haiku-os.org). It is still in
a test phase (like the hg mirror), so beware that it might not work
completely. I hope you are willing to try the MQ extension first and
share your experiences with us, it might be useful to learn different
workflows and publish these.

Regards,

N>

Other related posts: