]> granicus.if.org Git - git/commitdiff
patch-ids: replace the seen indicator with a commit pointer
authorKevin Willford <kewillf@microsoft.com>
Fri, 29 Jul 2016 16:19:18 +0000 (12:19 -0400)
committerJunio C Hamano <gitster@pobox.com>
Fri, 29 Jul 2016 20:23:03 +0000 (13:23 -0700)
The cherry_pick_list was looping through the original side checking the
seen indicator and setting the cherry_flag on the commit.  If we save
off the commit in the patch_id we can set the cherry_flag on the correct
commit when running through the other side when a patch_id match is found.

Signed-off-by: Kevin Willford <kcwillford@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
patch-ids.c
patch-ids.h
revision.c

index db31fa647a82f4b8a4769380abd1591e0e58b6b0..bafaae2a6af40ebb56f8ea27d53115a6ff3466f3 100644 (file)
@@ -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;
 
index 9569ee0d26c5cfb3ad176d54a97440739fd2ad55..dea1ecda48ba7a43cc56e103eec61d8e12bedd10 100644 (file)
@@ -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 {
index d30d1c4f802c77a47df0078f49247457bf22c1a3..233ec720735a193e1003347a3e10a56a979d6bae 100644 (file)
@@ -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);