aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2026-02-13 13:39:26 -0800
committerJunio C Hamano <gitster@pobox.com>2026-02-13 13:39:26 -0800
commit03dfe4e1afd7314f830703d9559504268863cf1f (patch)
treebf0abeb7ee62d7ebcbbf2acac9274ed6dcf1a3cf
parent94336d77bcbf4360b67a9454d8bf2e84b3d88ae7 (diff)
parentfb1b786ebfab18b851ce1fa94d5063daf11f647f (diff)
downloadgit-03dfe4e1afd7314f830703d9559504268863cf1f.tar.xz
Merge branch 'sb/merge-ours-sparse'
"git merge-ours" is taught to work better in a sparse checkout. * sb/merge-ours-sparse: merge-ours: integrate with sparse-index merge-ours: drop USE_THE_REPOSITORY_VARIABLE
-rw-r--r--builtin/merge-ours.c15
-rwxr-xr-xt/t1092-sparse-checkout-compatibility.sh14
2 files changed, 23 insertions, 6 deletions
diff --git a/builtin/merge-ours.c b/builtin/merge-ours.c
index 97b8a792c7..405b2989f7 100644
--- a/builtin/merge-ours.c
+++ b/builtin/merge-ours.c
@@ -8,31 +8,34 @@
* Pretend we resolved the heads, but declare our tree trumps everybody else.
*/
-#define USE_THE_REPOSITORY_VARIABLE
-
#include "git-compat-util.h"
#include "builtin.h"
+#include "config.h"
+#include "environment.h"
#include "diff.h"
-
static const char builtin_merge_ours_usage[] =
"git merge-ours <base>... -- HEAD <remote>...";
int cmd_merge_ours(int argc,
const char **argv,
const char *prefix UNUSED,
- struct repository *repo UNUSED)
+ struct repository *repo)
{
show_usage_if_asked(argc, argv, builtin_merge_ours_usage);
+ repo_config(repo, git_default_config, NULL);
+ prepare_repo_settings(repo);
+ repo->settings.command_requires_full_index = 0;
+
/*
* The contents of the current index becomes the tree we
* commit. The index must match HEAD, or this merge cannot go
* through.
*/
- if (repo_read_index(the_repository) < 0)
+ if (repo_read_index(repo) < 0)
die_errno("read_cache failed");
- if (index_differs_from(the_repository, "HEAD", NULL, 0))
+ if (index_differs_from(repo, "HEAD", NULL, 0))
return 2;
return 0;
}
diff --git a/t/t1092-sparse-checkout-compatibility.sh b/t/t1092-sparse-checkout-compatibility.sh
index b0f691c151..d98cb4ac11 100755
--- a/t/t1092-sparse-checkout-compatibility.sh
+++ b/t/t1092-sparse-checkout-compatibility.sh
@@ -2559,4 +2559,18 @@ test_expect_success 'cat-file --batch' '
ensure_expanded cat-file --batch <in
'
+test_expect_success 'merge -s ours' '
+ init_repos &&
+
+ test_all_match git rev-parse HEAD^{tree} &&
+ test_all_match git merge -s ours merge-right &&
+ test_all_match git rev-parse HEAD^{tree} &&
+ test_all_match git rev-parse HEAD^2
+'
+
+test_expect_success 'sparse-index is not expanded: merge-ours' '
+ init_repos &&
+ ensure_not_expanded merge -s ours merge-right
+'
+
test_done