Commit 94a5728c authored by Daniel Barkalow's avatar Daniel Barkalow Committed by Junio C Hamano

Library function to check for unmerged index entries

It's small, but it was in three places already, so it should be in the
library.
Signed-off-by: default avatarDaniel Barkalow <[email protected]>
parent 922d87f9
...@@ -223,22 +223,11 @@ static int git_merge_trees(int index_only, ...@@ -223,22 +223,11 @@ static int git_merge_trees(int index_only,
return rc; 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 *write_tree_from_memory(void)
{ {
struct tree *result = NULL; struct tree *result = NULL;
if (unmerged_index()) { if (unmerged_cache()) {
int i; int i;
output(0, "There are unmerged index entries:"); output(0, "There are unmerged index entries:");
for (i = 0; i < active_nr; i++) { for (i = 0; i < active_nr; i++) {
...@@ -1524,7 +1513,7 @@ int merge_trees(struct tree *head, ...@@ -1524,7 +1513,7 @@ int merge_trees(struct tree *head,
sha1_to_hex(head->object.sha1), sha1_to_hex(head->object.sha1),
sha1_to_hex(merge->object.sha1)); sha1_to_hex(merge->object.sha1));
if (unmerged_index()) { if (unmerged_cache()) {
struct path_list *entries, *re_head, *re_merge; struct path_list *entries, *re_head, *re_merge;
int i; int i;
path_list_clear(&current_file_set, 1); path_list_clear(&current_file_set, 1);
......
...@@ -44,18 +44,6 @@ static inline int is_merge(void) ...@@ -44,18 +44,6 @@ static inline int is_merge(void)
return !access(git_path("MERGE_HEAD"), F_OK); 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) static int reset_index_file(const unsigned char *sha1, int is_hard_reset)
{ {
int i = 0; int i = 0;
...@@ -250,7 +238,7 @@ int cmd_reset(int argc, const char **argv, const char *prefix) ...@@ -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 * at all, but requires them in a good order. Other resets reset
* the index file to the tree object we are switching to. */ * the index file to the tree object we are switching to. */
if (reset_type == SOFT) { 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."); die("Cannot do a soft reset in the middle of a merge.");
} }
else if (reset_index_file(sha1, (reset_type == HARD))) else if (reset_index_file(sha1, (reset_type == HARD)))
......
...@@ -208,6 +208,7 @@ extern struct index_state the_index; ...@@ -208,6 +208,7 @@ extern struct index_state the_index;
#define read_cache_from(path) read_index_from(&the_index, (path)) #define read_cache_from(path) read_index_from(&the_index, (path))
#define write_cache(newfd, cache, entries) write_index(&the_index, (newfd)) #define write_cache(newfd, cache, entries) write_index(&the_index, (newfd))
#define discard_cache() discard_index(&the_index) #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 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 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)) #define remove_cache_entry_at(pos) remove_index_entry_at(&the_index, (pos))
...@@ -302,6 +303,7 @@ extern int read_index(struct index_state *); ...@@ -302,6 +303,7 @@ extern int read_index(struct index_state *);
extern int read_index_from(struct index_state *, const char *path); extern int read_index_from(struct index_state *, const char *path);
extern int write_index(struct index_state *, int newfd); extern int write_index(struct index_state *, int newfd);
extern int discard_index(struct index_state *); extern int discard_index(struct index_state *);
extern int unmerged_index(struct index_state *);
extern int verify_path(const char *path); 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_exists(struct index_state *istate, const char *name, int namelen);
extern int index_name_pos(struct index_state *, const char *name, int namelen); extern int index_name_pos(struct index_state *, const char *name, int namelen);
......
...@@ -1176,6 +1176,16 @@ int discard_index(struct index_state *istate) ...@@ -1176,6 +1176,16 @@ int discard_index(struct index_state *istate)
return 0; 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 #define WRITE_BUFFER_SIZE 8192
static unsigned char write_buffer[WRITE_BUFFER_SIZE]; static unsigned char write_buffer[WRITE_BUFFER_SIZE];
static unsigned long write_buffer_len; static unsigned long write_buffer_len;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment