Mercurial > hg4j
comparison cmdline/org/tmatesoft/hg/console/Outgoing.java @ 176:a8df7162ec75
Extracting complete branch using remote between call to detect incoming changes is done. Arguments reorderd in remote repo to better match Hg server ideology, not my mental convenience
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Sat, 02 Apr 2011 03:01:14 +0200 |
parents | 87f40938c9b2 |
children | 62665d8f0686 |
comparison
equal
deleted
inserted
replaced
175:7653bdf82cf0 | 176:a8df7162ec75 |
---|---|
17 package org.tmatesoft.hg.console; | 17 package org.tmatesoft.hg.console; |
18 | 18 |
19 import static org.tmatesoft.hg.core.Nodeid.NULL; | 19 import static org.tmatesoft.hg.core.Nodeid.NULL; |
20 | 20 |
21 import java.io.File; | 21 import java.io.File; |
22 import java.net.MalformedURLException; | |
23 import java.net.URL; | 22 import java.net.URL; |
24 import java.util.Collection; | 23 import java.util.Collection; |
24 import java.util.Collections; | |
25 import java.util.LinkedList; | 25 import java.util.LinkedList; |
26 import java.util.List; | 26 import java.util.List; |
27 | 27 |
28 import org.tmatesoft.hg.core.HgException; | 28 import org.tmatesoft.hg.core.HgException; |
29 import org.tmatesoft.hg.core.Nodeid; | 29 import org.tmatesoft.hg.core.Nodeid; |
75 // find all local children of commonKnown | 75 // find all local children of commonKnown |
76 List<Nodeid> result = pw.childrenOf(commonKnown); | 76 List<Nodeid> result = pw.childrenOf(commonKnown); |
77 dump("Result", result); | 77 dump("Result", result); |
78 } | 78 } |
79 | 79 |
80 private static List<Nodeid> findCommonWithRemote(HgChangelog.ParentWalker pwLocal, HgRemoteRepository hgRemote) { | 80 private static List<Nodeid> findCommonWithRemote(HgChangelog.ParentWalker pwLocal, HgRemoteRepository hgRemote) throws HgException { |
81 List<Nodeid> remoteHeads = hgRemote.heads(); | 81 List<Nodeid> remoteHeads = hgRemote.heads(); |
82 LinkedList<Nodeid> common = new LinkedList<Nodeid>(); // these remotes are known in local | 82 LinkedList<Nodeid> common = new LinkedList<Nodeid>(); // these remotes are known in local |
83 LinkedList<Nodeid> toQuery = new LinkedList<Nodeid>(); // these need further queries to find common | 83 LinkedList<Nodeid> toQuery = new LinkedList<Nodeid>(); // these need further queries to find common |
84 for (Nodeid rh : remoteHeads) { | 84 for (Nodeid rh : remoteHeads) { |
85 if (pwLocal.knownNode(rh)) { | 85 if (pwLocal.knownNode(rh)) { |
117 } | 117 } |
118 } | 118 } |
119 // can't check nodes between checkUp2Head element and local heads, remote might have distinct descendants sequence | 119 // can't check nodes between checkUp2Head element and local heads, remote might have distinct descendants sequence |
120 for (RemoteBranch rb : checkUp2Head) { | 120 for (RemoteBranch rb : checkUp2Head) { |
121 // rb.root is known locally | 121 // rb.root is known locally |
122 List<Nodeid> remoteRevisions = hgRemote.between(rb.root, rb.head); | 122 List<Nodeid> remoteRevisions = hgRemote.between(rb.head, rb.root); |
123 // between gives result from head to root, I'd like to go in reverse direction | |
124 Collections.reverse(remoteRevisions); | |
123 if (remoteRevisions.isEmpty()) { | 125 if (remoteRevisions.isEmpty()) { |
124 // head is immediate child | 126 // head is immediate child |
125 common.add(rb.root); | 127 common.add(rb.root); |
126 } else { | 128 } else { |
127 Nodeid root = rb.root; | 129 Nodeid root = rb.root; |
141 break; | 143 break; |
142 } | 144 } |
143 // might get handy for next between query, to narrow search down | 145 // might get handy for next between query, to narrow search down |
144 root = n; | 146 root = n; |
145 } else { | 147 } else { |
146 remoteRevisions = hgRemote.between(root, n); | 148 remoteRevisions = hgRemote.between(n, root); |
149 Collections.reverse(remoteRevisions); | |
147 if (remoteRevisions.isEmpty()) { | 150 if (remoteRevisions.isEmpty()) { |
148 common.add(root); | 151 common.add(root); |
149 } | 152 } |
150 } | 153 } |
151 } | 154 } |