From 13111b4e97d8cccdba5da974de0996994c64c7e5 Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Mon, 19 Sep 2011 11:00:31 -0700 Subject: [PATCH] Add support for url.*.insteadof Teach repo how to resolve URLs using the url.insteadof feature that C Git natively uses during clone, fetch or push. This will later allow repo to resolve a URL before accessing it directly. We do not want to pre-resolve things and store the resolved URL into individual projects, as this makes it impossible for the user to undo the insteadof mapping at a later date. Change-Id: I0f62e811197c53fbc8a8be424e3cabf4ed07b4cb Signed-off-by: Shawn O. Pearce --- git_config.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/git_config.py b/git_config.py index 19c19f19..e4f4a0ab 100644 --- a/git_config.py +++ b/git_config.py @@ -198,6 +198,15 @@ class GitConfig(object): except KeyError: return False + def UrlInsteadOf(self, url): + """Resolve any url.*.insteadof references. + """ + for new_url in self.GetSubSections('url'): + old_url = self.GetString('url.%s.insteadof' % new_url) + if old_url is not None and url.startswith(old_url): + return new_url + url[len(old_url):] + return url + @property def _sections(self): d = self._section_dict