mirror of
https://github.com/git/git
synced 2024-10-02 14:45:21 +00:00
Merge branch 'jc/merge-ort-attr-index-fix'
Fix "git merge-tree" to stop segfaulting when the --attr-source option is used. * jc/merge-ort-attr-index-fix: merge-ort: initialize repo in index state
This commit is contained in:
commit
7906b5c957
|
@ -1902,6 +1902,7 @@ static void initialize_attr_index(struct merge_options *opt)
|
||||||
struct index_state *attr_index = &opt->priv->attr_index;
|
struct index_state *attr_index = &opt->priv->attr_index;
|
||||||
struct cache_entry *ce;
|
struct cache_entry *ce;
|
||||||
|
|
||||||
|
attr_index->repo = opt->repo;
|
||||||
attr_index->initialized = 1;
|
attr_index->initialized = 1;
|
||||||
|
|
||||||
if (!opt->renormalize)
|
if (!opt->renormalize)
|
||||||
|
|
|
@ -86,6 +86,33 @@ EXPECTED
|
||||||
test_cmp expected actual
|
test_cmp expected actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success '3-way merge with --attr-source' '
|
||||||
|
test_when_finished rm -rf 3-way &&
|
||||||
|
git init 3-way &&
|
||||||
|
(
|
||||||
|
cd 3-way &&
|
||||||
|
test_commit initial file1 foo &&
|
||||||
|
base=$(git rev-parse HEAD) &&
|
||||||
|
git checkout -b brancha &&
|
||||||
|
echo bar >>file1 &&
|
||||||
|
git commit -am "adding bar" &&
|
||||||
|
source=$(git rev-parse HEAD) &&
|
||||||
|
git checkout @{-1} &&
|
||||||
|
git checkout -b branchb &&
|
||||||
|
echo baz >>file1 &&
|
||||||
|
git commit -am "adding baz" &&
|
||||||
|
merge=$(git rev-parse HEAD) &&
|
||||||
|
git checkout -b gitattributes &&
|
||||||
|
test_commit "gitattributes" .gitattributes "file1 merge=union" &&
|
||||||
|
git checkout @{-1} &&
|
||||||
|
tree=$(git --attr-source=gitattributes merge-tree --write-tree \
|
||||||
|
--merge-base "$base" --end-of-options "$source" "$merge") &&
|
||||||
|
test_write_lines foo bar baz >expect &&
|
||||||
|
git cat-file -p "$tree:file1" >actual &&
|
||||||
|
test_cmp expect actual
|
||||||
|
)
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'file change A, B (same)' '
|
test_expect_success 'file change A, B (same)' '
|
||||||
git reset --hard initial &&
|
git reset --hard initial &&
|
||||||
test_commit "change-a-b-same-A" "initial-file" "AAA" &&
|
test_commit "change-a-b-same-A" "initial-file" "AAA" &&
|
||||||
|
|
Loading…
Reference in a new issue