summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--patch-ids.c1
-rw-r--r--patch-ids.h2
-rw-r--r--revision.c18
3 files changed, 5 insertions, 16 deletions
diff --git a/patch-ids.c b/patch-ids.c
index db31fa647a..bafaae2a6a 100644
--- a/patch-ids.c
+++ b/patch-ids.c
@@ -43,6 +43,7 @@ static int init_patch_id_entry(struct patch_id *patch,
struct commit *commit,
struct patch_ids *ids)
{
+ patch->commit = commit;
if (commit_patch_id(commit, &ids->diffopts, patch->patch_id))
return -1;
diff --git a/patch-ids.h b/patch-ids.h
index 9569ee0d26..dea1ecda48 100644
--- a/patch-ids.h
+++ b/patch-ids.h
@@ -4,7 +4,7 @@
struct patch_id {
struct hashmap_entry ent;
unsigned char patch_id[GIT_SHA1_RAWSZ];
- char seen;
+ struct commit *commit;
};
struct patch_ids {
diff --git a/revision.c b/revision.c
index d30d1c4f80..233ec72073 100644
--- a/revision.c
+++ b/revision.c
@@ -846,7 +846,7 @@ static void cherry_pick_list(struct commit_list *list, struct rev_info *revs)
*/
if (left_first != !!(flags & SYMMETRIC_LEFT))
continue;
- commit->util = add_commit_patch_id(commit, &ids);
+ add_commit_patch_id(commit, &ids);
}
/* either cherry_mark or cherry_pick are true */
@@ -873,21 +873,9 @@ static void cherry_pick_list(struct commit_list *list, struct rev_info *revs)
id = has_commit_patch_id(commit, &ids);
if (!id)
continue;
- id->seen = 1;
- commit->object.flags |= cherry_flag;
- }
- /* Now check the original side for seen ones */
- for (p = list; p; p = p->next) {
- struct commit *commit = p->item;
- struct patch_id *ent;
-
- ent = commit->util;
- if (!ent)
- continue;
- if (ent->seen)
- commit->object.flags |= cherry_flag;
- commit->util = NULL;
+ commit->object.flags |= cherry_flag;
+ id->commit->object.flags |= cherry_flag;
}
free_patch_ids(&ids);