From: paulm update: make merging (when possible) the default, without asking diff -r a8cd8743e4c2 tortoisehg/hgtk/update.py --- a/tortoisehg/hgtk/update.py Wed Dec 09 15:01:08 2009 -0800 +++ b/tortoisehg/hgtk/update.py Fri Dec 11 15:51:08 2009 -0800 @@ -13,7 +13,7 @@ from mercurial import hg, ui from tortoisehg.util.i18n import _ -from tortoisehg.util import hglib, paths +from tortoisehg.util import hglib, paths, settings from tortoisehg.util.hglib import LookupError, RepoLookupError, RepoError from tortoisehg.hgtk import csinfo, gtklib, gdialog, hgcmd @@ -44,6 +44,9 @@ self.updatebtn = self.add_button(_('Update'), gtk.RESPONSE_OK) self.closebtn = self.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CLOSE) + # persistent settings + self.settings = settings.Settings('update') + # layout table for fixed items table = gtklib.LayoutTable() self.vbox.pack_start(table, True, True, 2) @@ -61,6 +64,11 @@ self.opt_clean = btn table.add_row(None, btn) + ## automatically merge, if possible (similar to command-line behavior) + check = gtk.CheckButton(_('Always merge (when possible)')) + self.opt_merge = check + table.add_row(None, check) + ## fill list of combo if rev != None: combo.append_text(str(rev)) @@ -107,10 +115,21 @@ self.opt_clean.connect('toggled', lambda b: self.update_summaries()) # prepare to show + self.load_settings() self.update_summaries() self.updatebtn.grab_focus() gtklib.idle_add_single_call(self.after_init) + def load_settings(self): + merge = self.settings.get_value('mergedefault', False) + self.opt_merge.set_active(merge) + + def store_settings(self): + checked = self.opt_merge.get_active() + self.settings.set_value('mergedefault', checked) + + self.settings.write() + def after_init(self): # CmdWidget self.cmd = hgcmd.CmdWidget() @@ -139,6 +158,7 @@ if ret == gtk.RESPONSE_YES: self.abort() else: + self.store_settings() self.destroy() return # close dialog # Abort button @@ -245,10 +265,13 @@ retid = [ id for id, (label, desc) in data.items() \ if label == retlabel ][0] return dict([(id, id == retid) for id in data.keys()]) + # If merge-by-default, we want to merge whenever possible, + # without prompting user (similar to command-line behavior) + defaultmerge = self.opt_merge.get_active() clean = isclean() if clean: cmdline.append('--check') - else: + elif not (defaultmerge and islocalmerge(cur, node, clean)): ret = confirmupdate(clean) if ret['discard']: cmdline.append('--clean')