Mercurial > public > mercurial-scm > hg
comparison mercurial/commands.py @ 38324:c924e7dbcd0f
import: use context manager for wlock
Differential Revision: https://phab.mercurial-scm.org/D3747
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Thu, 14 Jun 2018 15:12:28 -0700 |
parents | 48c52385e062 |
children | b8f45fc27370 |
comparison
equal
deleted
inserted
replaced
38323:48c52385e062 | 38324:c924e7dbcd0f |
---|---|
3106 raise error.Abort(_('cannot use --exact with --edit')) | 3106 raise error.Abort(_('cannot use --exact with --edit')) |
3107 if opts.get('prefix'): | 3107 if opts.get('prefix'): |
3108 raise error.Abort(_('cannot use --exact with --prefix')) | 3108 raise error.Abort(_('cannot use --exact with --prefix')) |
3109 | 3109 |
3110 base = opts["base"] | 3110 base = opts["base"] |
3111 wlock = dsguard = lock = tr = None | 3111 dsguard = lock = tr = None |
3112 msgs = [] | 3112 msgs = [] |
3113 ret = 0 | 3113 ret = 0 |
3114 | 3114 |
3115 | 3115 with repo.wlock(): |
3116 try: | 3116 try: |
3117 wlock = repo.wlock() | 3117 if update: |
3118 | 3118 cmdutil.checkunfinished(repo) |
3119 if update: | 3119 if (exact or not opts.get('force')): |
3120 cmdutil.checkunfinished(repo) | 3120 cmdutil.bailifchanged(repo) |
3121 if (exact or not opts.get('force')): | 3121 |
3122 cmdutil.bailifchanged(repo) | 3122 if not opts.get('no_commit'): |
3123 | 3123 lock = repo.lock() |
3124 if not opts.get('no_commit'): | 3124 tr = repo.transaction('import') |
3125 lock = repo.lock() | |
3126 tr = repo.transaction('import') | |
3127 else: | |
3128 dsguard = dirstateguard.dirstateguard(repo, 'import') | |
3129 parents = repo[None].parents() | |
3130 for patchurl in patches: | |
3131 if patchurl == '-': | |
3132 ui.status(_('applying patch from stdin\n')) | |
3133 patchfile = ui.fin | |
3134 patchurl = 'stdin' # for error message | |
3135 else: | 3125 else: |
3136 patchurl = os.path.join(base, patchurl) | 3126 dsguard = dirstateguard.dirstateguard(repo, 'import') |
3137 ui.status(_('applying %s\n') % patchurl) | 3127 parents = repo[None].parents() |
3138 patchfile = hg.openpath(ui, patchurl) | 3128 for patchurl in patches: |
3139 | 3129 if patchurl == '-': |
3140 haspatch = False | 3130 ui.status(_('applying patch from stdin\n')) |
3141 for hunk in patch.split(patchfile): | 3131 patchfile = ui.fin |
3142 with patch.extract(ui, hunk) as patchdata: | 3132 patchurl = 'stdin' # for error message |
3143 msg, node, rej = cmdutil.tryimportone(ui, repo, patchdata, | |
3144 parents, opts, | |
3145 msgs, hg.clean) | |
3146 if msg: | |
3147 haspatch = True | |
3148 ui.note(msg + '\n') | |
3149 if update or exact: | |
3150 parents = repo[None].parents() | |
3151 else: | 3133 else: |
3152 parents = [repo[node]] | 3134 patchurl = os.path.join(base, patchurl) |
3153 if rej: | 3135 ui.status(_('applying %s\n') % patchurl) |
3154 ui.write_err(_("patch applied partially\n")) | 3136 patchfile = hg.openpath(ui, patchurl) |
3155 ui.write_err(_("(fix the .rej files and run " | 3137 |
3156 "`hg commit --amend`)\n")) | 3138 haspatch = False |
3157 ret = 1 | 3139 for hunk in patch.split(patchfile): |
3158 break | 3140 with patch.extract(ui, hunk) as patchdata: |
3159 | 3141 msg, node, rej = cmdutil.tryimportone(ui, repo, |
3160 if not haspatch: | 3142 patchdata, |
3161 raise error.Abort(_('%s: no diffs found') % patchurl) | 3143 parents, opts, |
3162 | 3144 msgs, hg.clean) |
3163 if tr: | 3145 if msg: |
3164 tr.close() | 3146 haspatch = True |
3165 if msgs: | 3147 ui.note(msg + '\n') |
3166 repo.savecommitmessage('\n* * *\n'.join(msgs)) | 3148 if update or exact: |
3167 if dsguard: | 3149 parents = repo[None].parents() |
3168 dsguard.close() | 3150 else: |
3169 return ret | 3151 parents = [repo[node]] |
3170 finally: | 3152 if rej: |
3171 if tr: | 3153 ui.write_err(_("patch applied partially\n")) |
3172 tr.release() | 3154 ui.write_err(_("(fix the .rej files and run " |
3173 release(lock, dsguard, wlock) | 3155 "`hg commit --amend`)\n")) |
3156 ret = 1 | |
3157 break | |
3158 | |
3159 if not haspatch: | |
3160 raise error.Abort(_('%s: no diffs found') % patchurl) | |
3161 | |
3162 if tr: | |
3163 tr.close() | |
3164 if msgs: | |
3165 repo.savecommitmessage('\n* * *\n'.join(msgs)) | |
3166 if dsguard: | |
3167 dsguard.close() | |
3168 return ret | |
3169 finally: | |
3170 if tr: | |
3171 tr.release() | |
3172 release(lock, dsguard) | |
3174 | 3173 |
3175 @command('incoming|in', | 3174 @command('incoming|in', |
3176 [('f', 'force', None, | 3175 [('f', 'force', None, |
3177 _('run even if remote repository is unrelated')), | 3176 _('run even if remote repository is unrelated')), |
3178 ('n', 'newest-first', None, _('show newest record first')), | 3177 ('n', 'newest-first', None, _('show newest record first')), |