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
This commit is contained in:
Junio C Hamano
2026-02-13 13:39:26 -08:00
2 changed files with 23 additions and 6 deletions
+9 -6
View File
@@ -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;
}
+14
View File
@@ -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