diff options
| author | Junio C Hamano <gitster@pobox.com> | 2008-07-15 19:09:46 -0700 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2008-07-15 19:09:46 -0700 |
| commit | fcab40a389e99786a8276108cdbc1cda8caf502f (patch) | |
| tree | 7d1e037103be1644c0584c71ee9d240fc82714fc /read-cache.c | |
| parent | c158cae110c917372efe9ff2f080ea0357b05879 (diff) | |
| parent | 711f6b295cf463aae07eb76e009faed3d3699623 (diff) | |
| download | git-fcab40a389e99786a8276108cdbc1cda8caf502f.tar.xz | |
Merge branch 'mv/merge-in-c'
* mv/merge-in-c:
reduce_heads(): protect from duplicate input
reduce_heads(): thinkofix
Add a new test for git-merge-resolve
t6021: add a new test for git-merge-resolve
Teach merge.log to "git-merge" again
Build in merge
Fix t7601-merge-pull-config.sh on AIX
git-commit-tree: make it usable from other builtins
Add new test case to ensure git-merge prepends the custom merge message
Add new test case to ensure git-merge reduces octopus parents when possible
Introduce reduce_heads()
Introduce get_merge_bases_many()
Add new test to ensure git-merge handles more than 25 refs.
Introduce get_octopus_merge_bases() in commit.c
git-fmt-merge-msg: make it usable from other builtins
Move read_cache_unmerged() to read-cache.c
Add new test to ensure git-merge handles pull.twohead and pull.octopus
Move parse-options's skip_prefix() to git-compat-util.h
Move commit_list_count() to commit.c
Move split_cmdline() to alias.c
Conflicts:
Makefile
parse-options.c
Diffstat (limited to 'read-cache.c')
| -rw-r--r-- | read-cache.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/read-cache.c b/read-cache.c index f83de8c415..d801f9d1cf 100644 --- a/read-cache.c +++ b/read-cache.c @@ -1410,3 +1410,34 @@ int write_index(const struct index_state *istate, int newfd) } return ce_flush(&c, newfd); } + +/* + * Read the index file that is potentially unmerged into given + * index_state, dropping any unmerged entries. Returns true is + * the index is unmerged. Callers who want to refuse to work + * from an unmerged state can call this and check its return value, + * instead of calling read_cache(). + */ +int read_index_unmerged(struct index_state *istate) +{ + int i; + struct cache_entry **dst; + struct cache_entry *last = NULL; + + read_index(istate); + dst = istate->cache; + for (i = 0; i < istate->cache_nr; i++) { + struct cache_entry *ce = istate->cache[i]; + if (ce_stage(ce)) { + remove_name_hash(ce); + if (last && !strcmp(ce->name, last->name)) + continue; + cache_tree_invalidate_path(istate->cache_tree, ce->name); + last = ce; + continue; + } + *dst++ = ce; + } + istate->cache_nr = dst - istate->cache; + return !!last; +} |
