Add merge-subtree back
An earlier commit e1b3a2c
(Build-in merge-recursive) made the
subtree merge strategy backend unavailable. This resurrects
it.
A new test t6029 currently only tests the strategy is available,
but it should be enhanced to check the real "subtree" case.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
8
Makefile
8
Makefile
@ -261,17 +261,18 @@ PROGRAMS = \
|
|||||||
# Empty...
|
# Empty...
|
||||||
EXTRA_PROGRAMS =
|
EXTRA_PROGRAMS =
|
||||||
|
|
||||||
|
# List built-in command $C whose implementation cmd_$C() is not in
|
||||||
|
# builtin-$C.o but is linked in as part of some other command.
|
||||||
BUILT_INS = \
|
BUILT_INS = \
|
||||||
git-format-patch$X git-show$X git-whatchanged$X git-cherry$X \
|
git-format-patch$X git-show$X git-whatchanged$X git-cherry$X \
|
||||||
git-get-tar-commit-id$X git-init$X git-repo-config$X \
|
git-get-tar-commit-id$X git-init$X git-repo-config$X \
|
||||||
git-fsck-objects$X git-cherry-pick$X git-peek-remote$X git-status$X \
|
git-fsck-objects$X git-cherry-pick$X git-peek-remote$X git-status$X \
|
||||||
|
git-merge-subtree$X \
|
||||||
$(patsubst builtin-%.o,git-%$X,$(BUILTIN_OBJS))
|
$(patsubst builtin-%.o,git-%$X,$(BUILTIN_OBJS))
|
||||||
|
|
||||||
# what 'all' will build and 'install' will install, in gitexecdir
|
# what 'all' will build and 'install' will install, in gitexecdir
|
||||||
ALL_PROGRAMS = $(PROGRAMS) $(SCRIPTS)
|
ALL_PROGRAMS = $(PROGRAMS) $(SCRIPTS)
|
||||||
|
|
||||||
ALL_PROGRAMS += git-merge-subtree$X
|
|
||||||
|
|
||||||
# what 'all' will build but not install in gitexecdir
|
# what 'all' will build but not install in gitexecdir
|
||||||
OTHER_PROGRAMS = git$X gitweb/gitweb.cgi
|
OTHER_PROGRAMS = git$X gitweb/gitweb.cgi
|
||||||
|
|
||||||
@ -807,9 +808,6 @@ help.o: help.c common-cmds.h GIT-CFLAGS
|
|||||||
'-DGIT_MAN_PATH="$(mandir_SQ)"' \
|
'-DGIT_MAN_PATH="$(mandir_SQ)"' \
|
||||||
'-DGIT_INFO_PATH="$(infodir_SQ)"' $<
|
'-DGIT_INFO_PATH="$(infodir_SQ)"' $<
|
||||||
|
|
||||||
git-merge-subtree$X: git-merge-recursive$X
|
|
||||||
$(QUIET_BUILT_IN)$(RM) $@ && ln git-merge-recursive$X $@
|
|
||||||
|
|
||||||
$(BUILT_INS): git$X
|
$(BUILT_INS): git$X
|
||||||
$(QUIET_BUILT_IN)$(RM) $@ && ln git$X $@
|
$(QUIET_BUILT_IN)$(RM) $@ && ln git$X $@
|
||||||
|
|
||||||
|
1
git.c
1
git.c
@ -332,6 +332,7 @@ static void handle_internal_command(int argc, const char **argv)
|
|||||||
{ "merge-file", cmd_merge_file },
|
{ "merge-file", cmd_merge_file },
|
||||||
{ "merge-ours", cmd_merge_ours, RUN_SETUP },
|
{ "merge-ours", cmd_merge_ours, RUN_SETUP },
|
||||||
{ "merge-recursive", cmd_merge_recursive, RUN_SETUP | NEED_WORK_TREE },
|
{ "merge-recursive", cmd_merge_recursive, RUN_SETUP | NEED_WORK_TREE },
|
||||||
|
{ "merge-subtree", cmd_merge_recursive, RUN_SETUP | NEED_WORK_TREE },
|
||||||
{ "mv", cmd_mv, RUN_SETUP | NEED_WORK_TREE },
|
{ "mv", cmd_mv, RUN_SETUP | NEED_WORK_TREE },
|
||||||
{ "name-rev", cmd_name_rev, RUN_SETUP },
|
{ "name-rev", cmd_name_rev, RUN_SETUP },
|
||||||
{ "pack-objects", cmd_pack_objects, RUN_SETUP },
|
{ "pack-objects", cmd_pack_objects, RUN_SETUP },
|
||||||
|
32
t/t6029-merge-subtree.sh
Executable file
32
t/t6029-merge-subtree.sh
Executable file
@ -0,0 +1,32 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
test_description='subtree merge strategy'
|
||||||
|
|
||||||
|
. ./test-lib.sh
|
||||||
|
|
||||||
|
test_expect_success setup '
|
||||||
|
|
||||||
|
s="1 2 3 4 5 6 7 8"
|
||||||
|
for i in $s; do echo $i; done >hello &&
|
||||||
|
git add hello &&
|
||||||
|
git commit -m initial &&
|
||||||
|
git checkout -b side &&
|
||||||
|
echo >>hello world &&
|
||||||
|
git add hello &&
|
||||||
|
git commit -m second &&
|
||||||
|
git checkout master &&
|
||||||
|
for i in mundo $s; do echo $i; done >hello &&
|
||||||
|
git add hello &&
|
||||||
|
git commit -m master
|
||||||
|
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'subtree available and works like recursive' '
|
||||||
|
|
||||||
|
git merge -s subtree side &&
|
||||||
|
for i in mundo $s world; do echo $i; done >expect &&
|
||||||
|
diff -u expect hello
|
||||||
|
|
||||||
|
'
|
||||||
|
|
||||||
|
test_done
|
Reference in New Issue
Block a user