Mercurial > jhg
annotate src/org/tmatesoft/hg/repo/HgSubrepoLocation.java @ 538:dd4f6311af52
Commit: first working version
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> | 
|---|---|
| date | Tue, 05 Feb 2013 22:30:21 +0100 | 
| parents | 2f9ed6bcefa2 | 
| children | 
| rev | line source | 
|---|---|
| 239 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 1 /* | 
| 403 
2747b0723867
FIXMEs: work on exceptions and javadoc
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
295diff
changeset | 2 * Copyright (c) 2011-2012 TMate Software Ltd | 
| 239 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 3 * | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 4 * This program is free software; you can redistribute it and/or modify | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 5 * it under the terms of the GNU General Public License as published by | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 6 * the Free Software Foundation; version 2 of the License. | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 7 * | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 8 * This program is distributed in the hope that it will be useful, | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 11 * GNU General Public License for more details. | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 12 * | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 13 * For information on how to redistribute this software under | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 14 * the terms of a license other than GNU General Public License | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 15 * contact TMate Software at support@hg4j.com | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 16 */ | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 17 package org.tmatesoft.hg.repo; | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 18 | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 19 import java.io.File; | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 20 | 
| 423 
9c9c442b5f2e
Major refactoring of exception handling. Low-level API uses RuntimeExceptions, while checked are left for higher level
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
403diff
changeset | 21 import org.tmatesoft.hg.core.HgRepositoryNotFoundException; | 
| 442 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 22 import org.tmatesoft.hg.core.Nodeid; | 
| 526 
2f9ed6bcefa2
Initial support for Revert command with accompanying minor refactoring
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
467diff
changeset | 23 import org.tmatesoft.hg.internal.Internals; | 
| 239 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 24 import org.tmatesoft.hg.util.Path; | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 25 | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 26 /** | 
| 467 
51d682cf9cdc
Cleaned experimental tag and updated comments/javadoc
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
442diff
changeset | 27 * Descriptor for subrepository location | 
| 442 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 28 * | 
| 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 29 * @see http://mercurial.selenic.com/wiki/Subrepository | 
| 239 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 30 * @author Artem Tikhomirov | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 31 * @author TMate Software Ltd. | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 32 */ | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 33 public class HgSubrepoLocation { | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 34 | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 35 private final HgRepository owner; | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 36 private final Kind kind; | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 37 private final Path location; | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 38 private final String source; | 
| 442 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 39 private final Nodeid revInfo; | 
| 239 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 40 | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 41 public enum Kind { Hg, SVN, Git, } | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 42 | 
| 442 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 43 /** | 
| 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 44 * | 
| 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 45 * @param parentRepo | 
| 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 46 * @param repoLocation path, shall be valid directory (i.e. even if .hgsub doesn't specify trailing slash, this one shall) | 
| 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 47 * @param actualLocation | 
| 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 48 * @param type | 
| 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 49 * @param revision may be <code>null</code> | 
| 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 50 */ | 
| 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 51 /*package-local*/ HgSubrepoLocation(HgRepository parentRepo, Path repoLocation, String actualLocation, Kind type, Nodeid revision) { | 
| 239 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 52 owner = parentRepo; | 
| 442 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 53 location = repoLocation; | 
| 239 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 54 source = actualLocation; | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 55 kind = type; | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 56 revInfo = revision; | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 57 } | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 58 | 
| 442 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 59 /** | 
| 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 60 * Sub-repository's location within owning repository, always directory, <code>path/to/nested</code>. | 
| 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 61 * <p> | 
| 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 62 * May differ from left-hand, key value from <code>.hgsub</code> if the latter doesn't include trailing slash, which is required | 
| 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 63 * for {@link Path} objects | 
| 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 64 * | 
| 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 65 * @return path to nested repository relative to owner's location | 
| 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 66 */ | 
| 239 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 67 public Path getLocation() { | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 68 return location; | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 69 } | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 70 | 
| 442 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 71 /** | 
| 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 72 * Right-hand value from <code>.hgsub</code>, with <code>[kind]</code> stripped, if any. | 
| 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 73 * @return sub-repository's source | 
| 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 74 */ | 
| 239 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 75 public String getSource() { | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 76 return source; | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 77 } | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 78 | 
| 442 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 79 /** | 
| 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 80 * Sub-repository kind, either Mercurial, Subversion or Git | 
| 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 81 * @return one of predefined constants | 
| 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 82 */ | 
| 239 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 83 public Kind getType() { | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 84 return kind; | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 85 } | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 86 | 
| 442 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 87 /** | 
| 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 88 * For a nested repository that has been committed at least once, returns | 
| 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 89 * its revision as known from <code>.hgsubstate</code> | 
| 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 90 * | 
| 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 91 * <p>Note, this revision belongs to the nested repository history, not that of owning repository. | 
| 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 92 * | 
| 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 93 * @return revision of the nested repository, or <code>null</code> if not yet committed | 
| 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 94 */ | 
| 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 95 public Nodeid getRevision() { | 
| 239 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 96 return revInfo; | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 97 } | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 98 | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 99 /** | 
| 442 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 100 * Answers whether this sub repository has ever been part of a commit of the owner repository | 
| 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 101 * | 
| 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 102 * @return <code>true</code> if owning repository records {@link #getRevision() revision} of this sub-repository | 
| 239 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 103 */ | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 104 public boolean isCommitted() { | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 105 return revInfo != null; | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 106 } | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 107 | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 108 /** | 
| 442 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 109 * Answers whether there are local changes in the sub-repository, | 
| 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 110 * @return <code>true</code> if it's dirty | 
| 239 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 111 */ | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 112 public boolean hasChanges() { | 
| 526 
2f9ed6bcefa2
Initial support for Revert command with accompanying minor refactoring
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
467diff
changeset | 113 throw Internals.notImplemented(); | 
| 239 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 114 } | 
| 442 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 115 | 
| 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 116 /** | 
| 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 117 * Access repository that owns nested one described by this object | 
| 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 118 */ | 
| 239 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 119 public HgRepository getOwner() { | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 120 return owner; | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 121 } | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 122 | 
| 423 
9c9c442b5f2e
Major refactoring of exception handling. Low-level API uses RuntimeExceptions, while checked are left for higher level
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
403diff
changeset | 123 /** | 
| 442 
6865eb742883
Tests for subrepo API, refactor status tests for reuse, better subrepos API
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
423diff
changeset | 124 * Access nested repository as a full-fledged Mercurial repository | 
| 423 
9c9c442b5f2e
Major refactoring of exception handling. Low-level API uses RuntimeExceptions, while checked are left for higher level
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
403diff
changeset | 125 * | 
| 
9c9c442b5f2e
Major refactoring of exception handling. Low-level API uses RuntimeExceptions, while checked are left for higher level
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
403diff
changeset | 126 * @return object to access sub-repository | 
| 
9c9c442b5f2e
Major refactoring of exception handling. Low-level API uses RuntimeExceptions, while checked are left for higher level
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
403diff
changeset | 127 * @throws HgRepositoryNotFoundException if failed to find repository | 
| 
9c9c442b5f2e
Major refactoring of exception handling. Low-level API uses RuntimeExceptions, while checked are left for higher level
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
403diff
changeset | 128 * @throws HgRuntimeException subclass thereof to indicate issues with the library. <em>Runtime exception</em> | 
| 
9c9c442b5f2e
Major refactoring of exception handling. Low-level API uses RuntimeExceptions, while checked are left for higher level
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
403diff
changeset | 129 */ | 
| 
9c9c442b5f2e
Major refactoring of exception handling. Low-level API uses RuntimeExceptions, while checked are left for higher level
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
403diff
changeset | 130 public HgRepository getRepo() throws HgRepositoryNotFoundException { | 
| 239 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 131 if (kind != Kind.Hg) { | 
| 423 
9c9c442b5f2e
Major refactoring of exception handling. Low-level API uses RuntimeExceptions, while checked are left for higher level
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
403diff
changeset | 132 throw new HgInvalidStateException(String.format("Unsupported subrepository %s", kind)); | 
| 239 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 133 } | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 134 return new HgLookup().detect(new File(owner.getWorkingDir(), source)); | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 135 } | 
| 
df9d2854d3d6
Initial access to subrepositories
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 136 } | 
