From: Junio C Hamano <gitster@pobox.com>
To: Theodore Tso <tytso@mit.edu>
Cc: Jakub Narebski <jnareb@gmail.com>,
git@vger.kernel.org, "Eric S. Raymond" <esr@thyrsus.com>
Subject: Re: Comments on "Understanding Version Control" by Eric S. Raymond
Date: Wed, 04 Feb 2009 22:24:57 -0800 [thread overview]
Message-ID: <7vmyd1ieo6.fsf@gitster.siamese.dyndns.org> (raw)
In-Reply-To: <20090205024333.GH8945@mit.edu> (Theodore Tso's message of "Wed, 4 Feb 2009 21:43:33 -0500")
Theodore Tso <tytso@mit.edu> writes:
> Careful; that's actually an argument for recording the directory
> rename.
I do not think so. More precisely, I can see people could make that
argument, but I think that argument is weak.
Suppose the original project's implementor only knew about innodb
interface, so he had the "database interface" directory and innodb access
method file in the source tree, perhaps at <db/inno.c>.
I forked the project, and added gdbm support at <db/gdbm.c>.
You also forked the project without knowing what I was working on, and you
started working on refining the innodb support.
All the while, the development community started discussing how the source
tree should be organized to support multiple backends, and you learned
that the plan is to have one directory per larger backend, while keeping
single file ones in <db/*.c>. Specifically, you learned that innodb
related code will be stored in <innodb/*.c>, and there may be other
<somedb/*.c> and <someotherdb/*.c> groups added, but you are not
interested in anything but enhancing innodb support.
You rename "scm mv db innodb" and then add <innodb/enhanced.c>, or perhaps
you may have done it the other way, i.e. added <db/enhanced.c> and then
renamed "scm mv db innodb".
Suppose you would want to merge my changes, but the upstream's plan hasn't
happened yet. Neither of us merged from the upstream in the meantime.
Recording your "scm mv db innodb" as "the user's intention to rename
directory" does not help when you want to merge with me to handle the new
file <db/gdbm.c> I added. You not only need to record the "intent to
rename db to innodb", but need to know that the validity of that "intent
to rename" is contingent on the absense of anything unrelated to innodb in
db/ directory, in order to merge the two branches correctly. Otherwise
you will end up moving my <db/gdbm.c> to <innodb/gdbm.c>. The correct
outcome in this case would probably be to leave it as it is.
> In other cases, maybe the right thing *is* to drop the new file in the
> original directory. So as the Hg and Bzr apologists might say, if the
> SCM actually records whether the user intention was a *directory*
> rename, versus a series of *file* rename/moves, then it becomes
> obvious what the right thing to do.
See how that argument is flawed? The point of my example is that the line
between your example (1) and (2) in the previous message is blurry.
next prev parent reply other threads:[~2009-02-05 6:26 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-02-02 18:48 Comments on "Understanding Version Control" by Eric S. Raymond Jakub Narebski
2009-02-02 20:24 ` Theodore Tso
2009-02-02 20:35 ` Eric S. Raymond
2009-02-03 20:57 ` Jakub Narebski
2009-02-04 2:04 ` Jakub Narebski
2009-02-04 23:54 ` Theodore Tso
2009-02-05 0:04 ` Junio C Hamano
2009-02-05 2:43 ` Theodore Tso
2009-02-05 6:24 ` Junio C Hamano [this message]
2009-02-05 13:28 ` Theodore Tso
2009-02-05 23:06 ` Junio C Hamano
2009-02-05 0:08 ` Jakub Narebski
2009-02-05 0:49 ` Theodore Tso
2009-02-05 6:01 ` Miles Bader
2009-02-05 9:34 ` Eric S. Raymond
2009-02-05 11:23 ` Jakub Narebski
2009-02-05 13:16 ` Theodore Tso
2009-02-05 17:36 ` Jakub Narebski
2009-02-05 21:45 ` Theodore Tso
2009-02-04 22:14 ` Tests for " Jakub Narebski
2009-02-10 1:20 ` Comments on " Jakub Narebski
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=7vmyd1ieo6.fsf@gitster.siamese.dyndns.org \
--to=gitster@pobox.com \
--cc=esr@thyrsus.com \
--cc=git@vger.kernel.org \
--cc=jnareb@gmail.com \
--cc=tytso@mit.edu \
/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).