Skip to content

Commit 31f0bce

Browse files
committed
Merge branch 'aj/fix-read-tree-from-scratch'
* aj/fix-read-tree-from-scratch: read-tree: Fix regression with creation of a new index file.
2 parents 3613339 + db137fe commit 31f0bce

File tree

2 files changed

+31
-4
lines changed

2 files changed

+31
-4
lines changed

builtin-read-tree.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -113,13 +113,15 @@ int cmd_read_tree(int argc, const char **argv, const char *unused_prefix)
113113
argc = parse_options(argc, argv, unused_prefix, read_tree_options,
114114
read_tree_usage, 0);
115115

116-
if (read_cache_unmerged() && (opts.prefix || opts.merge))
117-
die("You need to resolve your current index first");
118-
119116
prefix_set = opts.prefix ? 1 : 0;
120117
if (1 < opts.merge + opts.reset + prefix_set)
121118
die("Which one? -m, --reset, or --prefix?");
122-
stage = opts.merge = (opts.reset || opts.merge || prefix_set);
119+
120+
if (opts.reset || opts.merge || opts.prefix) {
121+
if (read_cache_unmerged() && (opts.prefix || opts.merge))
122+
die("You need to resolve your current index first");
123+
stage = opts.merge = 1;
124+
}
123125

124126
for (i = 0; i < argc; i++) {
125127
const char *arg = argv[i];

t/t1009-read-tree-new-index.sh

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#!/bin/sh
2+
3+
test_description='test read-tree into a fresh index file'
4+
5+
. ./test-lib.sh
6+
7+
test_expect_success setup '
8+
echo one >a &&
9+
git add a &&
10+
git commit -m initial
11+
'
12+
13+
test_expect_success 'non-existent index file' '
14+
rm -f new-index &&
15+
GIT_INDEX_FILE=new-index git read-tree master
16+
'
17+
18+
test_expect_success 'empty index file' '
19+
rm -f new-index &&
20+
> new-index &&
21+
GIT_INDEX_FILE=new-index git read-tree master
22+
'
23+
24+
test_done
25+

0 commit comments

Comments
 (0)