I rather like the model that no one gets to push to other peoples'
repositories, people only pull.  I think that's how Linus works.  His
"trusted lieutenants" let him know when they would like him to pull,
and he does.... but presumably first into an "incoming"
private-to-Linus repository that he can peruse before pulling into his
public-for-export repository.  I also rather like keeping the revision
history in the important repositories "clean", which may mean forcing
or strongly encouraging other people to throw away their patch
development histories.
I rather like the idea that a subsystem repository can keep more
history than a "master" repository.  Not every developer needs to have
the entire history of the project in their own repository at all
times.
In a world where a project might have a thousand separate
repositories, one quickly gets to the point where almost all
changesets are trivial merge changesets, polluting the history.
I don't know why you refer to the Linux model as "single integrator".
I see it as rather the opposite -- Linus encourages multiple
specialized trees, each with their own integrator.
Martin
>>>> "M" == Michael Sperber
<sperber(a)deinprogramm.de> writes: 
M> "Stephen J. Turnbull" <stephen(a)xemacs.org> writes:
> It doesn't work so well for reviewers, though. 
> > We could do the exact same thing as "git rebase"
with MQ, but it
> > has the problem (that it shares with "git rebase") that it
doesn't
> > preserve patch identity.
> 
> By "preserve patch identity" you mean that the developer can work in a
> single workspace, push his patch, and when he later pulls from the
> public repo, not get a conflict.  Right?
> 
> That's a nice property, I agree.  But with a UI that made handling
> named branches convenient, this wouldn't be a problem.  You just drop
> the branch on the floor after you push its content, and pull that
> right back in with your next update. 
M> The problem is that it just doesn't scale, in various ways:
M> - It doesn't work for longer-lived branches like Carbon, where things
M>   are resynchronized multiple times.
M> - It doesn't solve the problem I believe you're seeing, namely that the
M>   patch you reviewed isn't the patch that gets committed.  "server-side
M>   git rebase" would be prone to breaking to build automatically, because
M>   "no conflicts" doesn't mean that that merge was actually correct.
M> - If you don't to server-side rebasing, you impose an undue burden on
M>   the developers who keep rebasing their patches.
M> - I agree things are different when there's a single integrators, like
M>   Linus.  We don't.
M> The most natural way of doing business with Mercurial and, I conjecture,
M> git, is to do it the way we are doing it, and that means making explicit
M> what revision a developer started from when making changes.  However,
M> for small, one-off patches, I'd have no objection to stating a policy
M> that asks developers to push on top when possible, and give them
M> instructions on how to get there using Mercurial Queues.
M> -- 
M> Cheers =8-} Mike
M> Friede, Völkerverständigung und überhaupt blabla
M> _______________________________________________
M> XEmacs-Patches mailing list
M> XEmacs-Patches(a)xemacs.org
M> 
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches