comparison src/org/tmatesoft/hg/core/HgIncomingCommand.java @ 208:ef8eba4aa215

Correct index of revisions to be added into a repository
author Artem Tikhomirov <tikhomirov.artem@gmail.com>
date Thu, 28 Apr 2011 03:17:50 +0200
parents ffc5f6d59f7e
children 41a778e3fd31
comparison
equal deleted inserted replaced
207:1bf0a5af2d5d 208:ef8eba4aa215
130 } 130 }
131 final List<Nodeid> common = getCommon(handler); 131 final List<Nodeid> common = getCommon(handler);
132 HgBundle changegroup = remoteRepo.getChanges(common); 132 HgBundle changegroup = remoteRepo.getChanges(common);
133 try { 133 try {
134 changegroup.changes(localRepo, new HgChangelog.Inspector() { 134 changegroup.changes(localRepo, new HgChangelog.Inspector() {
135 private int localIndex = -1; // in case we start with empty repo and localIndex would not get initialized in regular way 135 private int localIndex;
136 private final HgChangelog.ParentWalker parentHelper; 136 private final HgChangelog.ParentWalker parentHelper;
137 private final ChangesetTransformer transformer; 137 private final ChangesetTransformer transformer;
138 private final HgChangelog changelog; 138
139
140 { 139 {
141 transformer = new ChangesetTransformer(localRepo, handler, getParentHelper()); 140 transformer = new ChangesetTransformer(localRepo, handler, getParentHelper());
142 transformer.limitBranches(branches); 141 transformer.limitBranches(branches);
143 parentHelper = getParentHelper(); 142 parentHelper = getParentHelper();
144 changelog = localRepo.getChangelog(); 143 // new revisions, if any, would be added after all existing, and would get numbered started with last+1
144 localIndex = localRepo.getChangelog().getRevisionCount();
145 } 145 }
146 146
147 public void next(int revisionNumber, Nodeid nodeid, RawChangeset cset) { 147 public void next(int revisionNumber, Nodeid nodeid, RawChangeset cset) {
148 if (parentHelper.knownNode(nodeid)) { 148 if (parentHelper.knownNode(nodeid)) {
149 if (!common.contains(nodeid)) { 149 if (!common.contains(nodeid)) {
150 throw new HgBadStateException("Bundle shall not report known nodes other than roots we've supplied"); 150 throw new HgBadStateException("Bundle shall not report known nodes other than roots we've supplied");
151 } 151 }
152 localIndex = changelog.getLocalRevision(nodeid);
153 return; 152 return;
154 } 153 }
155 transformer.next(++localIndex, nodeid, cset); 154 transformer.next(localIndex++, nodeid, cset);
156 } 155 }
157 }); 156 });
158 } catch (IOException ex) { 157 } catch (IOException ex) {
159 throw new HgException(ex); 158 throw new HgException(ex);
160 } 159 }