Mercurial > jhg
comparison src/org/tmatesoft/hg/internal/RepositoryComparator.java @ 652:cd77bf51b562
Push: tests. Commit respects phases.new-commit setting. Fix outgoing when changes are not children of common (Issue 47)
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
|---|---|
| date | Tue, 02 Jul 2013 23:21:16 +0200 |
| parents | 14dac192aa26 |
| children | 629a7370554c |
comparison
equal
deleted
inserted
replaced
| 651:6e98d34eaca8 | 652:cd77bf51b562 |
|---|---|
| 93 public List<Nodeid> getLocalOnlyRevisions() { | 93 public List<Nodeid> getLocalOnlyRevisions() { |
| 94 final List<Nodeid> c = getCommon(); | 94 final List<Nodeid> c = getCommon(); |
| 95 if (c.isEmpty()) { | 95 if (c.isEmpty()) { |
| 96 return localRepo.all(); | 96 return localRepo.all(); |
| 97 } else { | 97 } else { |
| 98 return localRepo.childrenOf(c); | 98 RevisionSet localHeads = new RevisionSet(localRepo.heads()); |
| 99 final List<Nodeid> commonChildren = localRepo.childrenOf(c); | |
| 100 final RevisionSet rsCommonChildren = new RevisionSet(commonChildren); | |
| 101 RevisionSet headsNotFromCommon = localHeads.subtract(rsCommonChildren); | |
| 102 if (headsNotFromCommon.isEmpty()) { | |
| 103 return commonChildren; | |
| 104 } | |
| 105 RevisionSet all = new RevisionSet(localRepo.all()); | |
| 106 final RevisionSet rsCommon = new RevisionSet(c); | |
| 107 RevisionSet rsAncestors = all.ancestors(headsNotFromCommon, localRepo); | |
| 108 // #ancestors gives only parents, we need terminating children as well | |
| 109 rsAncestors = rsAncestors.union(headsNotFromCommon); | |
| 110 final RevisionSet rsAncestorsCommon = all.ancestors(rsCommon, localRepo); | |
| 111 RevisionSet outgoing = rsAncestors.subtract(rsAncestorsCommon).subtract(rsCommon); | |
| 112 return outgoing.union(rsCommonChildren).asList(); | |
| 99 } | 113 } |
| 100 } | 114 } |
| 101 | 115 |
| 102 /** | 116 /** |
| 103 * Similar to @link {@link #getLocalOnlyRevisions()}, use this one if you need access to changelog entry content, not | 117 * Similar to @link {@link #getLocalOnlyRevisions()}, use this one if you need access to changelog entry content, not |
