Fix gclient sync 'dontswitchurl' url stickiness

._Capture throws exception on non-zero status, switch to
subprocess2 capture method. Switch magic value to dontswitchurl.

BUG=241907
R=dpranke@chromium.org, maruel@chromium.org

Review URL: https://chromiumcodereview.appspot.com/15325003

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@201397 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/gclient_scm.py b/gclient_scm.py
index 1c3eb79..85d0d50 100644
--- a/gclient_scm.py
+++ b/gclient_scm.py
@@ -322,8 +322,14 @@
     current_url = self._Capture(['config', 'remote.origin.url'])
     # TODO(maruel): Delete url != 'git://foo' since it's just to make the
     # unit test pass. (and update the comment above)
-    if (current_url != url and url != 'git://foo' and
-        self._Capture(['config', 'remote.origin.gclient']) != 'getoffmylawn'):
+    # Skip url auto-correction if remote.origin.gclient-auto-fix-url is set.
+    # This allows devs to use experimental repos which have a different url
+    # but whose branch(s) are the same as official repos.
+    if (current_url != url and
+        url != 'git://foo' and
+        subprocess2.capture(
+            ['git', 'config', 'remote.origin.gclient-auto-fix-url'],
+            cwd=self.checkout_path).strip() != 'False'):
       print('_____ switching %s to a new upstream' % self.relpath)
       # Make sure it's clean
       self._CheckClean(rev_str)
@@ -862,7 +868,7 @@
   def _Capture(self, args):
     return subprocess2.check_output(
         ['git'] + args,
-        stderr=subprocess2.PIPE,
+        stderr=subprocess2.VOID,
         nag_timer=self.nag_timer,
         nag_max=self.nag_max,
         cwd=self.checkout_path).strip()