On Thu, Feb 05, 2009 at 12:23:37PM +0100, Jakub Narebski wrote: > > > > 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 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html