git-codereview: use codereview.cfg from working tree

Loading codereview.cfg from origin/master
effictively means that users have to ask permission
to use git-codereview.
With this change, users can opt to add the file,
.gitignore it, and forget about it.

Looking in origin/master also makes it hard
to try out git-codereview on a project
without having to commit to it.

Instead of requiring codereview.cfg be checked in
anywhere, just look on the filesystem for it.
I can't figure out why I ever thought
doing otherwise was a good idea.

There are some other related fixes floating around,
which might also be good to put in,
but this is seems like a good stop-gap,
since it is a minimal change;
codereview.cfg continues to work for anyone
currently using it.

Related: golang/go#15616
Related: golang/go#15073

Change-Id: I1e377819f8eb8c8fecf9f022459551a3e8b93d48
Reviewed-on: https://go-review.googlesource.com/24001
Reviewed-by: Andrew Gerrand <adg@golang.org>
diff --git a/git-codereview/api.go b/git-codereview/api.go
index 910900f..a81fc9e 100644
--- a/git-codereview/api.go
+++ b/git-codereview/api.go
@@ -109,7 +109,7 @@
 	auth.host = originUrl.Host
 	if hasGerritConfig {
 		if !strings.HasPrefix(remoteOrigin, origin) {
-			return fmt.Errorf("Gerrit origin %q from %q different then git origin url %q", origin, configRef, originUrl)
+			return fmt.Errorf("Gerrit origin %q from %q different than git origin url %q", origin, configPath, originUrl)
 		}
 
 		auth.project = strings.Trim(strings.TrimPrefix(remoteOrigin, origin), "/")
diff --git a/git-codereview/config.go b/git-codereview/config.go
index 9843fcf..8bf87fd 100644
--- a/git-codereview/config.go
+++ b/git-codereview/config.go
@@ -6,11 +6,13 @@
 
 import (
 	"fmt"
+	"io/ioutil"
+	"path/filepath"
 	"strings"
 )
 
 var (
-	configRef    = "refs/remotes/origin/master:codereview.cfg"
+	configPath   string
 	cachedConfig map[string]string
 )
 
@@ -23,9 +25,11 @@
 	if cachedConfig != nil {
 		return cachedConfig
 	}
-	raw, err := cmdOutputErr("git", "show", configRef)
+	configPath = filepath.Join(repoRoot(), "codereview.cfg")
+	b, err := ioutil.ReadFile(configPath)
+	raw := string(b)
 	if err != nil {
-		verbosef("%sfailed to load config from %q: %v", raw, configRef, err)
+		verbosef("%sfailed to load config from %q: %v", raw, configPath, err)
 		cachedConfig = make(map[string]string)
 		return cachedConfig
 	}
diff --git a/git-codereview/hook_test.go b/git-codereview/hook_test.go
index fe083bb..ca1fff3 100644
--- a/git-codereview/hook_test.go
+++ b/git-codereview/hook_test.go
@@ -109,14 +109,8 @@
 		}
 	}
 
-	// Add issuerepo config.
+	// Add issuerepo config, clear any previous config.
 	write(t, gt.client+"/codereview.cfg", "issuerepo: golang/go")
-	trun(t, gt.client, "git", "add", "codereview.cfg")
-	trun(t, gt.client, "git", "commit", "-m", "add issuerepo codereview config")
-
-	// Look in master rather than origin/master for the config
-	savedConfigRef := configRef
-	configRef = "master:codereview.cfg"
 	cachedConfig = nil
 
 	// Check for the rewrite
@@ -137,7 +131,6 @@
 	}
 
 	// Reset config state
-	configRef = savedConfigRef
 	cachedConfig = nil
 }