git-commit-vandalism/Documentation
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
..
config merge-recursive: switch directory rename detection default 2019-04-08 16:02:08 +09:00
howto Merge branch 'uk/merge-subtree-doc-update' into maint 2018-11-21 22:58:08 +09:00
RelNotes The third batch 2019-03-20 15:19:48 +09:00
technical Merge branch 'jh/trace2' 2019-03-07 09:59:56 +09:00
.gitattributes
.gitignore add a script to diff rendered documentation 2018-08-06 12:30:23 -07:00
asciidoc.conf
asciidoctor-extensions.rb
blame-options.txt
build-docdep.perl
cat-texi.perl
cmd-list.perl
CodingGuidelines Merge branch 'jc/how-to-document-api' 2018-10-19 13:34:05 +09:00
config.txt Merge branch 'nd/packobjectshook-doc-fix' into maint 2018-11-21 22:58:01 +09:00
date-formats.txt
diff-format.txt log,diff-tree: add --combined-all-paths option 2019-02-07 20:15:25 -08:00
diff-generate-patch.txt log,diff-tree: add --combined-all-paths option 2019-02-07 20:15:25 -08:00
diff-options.txt Merge branch 'nd/diff-parseopt-2' 2019-03-07 09:59:58 +09:00
doc-diff Merge branch 'ma/doc-diff-usage-fix' 2019-02-06 22:05:30 -08:00
docbook-xsl.css
docbook.xsl
everyday.txto
fetch-options.txt Merge branch 'ab/fetch-tags-noclobber' 2018-09-17 13:54:00 -07:00
fix-texi.perl
git-add.txt doc: tidy asciidoc style 2019-01-23 11:37:29 -08:00
git-am.txt
git-annotate.txt Use proper syntax for replaceables in command docs 2018-05-25 17:16:47 +09:00
git-apply.txt Merge branch 'nd/diff-apply-ita' 2018-06-25 13:22:36 -07:00
git-archimport.txt git-archimport.1: specify what kind of Arch we're talking about 2018-09-21 09:28:58 -07:00
git-archive.txt
git-bisect-lk2009.txt doc: fix ASCII art tab spacing 2018-10-23 12:23:09 +09:00
git-bisect.txt
git-blame.txt
git-branch.txt Merge branch 'du/branch-show-current' 2019-03-07 09:59:54 +09:00
git-bundle.txt
git-cat-file.txt Merge branch 'dt/cat-file-batch-ambiguous' 2019-02-06 22:05:21 -08:00
git-check-attr.txt Use proper syntax for replaceables in command docs 2018-05-25 17:16:47 +09:00
git-check-ignore.txt Use proper syntax for replaceables in command docs 2018-05-25 17:16:47 +09:00
git-check-mailmap.txt Use proper syntax for replaceables in command docs 2018-05-25 17:16:47 +09:00
git-check-ref-format.txt
git-checkout-index.txt
git-checkout.txt Merge branch 'tg/checkout-no-overlay' 2019-03-07 09:59:51 +09:00
git-cherry-pick.txt doc: tidy asciidoc style 2019-01-23 11:37:29 -08:00
git-cherry.txt
git-citool.txt
git-clean.txt
git-clone.txt Documentation/clone: document ignored configuration variables 2018-11-16 13:15:21 +09:00
git-column.txt git-column.txt: fix section header 2018-12-26 15:29:30 -08:00
git-commit-graph.txt Doc: refer to the "commit-graph file" with dash 2018-09-27 15:29:12 -07:00
git-commit-tree.txt commit-tree: utilize parse-options api 2019-03-08 10:31:24 +09:00
git-commit.txt git-commit.txt: better description what it does 2019-02-04 10:00:01 -08:00
git-config.txt config: document --type=color output is a complete line 2019-03-07 12:48:35 +09:00
git-count-objects.txt
git-credential-cache--daemon.txt
git-credential-cache.txt Use proper syntax for replaceables in command docs 2018-05-25 17:16:47 +09:00
git-credential-store.txt Use proper syntax for replaceables in command docs 2018-05-25 17:16:47 +09:00
git-credential.txt
git-cvsexportcommit.txt
git-cvsimport.txt
git-cvsserver.txt Use proper syntax for replaceables in command docs 2018-05-25 17:16:47 +09:00
git-daemon.txt
git-describe.txt git-describe.1: clarify that "human readable" is also git-readable 2018-09-21 09:32:21 -07:00
git-diff-files.txt
git-diff-index.txt
git-diff-tree.txt Merge branch 'en/combined-all-paths' 2019-03-07 09:59:54 +09:00
git-diff.txt doc: tidy asciidoc style 2019-01-23 11:37:29 -08:00
git-difftool.txt
git-fast-export.txt fast-export: add a --show-original-ids option to show original names 2018-11-17 18:43:52 +09:00
git-fast-import.txt fast-export: add a --show-original-ids option to show original names 2018-11-17 18:43:52 +09:00
git-fetch-pack.txt
git-fetch.txt doc: tidy asciidoc style 2019-01-23 11:37:29 -08:00
git-filter-branch.txt
git-fmt-merge-msg.txt config.txt: move fmt-merge-msg-config.txt to config/ 2018-10-29 10:17:01 +09:00
git-for-each-ref.txt ref-filter: add docs for new options 2018-12-28 10:08:11 -08:00
git-format-patch.txt doc: tidy asciidoc style 2019-01-23 11:37:29 -08:00
git-fsck-objects.txt
git-fsck.txt Merge branch 'jk/fsck-doc' 2019-03-20 15:16:06 +09:00
git-gc.txt Merge branch 'rd/gc-prune-doc-fix' 2019-03-11 16:16:26 +09:00
git-get-tar-commit-id.txt
git-grep.txt grep: add -r/--[no-]recursive 2018-10-03 21:25:57 -07:00
git-gui.txt
git-hash-object.txt
git-help.txt doc: tidy asciidoc style 2019-01-23 11:37:29 -08:00
git-http-backend.txt
git-http-fetch.txt http-fetch: make -a standard behaviour 2018-04-24 10:55:02 +09:00
git-http-push.txt
git-imap-send.txt git-imap-send.txt: move imap.* to a separate file 2018-10-29 10:17:02 +09:00
git-index-pack.txt
git-init-db.txt
git-init.txt Merge branch 'km/init-doc-typofix' 2019-02-06 22:05:21 -08:00
git-instaweb.txt git-instaweb: add Python builtin http.server support 2019-01-28 10:57:44 -08:00
git-interpret-trailers.txt Merge branch 'jk/trailer-fixes' into maint 2018-11-21 22:57:42 +09:00
git-log.txt Add 'human' date format documentation 2019-01-22 14:16:17 -08:00
git-ls-files.txt
git-ls-remote.txt
git-ls-tree.txt
git-mailinfo.txt
git-mailsplit.txt
git-merge-base.txt doc: fix ASCII art tab spacing 2018-10-23 12:23:09 +09:00
git-merge-file.txt
git-merge-index.txt
git-merge-one-file.txt
git-merge-tree.txt
git-merge.txt config.txt: move merge-config.txt to config/ 2018-10-29 10:17:03 +09:00
git-mergetool--lib.txt
git-mergetool.txt mergetool: accept -g/--[no-]gui as arguments 2018-10-25 14:01:10 +09:00
git-mktag.txt
git-mktree.txt
git-multi-pack-index.txt multi-pack-index: add 'verify' verb 2018-09-17 13:49:38 -07:00
git-mv.txt
git-name-rev.txt
git-notes.txt Documentation: spelling and grammar fixes 2018-06-22 14:26:23 -07:00
git-p4.txt doc: tidy asciidoc style 2019-01-23 11:37:29 -08:00
git-pack-objects.txt list-objects: consume sparse tree walk 2019-01-17 13:44:39 -08:00
git-pack-redundant.txt
git-pack-refs.txt
git-parse-remote.txt
git-patch-id.txt
git-prune-packed.txt
git-prune.txt
git-pull.txt Use proper syntax for replaceables in command docs 2018-05-25 17:16:47 +09:00
git-push.txt push doc: document the DWYM behavior pushing to unqualified <dst> 2018-11-14 15:27:56 +09:00
git-quiltimport.txt git-quiltimport: add --keep-non-patch option 2019-01-07 15:29:34 -08:00
git-range-diff.txt range-diff doc: add a section about output stability 2018-11-12 12:05:38 +09:00
git-read-tree.txt
git-rebase.txt Merge branch 'js/rebase-recreate-merge' 2019-03-11 16:16:26 +09:00
git-receive-pack.txt
git-reflog.txt reflog expire: cover reflog from all worktrees 2018-10-22 13:32:54 +09:00
git-remote-ext.txt
git-remote-fd.txt
git-remote-helpers.txto
git-remote-testgit.txt
git-remote.txt Merge branch 'nd/remote-update-doc' 2018-06-04 21:39:49 +09:00
git-repack.txt Merge branch 'cc/delta-islands' 2018-09-17 13:53:55 -07:00
git-replace.txt
git-request-pull.txt
git-rerere.txt rerere: add note about files with existing conflict markers 2018-08-29 09:03:29 -07:00
git-reset.txt doc: tidy asciidoc style 2019-01-23 11:37:29 -08:00
git-rev-list.txt
git-rev-parse.txt Use proper syntax for replaceables in command docs 2018-05-25 17:16:47 +09:00
git-revert.txt
git-rm.txt
git-send-email.txt doc: tidy asciidoc style 2019-01-23 11:37:29 -08:00
git-send-pack.txt
git-sh-i18n--envsubst.txt
git-sh-i18n.txt
git-sh-setup.txt
git-shell.txt
git-shortlog.txt
git-show-branch.txt doc: fix small typo in git show-branch 2018-10-18 12:26:51 +09:00
git-show-index.txt show-index: update documentation for index v2 2018-05-29 00:28:22 +09:00
git-show-ref.txt git-show-ref.txt: fix order of flags 2019-01-10 10:29:05 -08:00
git-show.txt Use proper syntax for replaceables in command docs 2018-05-25 17:16:47 +09:00
git-stage.txt
git-stash.txt
git-status.txt git-status.txt: render tables correctly under Asciidoctor 2018-12-26 15:29:30 -08:00
git-stripspace.txt
git-submodule.txt submodule: document default behavior 2019-02-15 09:55:27 -08:00
git-svn.txt Documentation: spelling and grammar fixes 2018-06-22 14:26:23 -07:00
git-symbolic-ref.txt
git-tag.txt doc: tidy asciidoc style 2019-01-23 11:37:29 -08:00
git-tools.txt
git-unpack-file.txt
git-unpack-objects.txt
git-update-index.txt Merge branch 'jc/update-index-doc' 2018-08-20 11:33:50 -07:00
git-update-ref.txt Merge branch 'ah/doc-updates' into maint 2018-11-21 22:58:07 +09:00
git-update-server-info.txt
git-upload-archive.txt
git-upload-pack.txt doc: tidy asciidoc style 2019-01-23 11:37:29 -08:00
git-var.txt
git-verify-commit.txt
git-verify-pack.txt
git-verify-tag.txt
git-web--browse.txt Use proper syntax for replaceables in command docs 2018-05-25 17:16:47 +09:00
git-whatchanged.txt
git-worktree.txt Merge branch 'nd/per-worktree-ref-iteration' 2018-11-13 22:37:26 +09:00
git-write-tree.txt
git.txt Merge branch 'ah/doc-updates' into maint 2018-11-21 22:58:07 +09:00
gitattributes.txt Merge branch 'yb/utf-16le-bom-spellfix' 2019-03-11 16:16:24 +09:00
gitcli.txt Use proper syntax for replaceables in command docs 2018-05-25 17:16:47 +09:00
gitcore-tutorial.txt
gitcredentials.txt doc: clarify gitcredentials path component matching 2018-09-27 15:24:50 -07:00
gitcvs-migration.txt
gitdiffcore.txt log -G: ignore binary files 2018-12-26 14:59:37 -08:00
giteveryday.txt Documentation: spelling and grammar fixes 2018-06-22 14:26:23 -07:00
gitglossary.txt
githooks.txt mention use of "hooks.allownonascii" in "man githooks" 2019-02-21 09:41:21 -08:00
gitignore.txt Merge branch 'nd/wildmatch-double-asterisk' 2018-11-13 22:37:19 +09:00
gitk.txt
gitmodules.txt doc: fix inappropriate monospace formatting 2018-10-23 12:23:09 +09:00
gitnamespaces.txt
gitremote-helpers.txt
gitrepository-layout.txt doc: move extensions.worktreeConfig to the right place 2018-11-16 14:10:31 +09:00
gitrevisions.txt push doc: correct lies about how push refspecs work 2018-08-31 14:04:06 -07:00
gitsubmodules.txt doc: fix inappropriate monospace formatting 2018-10-23 12:23:09 +09:00
gittutorial-2.txt
gittutorial.txt
gitweb.conf.txt Merge branch 'do/gitweb-strict-export-conf-doc' 2019-01-14 15:29:33 -08:00
gitweb.txt
gitworkflows.txt Merge branch 'km/doc-workflows-typofix' 2018-06-18 10:18:42 -07:00
glossary-content.txt tree-walk: support :(attr) matching 2018-11-19 10:50:33 +09:00
howto-index.sh
i18n.txt
install-doc-quick.sh install-doc-quick: allow specifying what ref to install 2017-12-12 16:49:40 -08:00
install-webdoc.sh
line-range-format.txt
lint-gitlink.perl
mailmap.txt
Makefile Documentation/Makefile add optional targets for l10n 2019-01-07 13:05:36 -08:00
manpage-1.72.xsl
manpage-base-url.xsl.in
manpage-base.xsl
manpage-bold-literal.xsl
manpage-normal.xsl
manpage-quote-apos.xsl
manpage-suppress-sp.xsl
merge-options.txt merge-options.txt: correct wording of --no-commit option 2019-02-21 11:08:23 -08:00
merge-strategies.txt
pretty-formats.txt Merge branch 'aw/pretty-trailers' 2019-03-07 09:59:52 +09:00
pretty-options.txt
pull-fetch-param.txt fetch doc: correct grammar in --force docs 2018-09-20 09:40:03 -07:00
rev-list-options.txt Merge branch 'en/combined-all-paths' 2019-03-07 09:59:54 +09:00
revisions.txt Merge branch 'wc/find-commit-with-pattern-on-detached-head' 2018-07-24 14:50:49 -07:00
sequencer.txt
SubmittingPatches SubmittingPatches: mention doc-diff 2018-08-21 12:54:33 -07:00
texi.xsl
transfer-data-leaks.txt
urls-remotes.txt
urls.txt
user-manual.conf
user-manual.txt