Support specifying non-HEADS refs as upstream

While not typical, some users might have an upstream that isn't in
the usual refs/heads/* namespace. There's no reason not to use
those refs as the value for the upstream attribute, so support
doing so.

Change-Id: I5b119f1135c3268c20e7c4084682e860d3ee1fb1
diff --git a/git_config.py b/git_config.py
index aa07d1b..b4145e8 100644
--- a/git_config.py
+++ b/git_config.py
@@ -619,8 +619,6 @@
     """
     if IsId(rev):
       return rev
-    if rev.startswith(R_TAGS):
-      return rev
 
     if not rev.startswith('refs/'):
       rev = R_HEADS + rev
@@ -628,6 +626,10 @@
     for spec in self.fetch:
       if spec.SourceMatches(rev):
         return spec.MapSource(rev)
+
+    if not rev.startswith(R_HEADS):
+      return rev
+
     raise GitError('remote %s does not have %s' % (self.name, rev))
 
   def WritesTo(self, ref):