GIT 1.1.3 v1.1.3
authorJunio C Hamano <junkio@cox.net>
Mon, 16 Jan 2006 06:22:23 +0000 (22:22 -0800)
committerJunio C Hamano <junkio@cox.net>
Mon, 16 Jan 2006 06:22:23 +0000 (22:22 -0800)
commit.c
describe.c
diffcore.h

index 56efc69..b8bf35e 100644 (file)
--- a/commit.c
+++ b/commit.c
@@ -359,8 +359,10 @@ void clear_commit_marks(struct commit *commit, unsigned int mark)
        parents = commit->parents;
        commit->object.flags &= ~mark;
        while (parents) {
-               if (parents->item && parents->item->object.parsed)
-                       clear_commit_marks(parents->item, mark);
+               struct commit *parent = parents->item;
+               if (parent && parent->object.parsed &&
+                   (parent->object.flags & mark))
+                       clear_commit_marks(parent, mark);
                parents = parents->next;
        }
 }
index 5548a16..cc95eb0 100644 (file)
@@ -98,7 +98,7 @@ static int compare_names(const void *_a, const void *_b)
        return (a_date > b_date) ? -1 : (a_date == b_date) ? 0 : 1;
 }
 
-static void describe(struct commit *cmit)
+static void describe(struct commit *cmit, int last_one)
 {
        struct commit_list *list;
        static int initialized = 0;
@@ -124,7 +124,8 @@ static void describe(struct commit *cmit)
                if (n) {
                        printf("%s-g%s\n", n->path,
                               find_unique_abbrev(cmit->object.sha1, abbrev));
-                       clear_commit_marks(cmit, SEEN);
+                       if (!last_one)
+                               clear_commit_marks(cmit, SEEN);
                        return;
                }
        }
@@ -159,7 +160,7 @@ int main(int argc, char **argv)
                cmit = lookup_commit_reference(sha1);
                if (!cmit)
                        usage(describe_usage);
-               describe(cmit);
+               describe(cmit, i == argc - 1);
        }
        return 0;
 }
index a38acb1..12cd816 100644 (file)
@@ -15,7 +15,7 @@
  * passed around in one int (high 16-bit for merge and low 16-bit
  * for break).
  */
-#define MAX_SCORE 60000
+#define MAX_SCORE 60000.0
 #define DEFAULT_RENAME_SCORE 30000 /* rename/copy similarity minimum (50%) */
 #define DEFAULT_BREAK_SCORE  30000 /* minimum for break to happen (50%)*/
 #define DEFAULT_MERGE_SCORE  48000 /* maximum for break-merge to happen (80%)*/