Fix non-relative remote defined in manifest xml.

Currently if the remote defined in repo manifest xml is non-relative (e.g.
"https://chromium.googlesource.com"), our code will break. This change fixed
that.

It also makes that remotes are ending with "/".

Change-Id: Icef46360b32227a9db1d9bb9e6d929c72aeaa8df
Signed-off-by: Yuxuan 'fishy' Wang <fishywang@google.com>
This commit is contained in:
Yuxuan 'fishy' Wang 2014-08-06 18:17:29 -07:00
parent d846610035
commit 66ad4237be
1 changed files with 10 additions and 3 deletions

View File

@ -420,15 +420,22 @@ public void endDocument() throws SAXException {
} }
final String remoteUrl; final String remoteUrl;
try { try {
URI uri = new URI(baseUrl); URI uri = new URI(remotes.get(defaultRemote));
remoteUrl = uri.resolve(remotes.get(defaultRemote)).toString(); if (uri.getHost() != null) {
// This is not relative path, no need for baseUrl.
remoteUrl = uri.toString();
} else {
uri = new URI(baseUrl);
remoteUrl = uri.resolve(
remotes.get(defaultRemote)).toString();
}
} catch (URISyntaxException e) { } catch (URISyntaxException e) {
throw new SAXException(e); throw new SAXException(e);
} }
removeNotInGroup(); removeNotInGroup();
removeOverlaps(); removeOverlaps();
for (Project proj : projects) { for (Project proj : projects) {
command.addSubmodule(remoteUrl + proj.name, command.addSubmodule(remoteUrl + "/" + proj.name,
proj.path, proj.path,
proj.revision == null proj.revision == null
? defaultRevision : proj.revision, ? defaultRevision : proj.revision,