maintner: fix infinite loop bug in GitCommit.HasAncestor

Fix a stupid bug fortunately found before production.

Add the test that caught it.

Updates golang/go#20222

Change-Id: Ie988d80dec18e5d0fede7a31e3b6cce62b050f5f
Reviewed-on: https://go-review.googlesource.com/43555
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
diff --git a/maintner/git.go b/maintner/git.go
index 13a3e0c..80d0d0e 100644
--- a/maintner/git.go
+++ b/maintner/git.go
@@ -80,7 +80,7 @@
 }
 
 func (gc *GitCommit) hasAncestor(ancestor *GitCommit, checked map[*GitCommit]bool) bool {
-	if v, ok := checked[ancestor]; ok {
+	if v, ok := checked[gc]; ok {
 		return v
 	}
 	checked[gc] = false
diff --git a/maintner/godata/godata_test.go b/maintner/godata/godata_test.go
index 76f6a6d..18b6dcb 100644
--- a/maintner/godata/godata_test.go
+++ b/maintner/godata/godata_test.go
@@ -57,6 +57,9 @@
 		{"3b5637ff2bd5c03479780995e7a35c48222157c1", "0bb0b61d6a85b2a1a33dcbc418089656f2754d32", true},
 		{"0bb0b61d6a85b2a1a33dcbc418089656f2754d32", "3b5637ff2bd5c03479780995e7a35c48222157c1", false},
 
+		{"8f06e217eac10bae4993ca371ade35fecd26270e", "22f1b56dab29d397d2bdbdd603d85e60fb678089", true},
+		{"22f1b56dab29d397d2bdbdd603d85e60fb678089", "8f06e217eac10bae4993ca371ade35fecd26270e", false},
+
 		// Same on both sides:
 		{"0bb0b61d6a85b2a1a33dcbc418089656f2754d32", "0bb0b61d6a85b2a1a33dcbc418089656f2754d32", false},
 		{"3b5637ff2bd5c03479780995e7a35c48222157c1", "3b5637ff2bd5c03479780995e7a35c48222157c1", false},