Re: Merge after directory rename ?
From: Michael Witten <hidden>
Date: 2016-06-15 22:51:51
2011/8/22 Marcin Wiśnicki [off-list ref]:
On Sun, 21 Aug 2011 23:53:34 +0000, Michael Witten wrote:quoted
Importantly, note that I used only file names in my example, specifically: 5. [master] rename dir1/file3 to dir3/file3 rather than mirroring your example by writing: 5. [master] rename dir1 to dir3 This is because git fundamentally tracks content, and paths are just one kind of content associated with another blob of content. Consequently,I know it tracks content, yet it puts effort to detect file renames. I want it to also detect directory renames, detecting it should be quite easy.quoted
git really knows next to nothing about directories, so it's not too surprising that git doesn't bother finding such a DIRECTORY rename anyway (at most, git would detect a FILE rename, and your FILE `dir1/file2' has nothing to do with, say, the FILE `dir1/file1' being renamed `dir2/file1'). Still, some command line switches could be useful to help the user express to git what should be going on in a case such as yours.I would prefer it to be fully automatic :)
I assume the smiley is tongue-in-cheek; however, in case it is not: It can't be automatic in general; did my examples mean nothing?
Or at least detect/warn about tree conflict.
Did my examples mean nothing?
Directory renames can happen quite frequently when working with Java/C# and it is unreasonable to expect that lazy user will have to keep track of it manually (with huge number of files it's impossible).
Git doesn't know anything about Java/C#; that's the point. In general, the user could make use of switches (as suggested). In particular, perhaps there are merge hooks or merge drivers that could be used or implemented for allowing a more environment-specific handling of merges, a la GNU's ChangeLog merge driver: http://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=blob;f=lib/git-merge-changelog.c Also, see the configuration section of `git help merge'. Also look at the tool `git mergetool'.