Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.kernel.org/pub/scm/git/git.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Barkalow <barkalow@iabervon.org>2008-02-07 19:40:13 +0300
committerJunio C Hamano <gitster@pobox.com>2008-02-10 10:16:51 +0300
commit94a5728cfb593d80164620f8fa7e1ef322ad0025 (patch)
tree9bdc3b6efece60e4b72a90b3d5c75670dbf4deb8
parent922d87f92f79d76ee1d9027d4a0f8a0cf36d5340 (diff)
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: Daniel Barkalow <barkalow@iabervon.org>
-rw-r--r--builtin-merge-recursive.c15
-rw-r--r--builtin-reset.c14
-rw-r--r--cache.h2
-rw-r--r--read-cache.c10
4 files changed, 15 insertions, 26 deletions
diff --git a/builtin-merge-recursive.c b/builtin-merge-recursive.c
index 45d4601533..558a58e4d3 100644
--- a/builtin-merge-recursive.c
+++ b/builtin-merge-recursive.c
@@ -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++) {
@@ -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);
diff --git a/builtin-reset.c b/builtin-reset.c
index 7ee811f0b8..3bec06bc8e 100644
--- a/builtin-reset.c
+++ b/builtin-reset.c
@@ -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;
@@ -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)))
diff --git a/cache.h b/cache.h
index e4aeff07d1..888895a969 100644
--- a/cache.h
+++ b/cache.h
@@ -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))
@@ -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);
diff --git a/read-cache.c b/read-cache.c
index e45f4b3d61..22d7b46245 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -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;