Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in 1.0, 1.0.1, and 1.0.2

merge: add discard button for null merges

Closes #873

Changeset f2dfb3e01ebb

Parent 63d1c87dcb67

by Steve Borho

Changes to one file · Browse files at f2dfb3e01ebb Showing diff from parent 63d1c87dcb67 Diff from another changeset...

 
86
87
88
 
 
 
 
 
89
90
91
 
112
113
114
 
115
116
117
 
137
138
139
 
140
141
142
 
170
171
172
 
173
174
175
 
190
191
192
193
194
195
 
 
 
 
 
 
 
 
 
196
197
198
 
 
 
 
 
 
199
200
201
 
86
87
88
89
90
91
92
93
94
95
96
 
117
118
119
120
121
122
123
 
143
144
145
146
147
148
149
 
177
178
179
180
181
182
183
 
198
199
200
 
 
 
201
202
203
204
205
206
207
208
209
210
 
 
211
212
213
214
215
216
217
218
219
@@ -86,6 +86,11 @@
  self.localframe = info   self.localrev = str(info.get_data('revnum'))   + discard = gtk.CheckButton(_('Discard all changes from merge target ' + '(other) revision')) + self.discard = discard + self.vbox.pack_start(discard, False, False) +   vlist = gtk.ListStore(str, # tool name   bool) # separator   combo = gtk.ComboBoxEntry(vlist, 0) @@ -112,6 +117,7 @@
  if len(self.repo.parents()) == 2:   self.mergetool.set_sensitive(False)   self.mergelabel.set_sensitive(False) + self.discard.set_sensitive(False)   self.buttons['merge'].set_sensitive(False)   self.buttons['commit'].set_sensitive(True)   self.buttons['undo'].set_sensitive(True) @@ -137,6 +143,7 @@
  self.otherframe.set_sensitive(normal)   self.localframe.set_sensitive(normal)   self.mergetool.set_property('visible', normal) + self.discard.set_property('visible', normal)   self.mergelabel.set_property('visible', normal)     self.buttons['merge'].set_property('visible', normal) @@ -170,6 +177,7 @@
  else:   raise _('unexpected type: %s') % type   + self.discard.set_sensitive(merged)   self.mergetool.set_sensitive(merged)   self.mergelabel.set_sensitive(merged)   self.buttons['merge'].set_sensitive(merged) @@ -190,12 +198,22 @@
  ### End of Overriding Section ###     def domerge(self): - tool = hglib.fromutf(self.mergetool.child.get_text()) - if tool: - cmdline = ['hg', '--config', 'ui.merge=%s' % tool] + if self.discard.get_active(): + c = self.repo[None] + if c.modified() or c.added() or c.removed(): + gdialog.Prompt(_('Cannot merge'), + _('Uncommitted local changes'), self).run() + return + # '.' is safer than self.localrev, in case the user has + # pulled a fast one on us and updated from the CLI + cmdline = ['hg', 'debugsetparents', '.', self.otherrev]   else: - cmdline = ['hg'] - cmdline.extend(['merge', '--rev', self.otherrev]) + tool = hglib.fromutf(self.mergetool.child.get_text()) + if tool: + cmdline = ['hg', '--config', 'ui.merge=%s' % tool] + else: + cmdline = ['hg'] + cmdline.extend(['merge', '--rev', self.otherrev])   self.execute_command(cmdline, 'merge')     def docommit(self):