From: Joel Becker <Joel.Becker@oracle.com>
To: Linus Torvalds <torvalds@osdl.org>
Cc: Johannes Schindelin <Johannes.Schindelin@gmx.de>,
walt <wa1ter@myrealbox.com>,
git@vger.kernel.org
Subject: Re: git versus CVS (versus bk)
Date: Mon, 31 Oct 2005 11:50:10 -0800 [thread overview]
Message-ID: <20051031195010.GM11488@ca-server1.us.oracle.com> (raw)
In-Reply-To: <Pine.LNX.4.64.0510310804400.27915@g5.osdl.org>
On Mon, Oct 31, 2005 at 08:18:49AM -0800, Linus Torvalds wrote:
> With git (or with BK, or any truly decentralized model), you just make
> your own repo, do your development there, and you never need to ask for
> permissions from the central repo people. If the development works out,
> you just ask people to merge back. And if it doesn't, you don't even have
> to tell people what a total failure you were.
Actually, Linus, this provokes a question I've always wanted the
answer to. I'm well aware of the centralized/distributed stuff you are
discussing, but there is policy regarding the distributed merges I've
never been quite clear on.
When one does a feature branch, one creates a "throw-away"
repository. They work on the feature, and when they are done, they
pull/push back to the main repository. This pattern is pretty much
identical in both centralized in distributed environments, even if the
nuts-and-bolts are different.
In the CVS/Subversion world, this merge becomes a single commit
on the "main" line of development ("trunk", or whatever you call it).
The merge has no concept of the steps taken to create the change, just
the actual patch. This has the disadvantage that you have to work hard
in the branch namespace to find the actual steps taken (the working
repository for the feature), but the advantage that a quick look does
not have to wade through fits and starts as the feature takes shape.
In the distributed world, a pull of the "feature" repository
pulls in all changes - the full history of the work. This includes
aborted tries, rewritten pieces, bug fixes, etc. Here, the main
repository has the detritus of the development process, but that also
contains the full context of the work. It goes against your claim that:
> So with the distributed model, you don't have to publicly humiliate
> yourself when you do something stupid. Similarly, you don't have to
because that history will contain all your something stupids, plus your
fixes for them.
But that's not how the kernel and git appear to work. Many
developers have popularized dropping that context. They take their
working repository, diff it against your mainline repository, and then
create a new repository that is merely your mainline plus one commit,
the patch of their changes.
This violently breaks the model of "work in a new repository,
then have it pulled into the 'main' repository." It has no real support
in the git/cogito command space (that I know of). It does, however,
leave all the intermediate commits out of your tree, with only a feature
commit remaining.
Where do you stand on this? Would you rather see the full
history pulled? Do you prefer the one-clean-patch approach? If so, is
there any way to get a cogito/git command for it (git-pull-as-one?)?
Joel
--
"Drake! We're LEAVING!"
Joel Becker
Principal Software Developer
Oracle
E-mail: joel.becker@oracle.com
Phone: (650) 506-8127
next prev parent reply other threads:[~2005-10-31 19:50 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-10-31 1:50 git versus CVS (versus bk) walt
2005-10-31 1:59 ` Martin Langhoff
2005-10-31 2:03 ` H. Peter Anvin
2005-10-31 2:35 ` Linus Torvalds
2005-10-31 10:24 ` Johannes Schindelin
2005-10-31 16:18 ` Linus Torvalds
2005-10-31 18:18 ` wa1ter
2005-10-31 19:44 ` Randal L. Schwartz
2005-10-31 23:41 ` walt
2005-11-01 0:15 ` Daniel Barkalow
2005-11-01 0:21 ` Linus Torvalds
2005-10-31 19:50 ` Joel Becker [this message]
2005-10-31 20:28 ` Martin Langhoff
2005-10-31 21:30 ` Joel Becker
2005-11-01 9:15 ` Petr Baudis
2005-11-01 16:17 ` Joel Becker
2005-11-01 17:35 ` Petr Baudis
2005-11-07 22:56 ` Petr Baudis
2005-11-08 10:50 ` Josef Weidendorfer
2005-11-08 12:04 ` Petr Baudis
2005-11-01 2:17 ` Randal L. Schwartz
2005-11-01 2:23 ` Linus Torvalds
2005-11-01 2:34 ` Randal L. Schwartz
2005-11-01 2:47 ` Linus Torvalds
2005-11-01 2:35 ` Junio C Hamano
2005-11-01 23:56 ` Horst von Brand
2005-11-02 8:54 ` Andreas Ericsson
2005-11-02 9:26 ` Junio C Hamano
2005-10-31 21:00 ` Junio C Hamano
2005-10-31 21:36 ` Joel Becker
2005-10-31 21:53 ` Linus Torvalds
2005-10-31 22:14 ` Junio C Hamano
2005-10-31 22:42 ` Joel Becker
2005-11-01 0:20 ` Junio C Hamano
2005-11-01 0:42 ` Joel Becker
2005-11-01 1:02 ` Martin Langhoff
2005-11-01 1:29 ` Joel Becker
2005-11-01 1:48 ` Linus Torvalds
2005-11-01 9:17 ` Petr Baudis
2005-11-01 13:25 ` Catalin Marinas
2005-11-01 0:25 ` Theodore Ts'o
2005-11-01 9:08 ` hgmq vs. StGIT Petr Baudis
2005-11-01 9:23 ` Catalin Marinas
2005-11-01 10:10 ` Petr Baudis
2005-11-01 17:34 ` Catalin Marinas
2005-11-01 15:20 ` Chuck Lever
2005-11-01 15:36 ` Chris Mason
2005-11-01 17:18 ` Catalin Marinas
2005-11-01 18:13 ` Chris Mason
2005-11-01 21:30 ` Catalin Marinas
2005-11-02 15:41 ` Chris Mason
2005-11-05 20:23 ` Catalin Marinas
2005-11-09 23:32 ` Petr Baudis
2005-11-10 0:08 ` Pavel Machek
2005-11-10 16:20 ` Catalin Marinas
2005-11-01 14:11 ` Chris Mason
2005-11-01 16:00 ` Linus Torvalds
2005-11-01 17:13 ` Catalin Marinas
2005-11-01 17:29 ` Catalin Marinas
2005-11-01 17:59 ` Chris Mason
2005-11-01 21:22 ` Catalin Marinas
2005-11-01 0:31 ` git versus CVS (versus bk) Daniel Barkalow
2005-10-31 21:35 ` Linus Torvalds
2005-10-31 13:00 ` wa1ter
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=20051031195010.GM11488@ca-server1.us.oracle.com \
--to=joel.becker@oracle.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=git@vger.kernel.org \
--cc=torvalds@osdl.org \
--cc=wa1ter@myrealbox.com \
/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).