filter-branch: Big syntax change; support rewriting multiple refs
[gitweb.git] / revision.c
index 28b5f2eacebf637323fa0af112ea568beb95c7f3..00b75bc10b53b0c64b14fc1d9111d5f4e1db3af5 100644 (file)
@@ -1165,11 +1165,13 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch
                                add_message_grep(revs, arg+7);
                                continue;
                        }
-                       if (!prefixcmp(arg, "--extended-regexp")) {
+                       if (!strcmp(arg, "--extended-regexp") ||
+                           !strcmp(arg, "-E")) {
                                regflags |= REG_EXTENDED;
                                continue;
                        }
-                       if (!prefixcmp(arg, "--regexp-ignore-case")) {
+                       if (!strcmp(arg, "--regexp-ignore-case") ||
+                           !strcmp(arg, "-i")) {
                                regflags |= REG_ICASE;
                                continue;
                        }
@@ -1323,16 +1325,17 @@ static enum rewrite_result rewrite_one(struct rev_info *revs, struct commit **pp
 
 static void remove_duplicate_parents(struct commit *commit)
 {
-       struct commit_list *p;
-       struct commit_list **pp = &commit->parents;
+       struct commit_list **pp, *p;
 
        /* Examine existing parents while marking ones we have seen... */
-       for (p = commit->parents; p; p = p->next) {
+       pp = &commit->parents;
+       while ((p = *pp) != NULL) {
                struct commit *parent = p->item;
-               if (parent->object.flags & TMP_MARK)
+               if (parent->object.flags & TMP_MARK) {
+                       *pp = p->next;
                        continue;
+               }
                parent->object.flags |= TMP_MARK;
-               *pp = p;
                pp = &p->next;
        }
        /* ... and clear the temporary mark */