Re: merge renamed files/directories?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On Tue, 6 May 2008, Theodore Tso wrote:
> 
> Actually, the directory rename hueristic *does* have relevance in at
> least some real-world cases.  For example, MySQL has plugin
> directories, and occasionally the plugins get renamed, for whatever
> reason.

I'm not saying that directory renames don't happen.

I don't even say that merges across directory renames don't happen.

I *am* saying that it's not a problem.

It's like data conflicts. Do they happen? Sure as hell. I can pretty much 
guarantee that any sane project will have more data conflicts than they 
will have rename conflicts (whether single-file or directory), and it's 
not only a problem, it's something that is absolutely *required* from a 
source control management system!

So are data conflicts a problem?

I claim that they aren't. They are a *positive* resource that you need to 
handle. Some of the "handling" is obviously going to be to try to avoid 
them, and if you get too much of them, the real "problem" is that you 
merge too seldom, or more commonly that you have a piece of code that is 
simply not done well enough, so many different people have to muck around 
in that area.

But fundamentally, you should always have data conflicts, and they aren't 
a problem in themselves. They are a problem only

 - If they are hard to understand and see, and *unexpected*. The SCM
   should explain what is going on, and explain why a conflict happens 
   (and that may perhaps mean after-the fact! I love "gitk --merge" 
   exactly because it tends to be very good at explaining what was going 
   on!).

 - If they are hard to fix.

   For example, one of the main problems I had with BK merging was the 
   fact that while the megetool was wonderful, you effectively *had* to 
   merge using it, and you couldn't sanely do an "incremental" merge 
   where you first did a first merge job, then checked that it at 
   least compiles, then tested it, and finally looked at the diffs from 
   both parents and looked at whether those all made sense, and you could 
   "refine" or fix the merge along the different phases.

   Of course, you hope that all merges are pretty obvious, and you can do 
   it right in one go, but no, they're not. They'll never be. They'll 
   never be fully automtic, but even when they aren't automatic, they'll 
   not even be trivially to do manually. But that's OK, as long as the 
   tool at least doesn't fight you, and lets you do whatever you want to 
   do a part of fixing things up.

Now, take a look back at directory renames.

Do they happen?

Yes.

Do they potentially mis-merge?

Yes.

But are they common and/or hard to fix and handle?

No.

And that's why I don't think people should call them "problems". The only 
_real_ issue here, I think, is that git just does things differently from 
other SCM's. Git does a _lot_ of things differently. You get used to it.

			Linus
--
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

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux