##// END OF EJS Templates
mq: add --no-backup for qpush/qpop/qgoto
Patrick Mezard -
r16635:9d76320d stable
parent child Browse files
Show More
@@ -1157,7 +1157,7 b' class queue(object):'
1157 raise util.Abort(_("patch %s not in series") % patch)
1157 raise util.Abort(_("patch %s not in series") % patch)
1158
1158
1159 def push(self, repo, patch=None, force=False, list=False,
1159 def push(self, repo, patch=None, force=False, list=False,
1160 mergeq=None, all=False, move=False, exact=False):
1160 mergeq=None, all=False, move=False, exact=False, nobackup=False):
1161 diffopts = self.diffopts()
1161 diffopts = self.diffopts()
1162 wlock = repo.wlock()
1162 wlock = repo.wlock()
1163 try:
1163 try:
@@ -1257,7 +1257,7 b' class queue(object):'
1257 end = self.series.index(patch, start) + 1
1257 end = self.series.index(patch, start) + 1
1258
1258
1259 tobackup = set()
1259 tobackup = set()
1260 if force:
1260 if not nobackup and force:
1261 m, a, r, d = self.checklocalchanges(repo, force=True)
1261 m, a, r, d = self.checklocalchanges(repo, force=True)
1262 tobackup.update(m + a)
1262 tobackup.update(m + a)
1263
1263
@@ -1298,7 +1298,8 b' class queue(object):'
1298 finally:
1298 finally:
1299 wlock.release()
1299 wlock.release()
1300
1300
1301 def pop(self, repo, patch=None, force=False, update=True, all=False):
1301 def pop(self, repo, patch=None, force=False, update=True, all=False,
1302 nobackup=False):
1302 wlock = repo.wlock()
1303 wlock = repo.wlock()
1303 try:
1304 try:
1304 if patch:
1305 if patch:
@@ -1346,7 +1347,8 b' class queue(object):'
1346 tobackup = set()
1347 tobackup = set()
1347 if update:
1348 if update:
1348 m, a, r, d = self.checklocalchanges(repo, force=force)
1349 m, a, r, d = self.checklocalchanges(repo, force=force)
1349 tobackup.update(m + a)
1350 if not nobackup and force:
1351 tobackup.update(m + a)
1350
1352
1351 self.applieddirty = True
1353 self.applieddirty = True
1352 end = len(self.applied)
1354 end = len(self.applied)
@@ -2496,7 +2498,8 b' def fold(ui, repo, *files, **opts):'
2496 wlock.release()
2498 wlock.release()
2497
2499
2498 @command("qgoto",
2500 @command("qgoto",
2499 [('f', 'force', None, _('overwrite any local changes'))],
2501 [('f', 'force', None, _('overwrite any local changes')),
2502 ('', 'no-backup', None, _('do not save backup copies of files'))],
2500 _('hg qgoto [OPTION]... PATCH'))
2503 _('hg qgoto [OPTION]... PATCH'))
2501 def goto(ui, repo, patch, **opts):
2504 def goto(ui, repo, patch, **opts):
2502 '''push or pop patches until named patch is at top of stack
2505 '''push or pop patches until named patch is at top of stack
@@ -2504,10 +2507,11 b' def goto(ui, repo, patch, **opts):'
2504 Returns 0 on success.'''
2507 Returns 0 on success.'''
2505 q = repo.mq
2508 q = repo.mq
2506 patch = q.lookup(patch)
2509 patch = q.lookup(patch)
2510 nobackup = opts.get('no_backup')
2507 if q.isapplied(patch):
2511 if q.isapplied(patch):
2508 ret = q.pop(repo, patch, force=opts.get('force'))
2512 ret = q.pop(repo, patch, force=opts.get('force'), nobackup=nobackup)
2509 else:
2513 else:
2510 ret = q.push(repo, patch, force=opts.get('force'))
2514 ret = q.push(repo, patch, force=opts.get('force'), nobackup=nobackup)
2511 q.savedirty()
2515 q.savedirty()
2512 return ret
2516 return ret
2513
2517
@@ -2634,7 +2638,9 b' def savename(path):'
2634 ('m', 'merge', None, _('merge from another queue (DEPRECATED)')),
2638 ('m', 'merge', None, _('merge from another queue (DEPRECATED)')),
2635 ('n', 'name', '',
2639 ('n', 'name', '',
2636 _('merge queue name (DEPRECATED)'), _('NAME')),
2640 _('merge queue name (DEPRECATED)'), _('NAME')),
2637 ('', 'move', None, _('reorder patch series and apply only the patch'))],
2641 ('', 'move', None,
2642 _('reorder patch series and apply only the patch')),
2643 ('', 'no-backup', None, _('do not save backup copies of files'))],
2638 _('hg qpush [-f] [-l] [-a] [--move] [PATCH | INDEX]'))
2644 _('hg qpush [-f] [-l] [-a] [--move] [PATCH | INDEX]'))
2639 def push(ui, repo, patch=None, **opts):
2645 def push(ui, repo, patch=None, **opts):
2640 """push the next patch onto the stack
2646 """push the next patch onto the stack
@@ -2659,14 +2665,15 b' def push(ui, repo, patch=None, **opts):'
2659 ui.warn(_("merging with queue at: %s\n") % mergeq.path)
2665 ui.warn(_("merging with queue at: %s\n") % mergeq.path)
2660 ret = q.push(repo, patch, force=opts.get('force'), list=opts.get('list'),
2666 ret = q.push(repo, patch, force=opts.get('force'), list=opts.get('list'),
2661 mergeq=mergeq, all=opts.get('all'), move=opts.get('move'),
2667 mergeq=mergeq, all=opts.get('all'), move=opts.get('move'),
2662 exact=opts.get('exact'))
2668 exact=opts.get('exact'), nobackup=opts.get('no_backup'))
2663 return ret
2669 return ret
2664
2670
2665 @command("^qpop",
2671 @command("^qpop",
2666 [('a', 'all', None, _('pop all patches')),
2672 [('a', 'all', None, _('pop all patches')),
2667 ('n', 'name', '',
2673 ('n', 'name', '',
2668 _('queue name to pop (DEPRECATED)'), _('NAME')),
2674 _('queue name to pop (DEPRECATED)'), _('NAME')),
2669 ('f', 'force', None, _('forget any local changes to patched files'))],
2675 ('f', 'force', None, _('forget any local changes to patched files')),
2676 ('', 'no-backup', None, _('do not save backup copies of files'))],
2670 _('hg qpop [-a] [-f] [PATCH | INDEX]'))
2677 _('hg qpop [-a] [-f] [PATCH | INDEX]'))
2671 def pop(ui, repo, patch=None, **opts):
2678 def pop(ui, repo, patch=None, **opts):
2672 """pop the current patch off the stack
2679 """pop the current patch off the stack
@@ -2685,7 +2692,7 b' def pop(ui, repo, patch=None, **opts):'
2685 else:
2692 else:
2686 q = repo.mq
2693 q = repo.mq
2687 ret = q.pop(repo, patch, force=opts.get('force'), update=localupdate,
2694 ret = q.pop(repo, patch, force=opts.get('force'), update=localupdate,
2688 all=opts.get('all'))
2695 all=opts.get('all'), nobackup=opts.get('no_backup'))
2689 q.savedirty()
2696 q.savedirty()
2690 return ret
2697 return ret
2691
2698
@@ -220,9 +220,6 b''
220 > raise util.Abort(_('qfold cannot fold already applied patch %s') % p)
220 > raise util.Abort(_('qfold cannot fold already applied patch %s') % p)
221 warning: line over 80 characters
221 warning: line over 80 characters
222 hgext/mq.py:0:
222 hgext/mq.py:0:
223 > ('', 'move', None, _('reorder patch series and apply only the patch'))],
224 warning: line over 80 characters
225 hgext/mq.py:0:
226 > ('U', 'noupdate', None, _('do not update the new working directories')),
223 > ('U', 'noupdate', None, _('do not update the new working directories')),
227 warning: line over 80 characters
224 warning: line over 80 characters
228 hgext/mq.py:0:
225 hgext/mq.py:0:
@@ -189,6 +189,19 b' test qpop --force and backup files'
189 $ cat c.orig
189 $ cat c.orig
190 cc
190 cc
191
191
192 test qpop --force --no-backup
193
194 $ hg qpush
195 applying p1
196 now at: p1
197 $ rm a.orig
198 $ echo a >> a
199 $ hg qpop --force --no-backup --verbose
200 popping p1
201 patch queue now empty
202 $ test -f a.orig && echo 'error: backup with --no-backup'
203 [1]
204
192 test qpush --force and backup files
205 test qpush --force and backup files
193
206
194 $ echo a >> a
207 $ echo a >> a
@@ -237,3 +250,34 b' test qpush --force and backup files'
237 b1
250 b1
238 $ cat d.orig
251 $ cat d.orig
239 d1
252 d1
253
254 test qpush --force --no-backup
255
256 $ hg revert -qa
257 $ hg qpop -a
258 popping p3
259 popping p2
260 patch queue now empty
261 $ echo a >> a
262 $ rm a.orig
263 $ hg qpush --force --no-backup --verbose
264 applying p2
265 patching file a
266 a
267 now at: p2
268 $ test -f a.orig && echo 'error: backup with --no-backup'
269 [1]
270
271 test qgoto --force --no-backup
272
273 $ hg qpop
274 popping p2
275 patch queue now empty
276 $ echo a >> a
277 $ hg qgoto --force --no-backup p2 --verbose
278 applying p2
279 patching file a
280 a
281 now at: p2
282 $ test -f a.orig && echo 'error: backup with --no-backup'
283 [1]
General Comments 0
You need to be logged in to leave comments. Login now