]> git.ipfire.org Git - thirdparty/git.git/commit - t/t5500-fetch-pack.sh
merge: refuse to create too cool a merge by default
authorJunio C Hamano <gitster@pobox.com>
Fri, 18 Mar 2016 20:21:09 +0000 (13:21 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 23 Mar 2016 19:04:48 +0000 (12:04 -0700)
commite379fdf34fee96cd205be83ff4e71699bdc32b18
tree7e0298e9b6478958a4e153f241248217545cf23c
parent937978e0f3e750d917768c77665d5f8cfbd802b6
merge: refuse to create too cool a merge by default

While it makes sense to allow merging unrelated histories of two
projects that started independently into one, in the way "gitk" was
merged to "git" itself aka "the coolest merge ever", such a merge is
still an unusual event.  Worse, if somebody creates an independent
history by starting from a tarball of an established project and
sends a pull request to the original project, "git merge" however
happily creates such a merge without any sign of something unusual
is happening.

Teach "git merge" to refuse to create such a merge by default,
unless the user passes a new "--allow-unrelated-histories" option to
tell it that the user is aware that two unrelated projects are
merged.

Because such a "two project merge" is a rare event, a configuration
option to always allow such a merge is not added.

We could add the same option to "git pull" and have it passed
through to underlying "git merge".  I do not have a fundamental
opposition against such a feature, but this commit does not do so
and instead leaves it as low-hanging fruit for others, because such
a "two project merge" would be done after fetching the other project
into some location in the working tree of an existing project and
making sure how well they fit together, it is sufficient to allow a
local merge without such an option pass-through from "git pull" to
"git merge".  Many tests that are updated by this patch does the
pass-through manually by turning:

git pull something

into its equivalent:

git fetch something &&
git merge --allow-unrelated-histories FETCH_HEAD

If somebody is inclined to add such an option, updated tests in this
change need to be adjusted back to:

git pull --allow-unrelated-histories something

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 files changed:
Documentation/git-merge.txt
builtin/merge.c
t/t3033-merge-toplevel.sh
t/t3412-rebase-root.sh
t/t5500-fetch-pack.sh
t/t6009-rev-list-parent.sh
t/t6010-merge-base.sh
t/t6012-rev-list-simplify.sh
t/t6026-merge-attr.sh
t/t6029-merge-subtree.sh
t/t6101-rev-parse-parents.sh
t/t9400-git-cvsserver-server.sh