[project] Set 'push.default' to 'nothing'.

This patch allows jiri to set the 'push.default' git config to
'nothing'. This allows developers to push changes to Gerrit without
typing in refs/for/master when doing git push while under a local
branch.

Bug: VC-144
Test: Local and CQ
Change-Id: Ic8dda050a649ceb7cfd71599b341081ce2314c09
diff --git a/project/project.go b/project/project.go
index cdb7629..7462268 100644
--- a/project/project.go
+++ b/project/project.go
@@ -551,12 +551,17 @@
 		return nil
 	}
 	scm := gitutil.New(jirix, gitutil.RootDirOpt(p.Path))
-	if err := scm.Config("--get", "remote.origin.push"); err == nil {
-		// Default already set, skip
-		return nil
+	if err := scm.Config("--get", "remote.origin.push"); err != nil {
+		// remote.origin.push does not exist.
+		if err := scm.Config("remote.origin.push", "HEAD:refs/for/master"); err != nil {
+			return fmt.Errorf("not able to set remote.origin.push for project %s(%s) due to error: %v", p.Name, p.Path, err)
+		}
 	}
-	if err := scm.Config("remote.origin.push", "HEAD:refs/for/master"); err != nil {
-		return fmt.Errorf("not able to set remote.origin.push for project %s(%s) due to error: %v", p.Name, p.Path, err)
+	if err := scm.Config("--get", "push.default"); err != nil {
+		// push.default does not exist.
+		if err := scm.Config("push.default", "nothing"); err != nil {
+			return fmt.Errorf("not able to set push.default for project %s(%s) due to error: %v", p.Name, p.Path, err)
+		}
 	}
 	jirix.Logger.Debugf("set remote.origin.push to \"HEAD:refs/for/master\" for project %s(%s)", p.Name, p.Path)
 	return nil