Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(307)

Unified Diff: gclient.py

Issue 195913002: gclient: in managed mode, warn if .gclient has a mismatched URL (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: Fix smoketests Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | gclient_scm.py » ('j') | gclient_scm.py » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gclient.py
diff --git a/gclient.py b/gclient.py
index 86b742f594ed7252674207cd286ecd5f06fca115..8dcb93b6ab039c0ea974dcccab2ce991ce0c2a67 100755
--- a/gclient.py
+++ b/gclient.py
@@ -1044,6 +1044,40 @@ solutions = [
self._root_dir = root_dir
self.config_content = None
+ def _CheckConfig(self):
+ """Verify that the config matches the state of the existing checked-out
+ solutions."""
+ for dep in self.dependencies:
+ if dep.managed and dep.url:
+ scm = gclient_scm.CreateSCM(dep.url, self.root_dir, dep.name)
+ actual_url = scm.GetActualRemoteURL()
+ if actual_url and not scm.DoesRemoteURLMatch():
+ print >> sys.stderr, ('''
+################################################################################
+################################### WARNING! ###################################
+################################################################################
+
+Your .gclient file seems to be broken. The requested URL is different from what
+is actually checked out in %(checkout_path)s. In the future this will be an
+error.
+
+Expected: %(expected_url)s (%(expected_scm)s)
+Actual: %(actual_url)s (%(actual_scm)s)
+
+You should ensure that the URL listed in .gclient is correct and either change
+it or fix the checkout. If you're managing your own git checkout in
+%(checkout_path)s but the URL in .gclient is for an svn repository, you probably
+want to set 'managed': False in .gclient.
+
+################################################################################
+################################################################################
+################################################################################
+''' % {'checkout_path': os.path.join(self.root_dir, dep.name),
+ 'expected_url': dep.url,
+ 'expected_scm': gclient_scm.GetScmName(dep.url),
+ 'actual_url': actual_url,
+ 'actual_scm': gclient_scm.GetScmName(actual_url)})
+
def SetConfig(self, content):
assert not self.dependencies
config_dict = {}
@@ -1294,6 +1328,7 @@ solutions = [
gclient_utils.rmtree(e_dir)
# record the current list of entries for next time
self._SaveEntries()
+ self._CheckConfig()
return 0
def PrintRevInfo(self):
« no previous file with comments | « no previous file | gclient_scm.py » ('j') | gclient_scm.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698