diff options
author | Yuxuan 'fishy' Wang <fishywang@google.com> | 2014-08-18 10:57:09 -0700 |
---|---|---|
committer | Yuxuan 'fishy' Wang <fishywang@google.com> | 2014-08-18 10:57:09 -0700 |
commit | 5a26c538b392c1dbcb81783e9173db603a88f44f (patch) | |
tree | 8de997b5d9f64a6a50e57caa71f6b57789eec8d5 /org.eclipse.jgit | |
parent | 8e19fea1a9fb222d09b3fc32b1c71c86ff07e7cd (diff) | |
download | jgit-5a26c538b392c1dbcb81783e9173db603a88f44f.tar.gz jgit-5a26c538b392c1dbcb81783e9173db603a88f44f.zip |
Support non-default remotes in project tag.
Change-Id: I3c730a1ce379d142d3ed81dda4a73f86f1f9c3eb
Signed-off-by: Yuxuan 'fishy' Wang <fishywang@google.com>
Diffstat (limited to 'org.eclipse.jgit')
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/RepoCommand.java | 32 |
1 files changed, 23 insertions, 9 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/RepoCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/RepoCommand.java index 0350e1c0fc..3bf3c18840 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/RepoCommand.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/RepoCommand.java @@ -281,13 +281,16 @@ public class RepoCommand extends GitCommand<RevCommit> { final String name; final String path; final String revision; + final String remote; final Set<String> groups; final List<CopyFile> copyfiles; - Project(String name, String path, String revision, String groups) { + Project(String name, String path, String revision, + String remote, String groups) { this.name = name; this.path = path; this.revision = revision; + this.remote = remote; this.groups = new HashSet<String>(); if (groups != null && groups.length() > 0) this.groups.addAll(Arrays.asList(groups.split(","))); //$NON-NLS-1$ @@ -401,6 +404,7 @@ public class RepoCommand extends GitCommand<RevCommit> { attributes.getValue("name"), //$NON-NLS-1$ attributes.getValue("path"), //$NON-NLS-1$ attributes.getValue("revision"), //$NON-NLS-1$ + attributes.getValue("remote"), //$NON-NLS-1$ attributes.getValue("groups")); //$NON-NLS-1$ } else if ("remote".equals(qName)) { //$NON-NLS-1$ remotes.put(attributes.getValue("name"), //$NON-NLS-1$ @@ -474,18 +478,28 @@ public class RepoCommand extends GitCommand<RevCommit> { else throw new SAXException(RepoText.get().errorNoDefault); } - String remoteUrl; + removeNotInGroup(); + removeOverlaps(); + + Map<String, String> remoteUrls = new HashMap<String, String>(); + URI baseUri; try { - URI uri = new URI(baseUrl); - remoteUrl = uri.resolve(remotes.get(defaultRemote)).toString(); - if (!remoteUrl.endsWith("/")) - remoteUrl = remoteUrl + "/"; + baseUri = new URI(baseUrl); } catch (URISyntaxException e) { throw new SAXException(e); } - removeNotInGroup(); - removeOverlaps(); for (Project proj : projects) { + String remote = proj.remote; + if (remote == null) + remote = defaultRemote; + String remoteUrl = remoteUrls.get(remote); + if (remoteUrl == null) { + remoteUrl = baseUri.resolve(remotes.get(remote)).toString(); + if (!remoteUrl.endsWith("/")) + remoteUrl = remoteUrl + "/"; + remoteUrls.put(remote, remoteUrl); + } + command.addSubmodule(remoteUrl + proj.name, proj.path, proj.revision == null @@ -819,7 +833,7 @@ public class RepoCommand extends GitCommand<RevCommit> { private void addSubmodule(String url, String name, String revision, List<CopyFile> copyfiles) throws SAXException { if (repo.isBare()) { - Project proj = new Project(url, name, revision, null); + Project proj = new Project(url, name, revision, null, null); proj.copyfiles.addAll(copyfiles); bareProjects.add(proj); } else { |