git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Comments on "Understanding Version Control" by Eric S. Raymond

From
Theodore Tso <tytso@mit.edu>
Date
Feb 5, 2009, 13:16 UTC
Message-ID
<20090205131611.GJ8945@mit.edu>
In-Reply-To
<200902051223.38992.jnareb@gmail.com>
On Thu, Feb 05, 2009 at 12:23:37PM +0100, Jakub Narebski wrote:
Show 14 quoted lines
> > 
> > 2) And does the right thing happen if the situation is as described
> >    above, but in, branch C, which is descended from branch B, a new
> >    directory, src/plugin/innodb-experimental is created, such that
> >    src/plugin/innodb and src/plugin/innodb-experimental both exist.
> >    Now the same commit from branch A is pulled into branch C.  Will
> >    the correct thing happen in that the correct files in
> >    src/plugin/innodb are modified and created, even though there is a
> >    new directory containing a completely unrelated plugin that happens
> >    to have the name, "innodb-experimental"?
> 
> Errr... I think that you confused branch 'B' (with innodb-experimental)
> with branch 'A' (with innodb only) here.
> 
No, I didn't.   Let me try again.
At time T:	Project grows a plugin in directory src/plugins/foo-new
At time T+1:	Project releases a stable release, and branches off "maint"
At time T+2:	Project renames the plugin to be src/plugins/foo, using
		"scm mvdir src/plugins/foo-new src/plugins/foo" on the 
		devel branch:
At time T+3:	A developer wants to implement a new experimental
		'foo-new' plug in so she creates a completely new
		src/plugins/foo-new directory.  At this point the
		devel branch has 'src/plugins/foo' and
		'src/plugins/foo-new', where src/plugins/foo contains
		the plugin which is in the directory
		src/plugins/foo-new on the maint branch (since the
		maint branch branched off
   		before the directory renames started happening.
At time T+4:	A fix goes into the maint branch that modifies
   		src/plugins/foo-new/interface.c.    The fix needs to be
   		pulled into the devel branch.    Does the right thing
   		happen?   (Suppose "interface.c" is a commonly used 
		filename in all plugins and exists in both the 'foo'
   		and 'foo-new' directories on the devel branch.   Does
   		the SCM figure out what is the correct file to
   		modify?)
At Time T+5:	A commit goes into the maint branch which creates a
   		new file, src/plugins/foo-new/table.c, and modifies
		src/plugins/foo-new/Makefile to compile table.c.
   		Which directory does the SCM drop table.c into?

Thie point is if the project is organized around plugins, which are considered bundles of code written in a modular way, and there is a desire to rename directories which are the top-level modules, an SCM that can easily deal with directory renames is important. In practice this doesn't come up in the Linux kernel, and many other OSS projects, and if the project's developent style doesn't do directory reorganizations often, then this isn't an issue. If an OSS project does do this type of reorganization more frequently, then the argument "don't do that", would seem to be an unnecessary restriction.

		      		     	     	  - Ted
Previous: Jakub NarebskiNext: Jakub Narebski
Message 17 of 21 in “Comments on "Understanding Version Control" by Eric S. Raymond”
  1. Jakub NarebskiFeb 2, 2009
  2. Theodore TsoFeb 2, 2009
  3. Eric S. RaymondFeb 2, 2009
  4. Jakub NarebskiFeb 3, 2009
  5. Jakub NarebskiFeb 4, 2009
  6. Theodore TsoFeb 4, 2009
  7. Junio C HamanoFeb 5, 2009
  8. Theodore TsoFeb 5, 2009
  9. Junio C HamanoFeb 5, 2009
  10. Theodore TsoFeb 5, 2009
  11. Junio C HamanoFeb 5, 2009
  12. Jakub NarebskiFeb 5, 2009
  13. Theodore TsoFeb 5, 2009
  14. Miles BaderFeb 5, 2009
  15. Eric S. RaymondFeb 5, 2009
  16. Jakub NarebskiFeb 5, 2009
  17. Theodore TsoFeb 5, 2009
  18. Jakub NarebskiFeb 5, 2009
  19. Theodore TsoFeb 5, 2009
  20. Tests for "Understanding Version Control" by Eric S. RaymondJakub Narebski, Feb 4, 2009
  21. Jakub NarebskiFeb 10, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.