diff options
-rw-r--r-- | commit.c | 6 | ||||
-rw-r--r-- | describe.c | 7 | ||||
-rw-r--r-- | diffcore.h | 2 |
3 files changed, 9 insertions, 6 deletions
@@ -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; } } diff --git a/describe.c b/describe.c index 5548a16e4d..cc95eb0f21 100644 --- a/describe.c +++ b/describe.c @@ -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; } diff --git a/diffcore.h b/diffcore.h index a38acb13e1..12cd816591 100644 --- a/diffcore.h +++ b/diffcore.h @@ -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%)*/ |