Mercurial > jhg
comparison src/org/tmatesoft/hg/repo/HgLookup.java @ 503:0bd2d0441d8f
Add lookup of remote paths from repository's .hg/hgrc, respect default (origin)
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
|---|---|
| date | Wed, 31 Oct 2012 15:17:21 +0100 |
| parents | e4eaa23e3442 |
| children | 2f9ed6bcefa2 |
comparison
equal
deleted
inserted
replaced
| 502:37d97854c6ad | 503:0bd2d0441d8f |
|---|---|
| 26 import org.tmatesoft.hg.core.HgRepositoryNotFoundException; | 26 import org.tmatesoft.hg.core.HgRepositoryNotFoundException; |
| 27 import org.tmatesoft.hg.core.SessionContext; | 27 import org.tmatesoft.hg.core.SessionContext; |
| 28 import org.tmatesoft.hg.internal.BasicSessionContext; | 28 import org.tmatesoft.hg.internal.BasicSessionContext; |
| 29 import org.tmatesoft.hg.internal.ConfigFile; | 29 import org.tmatesoft.hg.internal.ConfigFile; |
| 30 import org.tmatesoft.hg.internal.DataAccessProvider; | 30 import org.tmatesoft.hg.internal.DataAccessProvider; |
| 31 import org.tmatesoft.hg.repo.HgRepoConfig.PathsSection; | |
| 31 | 32 |
| 32 /** | 33 /** |
| 33 * Utility methods to find Mercurial repository at a given location | 34 * Utility methods to find Mercurial repository at a given location |
| 34 * | 35 * |
| 35 * @author Artem Tikhomirov | 36 * @author Artem Tikhomirov |
| 81 } | 82 } |
| 82 return new HgBundle(getContext(), new DataAccessProvider(getContext()), location).link(); | 83 return new HgBundle(getContext(), new DataAccessProvider(getContext()), location).link(); |
| 83 } | 84 } |
| 84 | 85 |
| 85 /** | 86 /** |
| 86 * Try to instantiate remote server. | 87 * Try to instantiate remote server using an immediate url or an url from configuration files |
| 87 * @param key either URL or a key from configuration file that points to remote server | 88 * |
| 88 * @param hgRepo <em>NOT USED YET<em> local repository that may have extra config, or default remote location | 89 * @param key either URL or a key from configuration file that points to remote server; if <code>null</code> or empty string, default remote location of the supplied repository (if any) is looked up |
| 90 * @param hgRepo optional local repository to get default or otherwise configured remote location | |
| 89 * @return an instance featuring access to remote repository, check {@link HgRemoteRepository#isInvalid()} before actually using it | 91 * @return an instance featuring access to remote repository, check {@link HgRemoteRepository#isInvalid()} before actually using it |
| 90 * @throws HgBadArgumentException if anything is wrong with the remote server's URL | 92 * @throws HgBadArgumentException if anything is wrong with the remote server's URL |
| 91 */ | 93 */ |
| 92 public HgRemoteRepository detectRemote(String key, HgRepository hgRepo) throws HgBadArgumentException { | 94 public HgRemoteRepository detectRemote(String key, HgRepository hgRepo) throws HgBadArgumentException { |
| 93 URL url; | 95 URL url; |
| 98 } catch (MalformedURLException ex) { | 100 } catch (MalformedURLException ex) { |
| 99 url = null; | 101 url = null; |
| 100 toReport = ex; | 102 toReport = ex; |
| 101 } | 103 } |
| 102 if (url == null) { | 104 if (url == null) { |
| 103 String server = getGlobalConfig().getSection("paths").get(key); | 105 String server = null; |
| 106 if (hgRepo != null && !hgRepo.isInvalid()) { | |
| 107 PathsSection ps = hgRepo.getConfiguration().getPaths(); | |
| 108 server = key == null || key.trim().isEmpty() ? ps.getDefault() : ps.getString(key, null); | |
| 109 } else if (key == null || key.trim().length() == 0) { | |
| 110 throw new HgBadArgumentException("Can't look up empty key in a global configuration", null); | |
| 111 } | |
| 112 if (server == null) { | |
| 113 server = getGlobalConfig().getSection("paths").get(key); | |
| 114 } | |
| 104 if (server == null) { | 115 if (server == null) { |
| 105 throw new HgBadArgumentException(String.format("Can't find server %s specification in the config", key), toReport); | 116 throw new HgBadArgumentException(String.format("Can't find server %s specification in the config", key), toReport); |
| 106 } | 117 } |
| 107 try { | 118 try { |
| 108 url = new URL(server); | 119 url = new URL(server); |
