git-commit-vandalism/Documentation/config
Elijah Newren 8c8e5bd6eb merge-recursive: switch directory rename detection default
When all of x/a, x/b, and x/c have moved to z/a, z/b, and z/c on one
branch, there is a question about whether x/d added on a different
branch should remain at x/d or appear at z/d when the two branches are
merged.  There are different possible viewpoints here:

  A) The file was placed at x/d; it's unrelated to the other files in
     x/ so it doesn't matter that all the files from x/ moved to z/ on
     one branch; x/d should still remain at x/d.

  B) x/d is related to the other files in x/, and x/ was renamed to z/;
     therefore x/d should be moved to z/d.

Since there was no ability to detect directory renames prior to
git-2.18, users experienced (A) regardless of context.  Choice (B) was
implemented in git-2.18, with no option to go back to (A), and has been
in use since.  However, one user reported that the merge results did not
match their expectations, making the change of default problematic,
especially since there was no notice printed when directory rename
detection moved files.

Note that there is also a third possibility here:

  C) There are different answers depending on the context and content
     that cannot be determined by git, so this is a conflict.  Use a
     higher stage in the index to record the conflict and notify the
     user of the potential issue instead of silently selecting a
     resolution for them.

Add an option for users to specify their preference for whether to use
directory rename detection, and default to (C).  Even when directory
rename detection is on, add notice messages about files moved into new
directories.

As a sidenote, x/d did not have to be a new file here; it could have
already existed at some other path and been renamed to x/d, with
directory rename detection just renaming it again to z/d.  Thus, it's
not just new files, but also a modification to all rename types (normal
renames, rename/add, rename/delete, rename/rename(1to1),
rename/rename(1to2), and rename/rename(2to1)).

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-04-08 16:02:08 +09:00
..
add.txt
advice.txt
alias.txt
am.txt
apply.txt
blame.txt
branch.txt
browser.txt
checkout.txt
clean.txt
color.txt
column.txt
commit.txt
completion.txt
core.txt docs/config: clarify "text property" in core.eol 2019-01-29 09:21:33 -08:00
credential.txt
diff.txt
difftool.txt
fastimport.txt
fetch.txt
filter.txt
fmt-merge-msg.txt
format.txt
fsck.txt
gc.txt
gitcvs.txt
gitweb.txt
gpg.txt
grep.txt
gui.txt
guitool.txt
help.txt
http.txt
i18n.txt
imap.txt
index.txt
init.txt
instaweb.txt
interactive.txt
log.txt
mailinfo.txt
mailmap.txt
man.txt
merge.txt merge-recursive: switch directory rename detection default 2019-04-08 16:02:08 +09:00
mergetool.txt
notes.txt
pack.txt pack-objects: create pack.useSparse setting 2019-01-17 13:44:43 -08:00
pager.txt
pretty.txt
protocol.txt
pull.txt
push.txt
rebase.txt
receive.txt
remote.txt
remotes.txt
repack.txt
rerere.txt
reset.txt
sendemail.txt
sequencer.txt
showbranch.txt
splitindex.txt
ssh.txt
stash.txt
status.txt
submodule.txt
tag.txt
transfer.txt
uploadarchive.txt
uploadpack.txt
url.txt
user.txt config: allow giving separate author and committer idents 2019-02-04 12:18:13 -08:00
versionsort.txt
web.txt
worktree.txt