Mercurial > jhg
diff src/org/tmatesoft/hg/internal/RepositoryComparator.java @ 645:14dac192aa26
Push: phase2 - upload bundle with changes to remote server
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Thu, 20 Jun 2013 19:15:09 +0200 |
parents | 6526d8adbc0f |
children | cd77bf51b562 |
line wrap: on
line diff
--- a/src/org/tmatesoft/hg/internal/RepositoryComparator.java Wed Jun 19 16:04:24 2013 +0200 +++ b/src/org/tmatesoft/hg/internal/RepositoryComparator.java Thu Jun 20 19:15:09 2013 +0200 @@ -54,6 +54,7 @@ private final HgParentChildMap<HgChangelog> localRepo; private final HgRemoteRepository remoteRepo; private List<Nodeid> common; + private List<Nodeid> remoteHeads; public RepositoryComparator(HgParentChildMap<HgChangelog> pwLocal, HgRemoteRepository hgRemote) { localRepo = pwLocal; @@ -81,11 +82,21 @@ return common; } + public List<Nodeid> getRemoteHeads() { + assert remoteHeads != null; + return remoteHeads; + } + /** * @return revisions that are children of common entries, i.e. revisions that are present on the local server and not on remote. */ public List<Nodeid> getLocalOnlyRevisions() { - return localRepo.childrenOf(getCommon()); + final List<Nodeid> c = getCommon(); + if (c.isEmpty()) { + return localRepo.all(); + } else { + return localRepo.childrenOf(c); + } } /** @@ -128,7 +139,7 @@ } private List<Nodeid> findCommonWithRemote() throws HgRemoteConnectionException { - List<Nodeid> remoteHeads = remoteRepo.heads(); + remoteHeads = remoteRepo.heads(); LinkedList<Nodeid> resultCommon = new LinkedList<Nodeid>(); // these remotes are known in local LinkedList<Nodeid> toQuery = new LinkedList<Nodeid>(); // these need further queries to find common for (Nodeid rh : remoteHeads) {