Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in 2.0.3, 2.0.4, and 2.0.5

stable repowidget: delay bundlerepo clearing until after pull (fixes #469)

I believe this performs a more accurate revset refresh after doing a partial
pull from a bundle; since the revision numbers may change after the pull.

Changeset 37bce9d5ea7e

Parent 7ad9d0a2c7b3

by Steve Borho

Changes to 2 files · Browse files at 37bce9d5ea7e Showing diff from parent 7ad9d0a2c7b3 Diff from another changeset...

 
268
269
270
 
271
272
273
 
310
311
312
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
 
268
269
270
271
272
273
274
 
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
 
339
340
341
342
 
 
 
 
 
 
 
 
 
 
343
344
345
@@ -268,6 +268,7 @@
  sw.outgoingNodes.connect(self.setOutgoingNodes)   sw.showMessage.connect(self.showMessage)   sw.incomingBundle.connect(self.setBundle) + sw.pullCompleted.connect(self.onPullCompleted)   sw.refreshTargets(self.rev)   return sw   @@ -310,24 +311,35 @@
  self.revDetailsWidget.setRepo(self.repo)   self.manifestDemand.forward('setRepo', self.repo)   + def onPullCompleted(self): + if self.bundle: + # create a new bundlerepo instance; revision numbers may change + brepo = thgrepo.repository(self.repo.ui, self.repo.root, + bundle=self.bundle) + repo = thgrepo.repository(self.repo.ui, self.repo.root) + if len(repo) == len(brepo): + # all bundle revisions pulled + self.clearBundle() + self.reload() + else: + # refresh revset with remaining revisions + self.revset = range(len(repo), len(brepo)) + self.repo = brepo + self.repoview.setRepo(brepo) + self.revDetailsWidget.setRepo(brepo) + self.manifestDemand.forward('setRepo', brepo) + self.reload() + self.repomodel.revset = self.revset + self.repoview.resetBrowseHistory(self.revset) + self._reload_rev = self.revset[0] +   def acceptBundle(self):   self.taskTabsWidget.setCurrentIndex(self.syncTabIndex)   self.syncDemand.pullBundle(self.bundle, None) - self.clearBundle()     def pullBundleToRev(self):   self.taskTabsWidget.setCurrentIndex(self.syncTabIndex)   self.syncDemand.pullBundle(self.bundle, self.rev) - removed = [self.repo[self.rev]] - while removed: - ctx = removed.pop() - if ctx.rev() in self.revset: - self.revset.remove(ctx.rev()) - removed.extend(ctx.parents()) - self.repomodel.revset = self.revset - if not self.revset: - self.clearBundle() - self.refresh()     def rejectBundle(self):   self.clearBundle()
 
56
57
58
 
59
60
61
 
716
717
718
 
719
720
721
 
56
57
58
59
60
61
62
 
717
718
719
720
721
722
723
@@ -56,6 +56,7 @@
  outgoingNodes = pyqtSignal(object)   incomingBundle = pyqtSignal(QString)   showMessage = pyqtSignal(unicode) + pullCompleted = pyqtSignal()     output = pyqtSignal(QString, QString)   progress = pyqtSignal(QString, object, QString, QString, object) @@ -716,6 +717,7 @@
  self.showMessage.emit(_('Pull from %s completed') % urlu)   else:   self.showMessage.emit(_('Pull from %s aborted, ret %d') % (urlu, ret)) + self.pullCompleted.emit()   # handle file conflicts during rebase   if self.opts.get('rebase'):   if os.path.exists(self.repo.join('rebasestate')):