Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in 0.8.1, 0.8.2, and 0.8.3

hgignore: validate globs and regexp before adding to .hgignore

Refs #374

Changeset 8d049811e30f

Parent bc8d9a025fac

by Steve Borho

Changes to one file · Browse files at 8d049811e30f Showing diff from parent bc8d9a025fac Diff from another changeset...

Change 1 of 3 Show Entire File hggtk/​hgignore.py Stacked
 
8
9
10
11
 
12
13
14
15
16
 
17
18
19
 
24
25
26
27
 
 
28
29
30
 
169
170
171
172
 
 
 
 
 
 
 
 
173
 
174
175
176
177
178
179
180
 
 
 
 
 
 
 
 
181
 
182
183
184
 
8
9
10
 
11
12
13
14
15
 
16
17
18
19
 
24
25
26
 
27
28
29
30
31
 
170
171
172
 
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
 
189
190
191
192
193
194
195
196
197
198
199
200
201
@@ -8,12 +8,12 @@
 import gtk  import gobject   -from mercurial import hg, ui, match +from mercurial import hg, ui, match, util    from thgutil.i18n import _  from thgutil import shlib, hglib, paths   -from hggtk import gtklib +from hggtk import gtklib, gdialog    class HgIgnoreDialog(gtk.Window):   'Edit a reposiory .hgignore file' @@ -24,7 +24,8 @@
  gtklib.set_tortoise_keys(self)     self.root = paths.find_root() - self.set_title(_('Ignore filter for ') + hglib.toutf(os.path.basename(self.root))) + base = os.path.basename(self.root) + self.set_title(_('Ignore filter for ') + hglib.toutf(base))   self.set_default_size(630, 400)   self.notify_func = None   @@ -169,16 +170,32 @@
  newglob = hglib.fromutf(glob_entry.get_text())   if newglob == '':   return - self.ignorelines.append('glob:' + newglob) + newglob = 'glob:' + newglob + try: + match.match(self.root, '', [], [newglob]) + except util.Abort, inst: + gdialog.Prompt(_('Invalid glob expression'), str(inst), + self).run() + return + self.ignorelines.append(newglob)   self.write_ignore_lines() + glob_entry.set_text('')   self.refresh()     def add_regexp(self, widget, regexp_entry):   newregexp = hglib.fromutf(regexp_entry.get_text())   if newregexp == '':   return - self.ignorelines.append('regexp:' + newregexp) + newregexp = 're:' + newregexp + try: + match.match(self.root, '', [], [newregexp]) + except util.Abort, inst: + gdialog.Prompt(_('Invalid regexp expression'), str(inst), + self).run() + return + self.ignorelines.append(newregexp)   self.write_ignore_lines() + regexp_entry.set_text('')   self.refresh()     def thgrefresh(self, window):