dashboard: delay hg pull until needed

R=adg
CC=golang-dev
https://golang.org/cl/4526052
diff --git a/misc/dashboard/builder/main.go b/misc/dashboard/builder/main.go
index c8583f7..86cc0c1 100644
--- a/misc/dashboard/builder/main.go
+++ b/misc/dashboard/builder/main.go
@@ -127,12 +127,6 @@
 	// go continuous build mode (default)
 	// check for new commits and build them
 	for {
-		err := run(nil, goroot, "hg", "pull", "-u")
-		if err != nil {
-			log.Println("hg pull failed:", err)
-			time.Sleep(waitInterval)
-			continue
-		}
 		built := false
 		t := time.Nanoseconds()
 		if *parallel {
@@ -247,6 +241,15 @@
 	if hash == "" {
 		return false
 	}
+	// Look for hash locally before running hg pull.
+	
+	if _, err := fullHash(hash[:12]); err != nil {
+		// Don't have hash, so run hg pull.
+		if err := run(nil, goroot, "hg", "pull"); err != nil {
+			log.Println("hg pull failed:", err)
+			return false
+		}
+	}
 	err = b.buildHash(hash)
 	if err != nil {
 		log.Println(err)