Thread (8 messages) flat view 8 messages, 3 authors, 2016-06-15

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'.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help