Skip to content

Commit

Permalink
Library function to check for unmerged index entries
Browse files Browse the repository at this point in the history
It's small, but it was in three places already, so it should be in the
library.

Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>
  • Loading branch information
Daniel Barkalow authored and Junio C Hamano committed Feb 10, 2008
1 parent 922d87f commit 94a5728
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 26 deletions.
15 changes: 2 additions & 13 deletions builtin-merge-recursive.c
Original file line number Diff line number Diff line change
Expand Up @@ -223,22 +223,11 @@ static int git_merge_trees(int index_only,
return rc;
}

static int unmerged_index(void)
{
int i;
for (i = 0; i < active_nr; i++) {
struct cache_entry *ce = active_cache[i];
if (ce_stage(ce))
return 1;
}
return 0;
}

struct tree *write_tree_from_memory(void)
{
struct tree *result = NULL;

if (unmerged_index()) {
if (unmerged_cache()) {
int i;
output(0, "There are unmerged index entries:");
for (i = 0; i < active_nr; i++) {
Expand Down Expand Up @@ -1524,7 +1513,7 @@ int merge_trees(struct tree *head,
sha1_to_hex(head->object.sha1),
sha1_to_hex(merge->object.sha1));

if (unmerged_index()) {
if (unmerged_cache()) {
struct path_list *entries, *re_head, *re_merge;
int i;
path_list_clear(&current_file_set, 1);
Expand Down
14 changes: 1 addition & 13 deletions builtin-reset.c
Original file line number Diff line number Diff line change
Expand Up @@ -44,18 +44,6 @@ static inline int is_merge(void)
return !access(git_path("MERGE_HEAD"), F_OK);
}

static int unmerged_files(void)
{
int i;
read_cache();
for (i = 0; i < active_nr; i++) {
struct cache_entry *ce = active_cache[i];
if (ce_stage(ce))
return 1;
}
return 0;
}

static int reset_index_file(const unsigned char *sha1, int is_hard_reset)
{
int i = 0;
Expand Down Expand Up @@ -250,7 +238,7 @@ int cmd_reset(int argc, const char **argv, const char *prefix)
* at all, but requires them in a good order. Other resets reset
* the index file to the tree object we are switching to. */
if (reset_type == SOFT) {
if (is_merge() || unmerged_files())
if (is_merge() || read_cache() < 0 || unmerged_cache())
die("Cannot do a soft reset in the middle of a merge.");
}
else if (reset_index_file(sha1, (reset_type == HARD)))
Expand Down
2 changes: 2 additions & 0 deletions cache.h
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,7 @@ extern struct index_state the_index;
#define read_cache_from(path) read_index_from(&the_index, (path))
#define write_cache(newfd, cache, entries) write_index(&the_index, (newfd))
#define discard_cache() discard_index(&the_index)
#define unmerged_cache() unmerged_index(&the_index)
#define cache_name_pos(name, namelen) index_name_pos(&the_index,(name),(namelen))
#define add_cache_entry(ce, option) add_index_entry(&the_index, (ce), (option))
#define remove_cache_entry_at(pos) remove_index_entry_at(&the_index, (pos))
Expand Down Expand Up @@ -302,6 +303,7 @@ extern int read_index(struct index_state *);
extern int read_index_from(struct index_state *, const char *path);
extern int write_index(struct index_state *, int newfd);
extern int discard_index(struct index_state *);
extern int unmerged_index(struct index_state *);
extern int verify_path(const char *path);
extern int index_name_exists(struct index_state *istate, const char *name, int namelen);
extern int index_name_pos(struct index_state *, const char *name, int namelen);
Expand Down
10 changes: 10 additions & 0 deletions read-cache.c
Original file line number Diff line number Diff line change
Expand Up @@ -1176,6 +1176,16 @@ int discard_index(struct index_state *istate)
return 0;
}

int unmerged_index(struct index_state *istate)
{
int i;
for (i = 0; i < istate->cache_nr; i++) {
if (ce_stage(istate->cache[i]))
return 1;
}
return 0;
}

#define WRITE_BUFFER_SIZE 8192
static unsigned char write_buffer[WRITE_BUFFER_SIZE];
static unsigned long write_buffer_len;
Expand Down

0 comments on commit 94a5728

Please sign in to comment.