{"thread":{"id":"11951","subject":"[PATCH v2 09/11] Library function to check for unmerged index entries","startedAt":"2008-02-07T16:40:13Z","lastAt":"2008-02-07T16:40:13Z","messageCount":1,"participants":["Daniel Barkalow"],"isPatch":true,"patchVersion":2,"patchTotal":11},"messages":[{"id":"67831","messageId":"alpine.LNX.1.00.0802071134400.13593@iabervon.org","threadId":"11951","inReplyTo":null,"subject":"[PATCH v2 09/11] Library function to check for unmerged index entries","fromName":"Daniel Barkalow","fromEmail":"barkalow@iabervon.org","sentAt":"2008-02-07T16:40:13Z","receivedAt":"2008-02-07T16:40:13Z","isPatch":true,"sender":{"key":"barkalow@iabervon.org","avatar":"https://avatars.githubusercontent.com/u/55364219?v=4"},"body":"It's small, but it was in three places already, so it should be in the\nlibrary.\n\nSigned-off-by: Daniel Barkalow <barkalow@iabervon.org>\n---\n builtin-merge-recursive.c |   15 ++-------------\n builtin-reset.c           |   14 +-------------\n cache.h                   |    2 ++\n read-cache.c              |   10 ++++++++++\n 4 files changed, 15 insertions(+), 26 deletions(-)\n\ndiff --git a/builtin-merge-recursive.c b/builtin-merge-recursive.c\nindex 45d4601..558a58e 100644\n--- a/builtin-merge-recursive.c\n+++ b/builtin-merge-recursive.c\n@@ -223,22 +223,11 @@ static int git_merge_trees(int index_only,\n \treturn rc;\n }\n \n-static int unmerged_index(void)\n-{\n-\tint i;\n-\tfor (i = 0; i < active_nr; i++) {\n-\t\tstruct cache_entry *ce = active_cache[i];\n-\t\tif (ce_stage(ce))\n-\t\t\treturn 1;\n-\t}\n-\treturn 0;\n-}\n-\n struct tree *write_tree_from_memory(void)\n {\n \tstruct tree *result = NULL;\n \n-\tif (unmerged_index()) {\n+\tif (unmerged_cache()) {\n \t\tint i;\n \t\toutput(0, \"There are unmerged index entries:\");\n \t\tfor (i = 0; i < active_nr; i++) {\n@@ -1524,7 +1513,7 @@ int merge_trees(struct tree *head,\n \t\t    sha1_to_hex(head->object.sha1),\n \t\t    sha1_to_hex(merge->object.sha1));\n \n-\tif (unmerged_index()) {\n+\tif (unmerged_cache()) {\n \t\tstruct path_list *entries, *re_head, *re_merge;\n \t\tint i;\n \t\tpath_list_clear(&current_file_set, 1);\ndiff --git a/builtin-reset.c b/builtin-reset.c\nindex 7ee811f..3bec06b 100644\n--- a/builtin-reset.c\n+++ b/builtin-reset.c\n@@ -44,18 +44,6 @@ static inline int is_merge(void)\n \treturn !access(git_path(\"MERGE_HEAD\"), F_OK);\n }\n \n-static int unmerged_files(void)\n-{\n-\tint i;\n-\tread_cache();\n-\tfor (i = 0; i < active_nr; i++) {\n-\t\tstruct cache_entry *ce = active_cache[i];\n-\t\tif (ce_stage(ce))\n-\t\t\treturn 1;\n-\t}\n-\treturn 0;\n-}\n-\n static int reset_index_file(const unsigned char *sha1, int is_hard_reset)\n {\n \tint i = 0;\n@@ -250,7 +238,7 @@ int cmd_reset(int argc, const char **argv, const char *prefix)\n \t * at all, but requires them in a good order.  Other resets reset\n \t * the index file to the tree object we are switching to. */\n \tif (reset_type == SOFT) {\n-\t\tif (is_merge() || unmerged_files())\n+\t\tif (is_merge() || read_cache() < 0 || unmerged_cache())\n \t\t\tdie(\"Cannot do a soft reset in the middle of a merge.\");\n \t}\n \telse if (reset_index_file(sha1, (reset_type == HARD)))\ndiff --git a/cache.h b/cache.h\nindex 570297d..a9b807a 100644\n--- a/cache.h\n+++ b/cache.h\n@@ -220,6 +220,7 @@ extern struct index_state the_index;\n #define read_cache_from(path) read_index_from(&the_index, (path))\n #define write_cache(newfd, cache, entries) write_index(&the_index, (newfd))\n #define discard_cache() discard_index(&the_index)\n+#define unmerged_cache() unmerged_index(&the_index)\n #define cache_name_pos(name, namelen) index_name_pos(&the_index,(name),(namelen))\n #define add_cache_entry(ce, option) add_index_entry(&the_index, (ce), (option))\n #define remove_cache_entry_at(pos) remove_index_entry_at(&the_index, (pos))\n@@ -314,6 +315,7 @@ extern int read_index(struct index_state *);\n extern int read_index_from(struct index_state *, const char *path);\n extern int write_index(struct index_state *, int newfd);\n extern int discard_index(struct index_state *);\n+extern int unmerged_index(struct index_state *);\n extern int verify_path(const char *path);\n extern int index_name_exists(struct index_state *istate, const char *name, int namelen);\n extern int index_name_pos(struct index_state *, const char *name, int namelen);\ndiff --git a/read-cache.c b/read-cache.c\nindex e45f4b3..22d7b46 100644\n--- a/read-cache.c\n+++ b/read-cache.c\n@@ -1176,6 +1176,16 @@ int discard_index(struct index_state *istate)\n \treturn 0;\n }\n \n+int unmerged_index(struct index_state *istate)\n+{\n+\tint i;\n+\tfor (i = 0; i < istate->cache_nr; i++) {\n+\t\tif (ce_stage(istate->cache[i]))\n+\t\t\treturn 1;\n+\t}\n+\treturn 0;\n+}\n+\n #define WRITE_BUFFER_SIZE 8192\n static unsigned char write_buffer[WRITE_BUFFER_SIZE];\n static unsigned long write_buffer_len;\n-- \n1.5.4\n"}]}