Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 9 additions & 6 deletions builtin/merge-ours.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 changes: 14 additions & 0 deletions t/t1092-sparse-checkout-compatibility.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Loading