From: Rich Pixley <rich.pixley@palm.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: Seth Robertson <in-gitvger@baka.org>,
"git@vger.kernel.org" <git@vger.kernel.org>
Subject: Re: Newbie grief
Date: Mon, 30 Apr 2012 18:55:11 -0700 [thread overview]
Message-ID: <4F9F427F.7000100@palm.com> (raw)
In-Reply-To: <7vr4v4d6um.fsf@alter.siamese.dyndns.org>
On 4/30/12 18:32 , Junio C Hamano wrote:
> Rich Pixley<rich.pixley@palm.com> writes:
>
>>> Git tracks your version of master separately from each other remote's
>>> master. This is exactly dual/multiple heads.
>>
>> No, it isn't at all.
>>
>> Multiple heads are the idea that a single commit can "branch" in the
>> repository and that both commits can be HEADS of the same branch at
>> once in a single repository. This allows a potential collision to
>> exist in the repository and to be pushed and pulled through multiple
>> repositories.
>
> I think your "not at all" thinking is a bit tainted by your knowing very
> well how Hg does things,
Actually, I came up with the same design back in the early 90's when I
was working on CVS. I think the hg way of doing things is pretty
obvious once we think about it. You can't expect users to do manual
merges on a remote server. So the only thing you can reasonably do is
collect and propagate the collision with enough info that a human being
can put it back together later. Refusing the commit doesn't seem
reasonable to me.
The old approach from clearcase multisite where every repository owns
it's own unique branch, which shows up as a read-only branch in the
other repositories, is a nuisance because you have to constantly keep
merging or your geographic partitions drift. It's difficult enough to
keep disparate groups working in concert. Forcing them to do big merges
in batch frequently doesn't help. That's essentially what we're reduced
to with git.
The illusion that we're all working on the same branch, (mercurial,
monotone, etc), defaults to more frequent merges, and a much smaller
change tree when it comes to visualization.
> but I do not think there is much fundamental
> difference between what we do. Git just tends to be a bit more explicit
> and encourages users to be also be more explicit.
>
> When you integrate from the other side (say, "origin") by pulling, instead
> of splitting the 'master' branch into two (i.e. ours and origin's), we
> store what came from the origin in remotes/origin/master and let the user
> merge it into his heads/master. Essentially, the same name 'master' is
> split into two, between remotes/origin/ and heads/ namespace. We are just
> more explicitly about the split.
I wouldn't call it explicit. That level of detail provides no features.
It's tedious extra work that could have been tracked and managed
automatically. The fact that it isn't tracked and managed automatically
prevents simple repository chaining of the sort I originally set out to
accomplish.
> Similarly, when pushing, you could follow the same model by pushing your
> change into remotes/pixley/master, instead of pushing directly to the
> "master" branch, i.e. heads/master, and then merge the former to the
> latter after push succeeds.
That presupposes that I own both repositories rather than working in a
cooperative environment.
> Needless to say, you do not have to limit the splitting just to two.
> Since everything is named, you can tell where each 'master' came from by
> looking at the namespace (obviously this requires people to establish and
> follow the naming convention).
Right. This is the sort of thing people write source code control
systems to manage. :).
--rich
next prev parent reply other threads:[~2012-05-01 1:55 UTC|newest]
Thread overview: 100+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-30 22:30 Newbie grief Rich Pixley
2012-04-30 23:31 ` Seth Robertson
2012-05-01 1:15 ` Rich Pixley
2012-05-01 1:32 ` Junio C Hamano
2012-05-01 1:55 ` Rich Pixley [this message]
2012-05-01 3:44 ` Sitaram Chamarty
2012-05-01 11:14 ` Ted Ts'o
2012-05-01 16:13 ` Sitaram Chamarty
2012-05-01 18:15 ` Rich Pixley
2012-05-01 18:20 ` Michael Witten
2012-05-01 18:52 ` Rich Pixley
2012-05-02 21:28 ` Jakub Narebski
2012-05-01 18:42 ` Randal L. Schwartz
2012-05-01 20:52 ` Rich Pixley
2012-05-01 21:05 ` Randal L. Schwartz
2012-05-01 21:12 ` Junio C Hamano
2012-05-01 21:25 ` Rich Pixley
2012-05-01 21:28 ` Randal L. Schwartz
2012-05-01 21:57 ` Rich Pixley
2012-05-01 22:56 ` Michael Witten
2012-05-01 23:55 ` Philip Oakley
2012-05-03 16:08 ` Hallvard Breien Furuseth
2012-05-03 18:20 ` Rich Pixley
2012-05-03 23:04 ` Hallvard Breien Furuseth
2012-05-03 23:06 ` Hallvard Breien Furuseth
2012-05-03 18:46 ` Rich Pixley
2012-05-03 21:09 ` Junio C Hamano
2012-05-03 22:44 ` Rich Pixley
2012-05-03 22:53 ` Randal L. Schwartz
2012-05-03 22:59 ` Junio C Hamano
2012-05-04 19:23 ` Felipe Contreras
2012-05-04 19:30 ` Felipe Contreras
2012-05-04 19:41 ` Michael Witten
2012-05-01 21:29 ` Rich Pixley
2012-05-01 21:39 ` Randal L. Schwartz
2012-05-01 22:07 ` Rich Pixley
2012-05-01 22:17 ` Andreas Ericsson
2012-05-01 23:01 ` PJ Weisberg
2012-05-03 18:43 ` Rich Pixley
2012-05-03 19:09 ` Nathan Gray
2012-05-03 19:16 ` Rich Pixley
2012-05-03 20:14 ` Randal L. Schwartz
2012-05-03 20:52 ` Rich Pixley
2012-05-04 15:56 ` Mark Brown
2012-05-04 18:23 ` Rich Pixley
2012-05-04 19:14 ` Jakub Narebski
2012-05-04 20:00 ` Mark Brown
2012-05-02 14:21 ` Hallvard Breien Furuseth
2012-05-02 15:21 ` Michael Witten
2012-05-03 12:23 ` Hallvard Breien Furuseth
2012-05-03 12:53 ` Randal L. Schwartz
2012-05-03 16:09 ` Michael Witten
2012-05-03 16:20 ` Hallvard Breien Furuseth
2012-05-03 16:44 ` Michael Witten
2012-05-03 18:26 ` Rich Pixley
2012-05-03 19:33 ` Ted Ts'o
2012-05-01 23:30 ` Felipe Contreras
2012-05-03 18:31 ` Rich Pixley
2012-05-03 18:58 ` Rich Pixley
2012-05-04 14:09 ` Andreas Ericsson
2012-05-04 14:59 ` Stephen Bash
2012-05-04 16:29 ` Mark Brown
2012-05-04 19:13 ` Felipe Contreras
2012-05-01 18:03 ` Rich Pixley
[not found] ` <4FA01C73.5000909@palm.com>
2012-05-02 0:44 ` Sitaram Chamarty
[not found] ` <4F9F28F5.2020403@palm.com>
2012-05-01 1:37 ` Seth Robertson
2012-05-01 3:04 ` Rich Pixley
2012-05-01 5:32 ` Michael Witten
2012-05-01 6:21 ` Junio C Hamano
2012-05-01 6:24 ` Michael Witten
2012-05-01 17:29 ` Rich Pixley
2012-05-01 17:33 ` Rich Pixley
2012-05-03 19:13 ` Rich Pixley
2012-05-03 20:19 ` Ronan Keryell
2012-05-03 21:13 ` Junio C Hamano
2012-05-03 22:23 ` Ronan Keryell
2012-05-03 22:33 ` Rich Pixley
2012-05-03 22:39 ` Rich Pixley
2012-05-04 1:01 ` Illia Bobyr
2012-05-04 3:13 ` Nathan Gray
2012-05-04 4:35 ` Michael Witten
2012-05-04 5:25 ` Junio C Hamano
2012-05-04 10:09 ` Carlos Martín Nieto
2012-05-04 14:50 ` Junio C Hamano
2012-05-04 17:39 ` Junio C Hamano
2012-05-04 16:46 ` Nathan Gray
2012-05-04 17:17 ` Illia Bobyr
2012-05-04 18:10 ` Rich Pixley
2012-05-04 17:57 ` Rich Pixley
2012-05-04 19:22 ` Michael Witten
2012-05-04 19:18 ` Andrew Sayers
2012-05-04 18:57 ` Jérôme Benoit
2012-05-04 20:03 ` Felipe Contreras
2012-05-04 20:27 ` Junio C Hamano
2012-05-04 20:45 ` Felipe Contreras
2012-05-04 21:29 ` Rich Pixley
2012-05-04 22:05 ` Felipe Contreras
2012-04-30 23:35 ` Jan Krüger
2012-05-01 18:59 ` Rich Pixley
2012-05-02 8:25 ` Philippe Vaucher
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4F9F427F.7000100@palm.com \
--to=rich.pixley@palm.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=in-gitvger@baka.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).