Fix branch ancestry calculation
From: Linus Torvalds <torvalds@osdl.org>
Date: 2016-06-15 22:42:22
Subsystem:
the rest · Maintainer:
Linus Torvalds
Some branches don't get any ancestors at all, because their ancestor gets a "dotcount" value of 0, and are thus not considered any better than not having any ancestor. That's obviously wrong. Even a zero-dot-count ancestor is better than having none at all. This fixes the issue by making not having an ancestor branch have a goodness value of -1, avoiding the problem (because even a zero dot-count will be considered better). Alternatively, the special-case for the "1.1.1.1" revision should be removed (or made to imply a dot-count of 1). Finally, I suspect that dot-counting in general should ignore any final ".1" counts, ie "1.2.1.1" should count the same as "1.2.1", which should count the same as "1.2", which has a dot-count of 1. That would automatically make any "1.1.1.1.1...." sequence always count as having a dot-count of 0. I'll send suggestion that as a separate patch, but in the meantime, this is a separate issue, and obviously a bug-fix. Signed-off-by: Linus Torvalds <torvalds@osdl.org> ----
diff --git a/cvsps.c b/cvsps.c
--- a/cvsps.c
+++ b/cvsps.c@@ -2599,7 +2599,7 @@ static void determine_branch_ancestor(Pa * note: rev is the pre-commit revision, not the post-commit */ if (!head_ps->ancestor_branch) - d1 = 0; + d1 = -1; else if (strcmp(ps->branch, rev->branch) == 0) continue; else if (strcmp(head_ps->ancestor_branch, "HEAD") == 0)