Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in 2.1, 2.1.1, and 2.1.2

repowidget: add bundle context menu options (closes #265)

Changeset 1c563de29bf3

Parent a5efd407893f

by Phil Currier

Changes to one file · Browse files at 1c563de29bf3 Showing diff from parent a5efd407893f Diff from another changeset...

 
1040
1041
1042
 
 
1043
1044
1045
 
1103
1104
1105
 
 
 
 
1106
1107
1108
 
1138
1139
1140
 
1141
1142
1143
 
1354
1355
1356
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1357
1358
1359
 
1040
1041
1042
1043
1044
1045
1046
1047
 
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
 
1144
1145
1146
1147
1148
1149
1150
 
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
@@ -1040,6 +1040,8 @@
  self.emailRevision)   entry(submenu, None, isrev, _('Archive...'), 'hg-archive',   self.archiveRevision) + entry(submenu, None, isrev, _('Bundle rev to tip...'), 'menurelocate', + self.bundleRevisions)   entry(submenu, None, isctx, _('Copy patch'), 'copy-patch',   self.copyPatch)   entry(menu) @@ -1103,6 +1105,10 @@
  l = dagrange()   if l:   run.email(self.repo.ui, rev=l, repo=self.repo) + def bundleDagRange(): + l = dagrange() + if l: + self.bundleRevisions(base=l[0], tip=l[-1])   def bisectNormal():   revA, revB = self.menuselection   opts = {'good':str(revA), 'bad':str(revB)} @@ -1138,6 +1144,7 @@
  (_('Email Selected...'), emailPair, 'mail-forward'),   (_('Export DAG Range...'), exportDagRange, 'hg-export'),   (_('Email DAG Range...'), emailDagRange, 'mail-forward'), + (_('Bundle DAG Range...'), bundleDagRange, 'menurelocate'),   (_('Bisect - Good, Bad...'), bisectNormal, 'hg-bisect-good-bad'),   (_('Bisect - Bad, Good...'), bisectReverse, 'hg-bisect-bad-good'),   (_('Compress History...'), compressDlg, 'hg-compress') @@ -1354,6 +1361,34 @@
  dlg.progress.connect(self.progress)   dlg.exec_()   + def bundleRevisions(self, base=None, tip=None): + root = self.repo.root + if not base: + base = self.rev + data = dict(name=os.path.basename(root), base=base) + if tip is None: + filename = '%(name)s_%(base)s_to_tip.hg' % data + else: + data.update(rev=tip) + filename = '%(name)s_%(base)s_to_%(rev)s.hg' % data + + file = QFileDialog.getSaveFileName(self, _('Write bundle'), + hglib.tounicode(os.path.join(root, filename))) + if not file: + return + + cmdline = ['bundle', '--verbose', '--repository', root] + parents = [r.rev() == -1 and 'null' or str(r.rev()) + for r in self.repo[base].parents()] + for p in parents: + cmdline.extend(['--base', p]) + if tip: + cmdline.extend(['--rev', str(tip)]) + else: + cmdline.extend(['--rev', 'heads(descendants(%s))' % base]) + cmdline.append(hglib.fromunicode(file)) + self.runCommand(cmdline) +   def copyPatch(self):   from mercurial import commands, ui   _ui = self.repo.ui