Show More
@@ -1822,7 +1822,7 b' def pullrebase(orig, ui, repo, *args, **' | |||||
1822 | ui.debug('--update and --rebase are not compatible, ignoring ' |
|
1822 | ui.debug('--update and --rebase are not compatible, ignoring ' | |
1823 | 'the update flag\n') |
|
1823 | 'the update flag\n') | |
1824 |
|
1824 | |||
1825 | cmdutil.checkunfinished(repo) |
|
1825 | cmdutil.checkunfinished(repo, skipmerge=True) | |
1826 | cmdutil.bailifchanged(repo, hint=_('cannot pull with rebase: ' |
|
1826 | cmdutil.bailifchanged(repo, hint=_('cannot pull with rebase: ' | |
1827 | 'please commit or shelve your changes first')) |
|
1827 | 'please commit or shelve your changes first')) | |
1828 |
|
1828 | |||
@@ -1950,6 +1950,6 b' def uisetup(ui):' | |||||
1950 | entry[1].append(('t', 'tool', '', |
|
1950 | entry[1].append(('t', 'tool', '', | |
1951 | _("specify merge tool for rebase"))) |
|
1951 | _("specify merge tool for rebase"))) | |
1952 | cmdutil.summaryhooks.add('rebase', summaryhook) |
|
1952 | cmdutil.summaryhooks.add('rebase', summaryhook) | |
1953 | statemod.addunfinished('rebase', fname='rebasestate') |
|
1953 | statemod.addunfinished('rebase', fname='rebasestate', stopflag=True) | |
1954 | cmdutil.afterresolvedstates.append( |
|
1954 | cmdutil.afterresolvedstates.append( | |
1955 | ['rebasestate', _('hg rebase --continue')]) |
|
1955 | ['rebasestate', _('hg rebase --continue')]) |
@@ -32,10 +32,12 b' command = registrar.command(cmdtable)' | |||||
32 | testedwith = 'ships-with-hg-core' |
|
32 | testedwith = 'ships-with-hg-core' | |
33 |
|
33 | |||
34 | def checklocalchanges(repo, force=False): |
|
34 | def checklocalchanges(repo, force=False): | |
35 | cmdutil.checkunfinished(repo) |
|
|||
36 | s = repo.status() |
|
35 | s = repo.status() | |
37 | if not force: |
|
36 | if not force: | |
|
37 | cmdutil.checkunfinished(repo) | |||
38 | cmdutil.bailifchanged(repo) |
|
38 | cmdutil.bailifchanged(repo) | |
|
39 | else: | |||
|
40 | cmdutil.checkunfinished(repo, skipmerge=True) | |||
39 | return s |
|
41 | return s | |
40 |
|
42 | |||
41 | def _findupdatetarget(repo, nodes): |
|
43 | def _findupdatetarget(repo, nodes): |
@@ -760,6 +760,8 b' def kwtransplanted(context, mapping):' | |||||
760 | def extsetup(ui): |
|
760 | def extsetup(ui): | |
761 | statemod.addunfinished ( |
|
761 | statemod.addunfinished ( | |
762 | 'transplant', fname='transplant/journal', clearable=True, |
|
762 | 'transplant', fname='transplant/journal', clearable=True, | |
|
763 | statushint=_('To continue: hg transplant --continue\n' | |||
|
764 | 'To abort: hg update'), | |||
763 | cmdhint=_("use 'hg transplant --continue' or 'hg update' to abort") |
|
765 | cmdhint=_("use 'hg transplant --continue' or 'hg update' to abort") | |
764 | ) |
|
766 | ) | |
765 |
|
767 |
@@ -623,15 +623,14 b' def morestatus(repo, fm):' | |||||
623 | statetuple = statemod.getrepostate(repo) |
|
623 | statetuple = statemod.getrepostate(repo) | |
624 | label = 'status.morestatus' |
|
624 | label = 'status.morestatus' | |
625 | if statetuple: |
|
625 | if statetuple: | |
626 |
state |
|
626 | state, helpfulmsg = statetuple | |
627 | statemsg = _('The repository is in an unfinished *%s* state.') % state |
|
627 | statemsg = _('The repository is in an unfinished *%s* state.') % state | |
628 | fm.plain('%s\n' % _commentlines(statemsg), label=label) |
|
628 | fm.plain('%s\n' % _commentlines(statemsg), label=label) | |
629 | conmsg = _conflictsmsg(repo) |
|
629 | conmsg = _conflictsmsg(repo) | |
630 | if conmsg: |
|
630 | if conmsg: | |
631 | fm.plain('%s\n' % conmsg, label=label) |
|
631 | fm.plain('%s\n' % conmsg, label=label) | |
632 | if helpfulmsg: |
|
632 | if helpfulmsg: | |
633 | helpmsg = helpfulmsg() |
|
633 | fm.plain('%s\n' % _commentlines(helpfulmsg), label=label) | |
634 | fm.plain('%s\n' % helpmsg, label=label) |
|
|||
635 |
|
634 | |||
636 | def findpossible(cmd, table, strict=False): |
|
635 | def findpossible(cmd, table, strict=False): | |
637 | """ |
|
636 | """ | |
@@ -3260,7 +3259,7 b' summaryhooks = util.hooks()' | |||||
3260 | summaryremotehooks = util.hooks() |
|
3259 | summaryremotehooks = util.hooks() | |
3261 |
|
3260 | |||
3262 |
|
3261 | |||
3263 | def checkunfinished(repo, commit=False): |
|
3262 | def checkunfinished(repo, commit=False, skipmerge=False): | |
3264 | '''Look for an unfinished multistep operation, like graft, and abort |
|
3263 | '''Look for an unfinished multistep operation, like graft, and abort | |
3265 | if found. It's probably good to check this right before |
|
3264 | if found. It's probably good to check this right before | |
3266 | bailifchanged(). |
|
3265 | bailifchanged(). | |
@@ -3268,13 +3267,15 b' def checkunfinished(repo, commit=False):' | |||||
3268 | # Check for non-clearable states first, so things like rebase will take |
|
3267 | # Check for non-clearable states first, so things like rebase will take | |
3269 | # precedence over update. |
|
3268 | # precedence over update. | |
3270 | for state in statemod._unfinishedstates: |
|
3269 | for state in statemod._unfinishedstates: | |
3271 |
if state._clearable or (commit and state._allowcommit) |
|
3270 | if (state._clearable or (commit and state._allowcommit) or | |
|
3271 | state._reportonly): | |||
3272 | continue |
|
3272 | continue | |
3273 | if state.isunfinished(repo): |
|
3273 | if state.isunfinished(repo): | |
3274 | raise error.Abort(state.msg(), hint=state.hint()) |
|
3274 | raise error.Abort(state.msg(), hint=state.hint()) | |
3275 |
|
3275 | |||
3276 | for s in statemod._unfinishedstates: |
|
3276 | for s in statemod._unfinishedstates: | |
3277 |
if not s._clearable or (commit and s._allowcommit) |
|
3277 | if (not s._clearable or (commit and s._allowcommit) or | |
|
3278 | (s._opname == 'merge' and skipmerge) or s._reportonly): | |||
3278 | continue |
|
3279 | continue | |
3279 | if s.isunfinished(repo): |
|
3280 | if s.isunfinished(repo): | |
3280 | raise error.Abort(s.msg(), hint=s.hint()) |
|
3281 | raise error.Abort(s.msg(), hint=s.hint()) | |
@@ -3284,10 +3285,14 b' def clearunfinished(repo):' | |||||
3284 | that are clearable. |
|
3285 | that are clearable. | |
3285 | ''' |
|
3286 | ''' | |
3286 | for state in statemod._unfinishedstates: |
|
3287 | for state in statemod._unfinishedstates: | |
|
3288 | if state._reportonly: | |||
|
3289 | continue | |||
3287 | if not state._clearable and state.isunfinished(repo): |
|
3290 | if not state._clearable and state.isunfinished(repo): | |
3288 | raise error.Abort(state.msg(), hint=state.hint()) |
|
3291 | raise error.Abort(state.msg(), hint=state.hint()) | |
3289 |
|
3292 | |||
3290 | for s in statemod._unfinishedstates: |
|
3293 | for s in statemod._unfinishedstates: | |
|
3294 | if s._opname == 'merge' or state._reportonly: | |||
|
3295 | continue | |||
3291 | if s._clearable and s.isunfinished(repo): |
|
3296 | if s._clearable and s.isunfinished(repo): | |
3292 | util.unlink(repo.vfs.join(s._fname)) |
|
3297 | util.unlink(repo.vfs.join(s._fname)) | |
3293 |
|
3298 |
@@ -98,7 +98,8 b' class _statecheck(object):' | |||||
98 | """ |
|
98 | """ | |
99 |
|
99 | |||
100 | def __init__(self, opname, fname, clearable=False, allowcommit=False, |
|
100 | def __init__(self, opname, fname, clearable=False, allowcommit=False, | |
101 |
cmdmsg="", cmdhint="" |
|
101 | reportonly=False, stopflag=False, cmdmsg="", cmdhint="", | |
|
102 | statushint=""): | |||
102 | """opname is the name the command or operation |
|
103 | """opname is the name the command or operation | |
103 | fname is the file name in which data should be stored in .hg directory. |
|
104 | fname is the file name in which data should be stored in .hg directory. | |
104 | It is None for merge command. |
|
105 | It is None for merge command. | |
@@ -107,21 +108,47 b' class _statecheck(object):' | |||||
107 | state file. |
|
108 | state file. | |
108 | allowcommit boolean decides whether commit is allowed during interrupted |
|
109 | allowcommit boolean decides whether commit is allowed during interrupted | |
109 | state or not. |
|
110 | state or not. | |
|
111 | reportonly flag is used for operations like bisect where we just | |||
|
112 | need to detect the operation using 'hg status --verbose' | |||
|
113 | stopflag is a boolean that determines whether or not a command supports | |||
|
114 | --stop flag | |||
110 | cmdmsg is used to pass a different status message in case standard |
|
115 | cmdmsg is used to pass a different status message in case standard | |
111 | message of the format "abort: cmdname in progress" is not desired. |
|
116 | message of the format "abort: cmdname in progress" is not desired. | |
112 | cmdhint is used to pass a different hint message in case standard |
|
117 | cmdhint is used to pass a different hint message in case standard | |
113 |
message of the format u |
|
118 | message of the format "To continue: hg cmdname --continue | |
114 |
|
|
119 | To abort: hg cmdname --abort" is not desired. | |
|
120 | statushint is used to pass a different status message in case standard | |||
|
121 | message of the format ('To continue: hg cmdname --continue' | |||
|
122 | 'To abort: hg cmdname --abort') is not desired | |||
115 | """ |
|
123 | """ | |
116 | self._opname = opname |
|
124 | self._opname = opname | |
117 | self._fname = fname |
|
125 | self._fname = fname | |
118 | self._clearable = clearable |
|
126 | self._clearable = clearable | |
119 | self._allowcommit = allowcommit |
|
127 | self._allowcommit = allowcommit | |
120 | self._cmdhint = cmdhint |
|
128 | self._cmdhint = cmdhint | |
|
129 | self._statushint = statushint | |||
121 | self._cmdmsg = cmdmsg |
|
130 | self._cmdmsg = cmdmsg | |
|
131 | self._stopflag = stopflag | |||
|
132 | self._reportonly = reportonly | |||
|
133 | ||||
|
134 | def statusmsg(self): | |||
|
135 | """returns the hint message corresponding to the command for | |||
|
136 | hg status --verbose | |||
|
137 | """ | |||
|
138 | if not self._statushint: | |||
|
139 | hint = (_('To continue: hg %s --continue\n' | |||
|
140 | 'To abort: hg %s --abort') % (self._opname, | |||
|
141 | self._opname)) | |||
|
142 | if self._stopflag: | |||
|
143 | hint = hint + (_('\nTo stop: hg %s --stop') % | |||
|
144 | (self._opname)) | |||
|
145 | return hint | |||
|
146 | return self._statushint | |||
122 |
|
147 | |||
123 | def hint(self): |
|
148 | def hint(self): | |
124 |
"""returns the hint message corresponding to |
|
149 | """returns the hint message corresponding to an interrupted | |
|
150 | operation | |||
|
151 | """ | |||
125 | if not self._cmdhint: |
|
152 | if not self._cmdhint: | |
126 | return (_("use 'hg %s --continue' or 'hg %s --abort'") % |
|
153 | return (_("use 'hg %s --continue' or 'hg %s --abort'") % | |
127 | (self._opname, self._opname)) |
|
154 | (self._opname, self._opname)) | |
@@ -134,8 +161,13 b' class _statecheck(object):' | |||||
134 | return self._cmdmsg |
|
161 | return self._cmdmsg | |
135 |
|
162 | |||
136 | def isunfinished(self, repo): |
|
163 | def isunfinished(self, repo): | |
137 |
"""determines whether a multi-step operation is in progress |
|
164 | """determines whether a multi-step operation is in progress | |
138 | return repo.vfs.exists(self._fname) |
|
165 | or not | |
|
166 | """ | |||
|
167 | if self._opname == 'merge': | |||
|
168 | return len(repo[None].parents()) > 1 | |||
|
169 | else: | |||
|
170 | return repo.vfs.exists(self._fname) | |||
139 |
|
171 | |||
140 | # A list of statecheck objects for multistep operations like graft. |
|
172 | # A list of statecheck objects for multistep operations like graft. | |
141 | _unfinishedstates = [] |
|
173 | _unfinishedstates = [] | |
@@ -144,75 +176,40 b' def addunfinished(opname, **kwargs):' | |||||
144 | """this registers a new command or operation to unfinishedstates |
|
176 | """this registers a new command or operation to unfinishedstates | |
145 | """ |
|
177 | """ | |
146 | statecheckobj = _statecheck(opname, **kwargs) |
|
178 | statecheckobj = _statecheck(opname, **kwargs) | |
147 | _unfinishedstates.append(statecheckobj) |
|
179 | if opname == 'merge': | |
|
180 | _unfinishedstates.append(statecheckobj) | |||
|
181 | else: | |||
|
182 | _unfinishedstates.insert(0, statecheckobj) | |||
148 |
|
183 | |||
149 | addunfinished( |
|
184 | addunfinished( | |
150 | 'graft', fname='graftstate', clearable=True, |
|
185 | 'graft', fname='graftstate', clearable=True, stopflag=True, | |
151 | cmdhint=_("use 'hg graft --continue' or 'hg graft --stop' to stop") |
|
186 | cmdhint=_("use 'hg graft --continue' or 'hg graft --stop' to stop"), | |
152 | ) |
|
187 | ) | |
153 | addunfinished( |
|
188 | addunfinished( | |
154 | 'update', fname='updatestate', clearable=True, |
|
189 | 'update', fname='updatestate', clearable=True, | |
155 | cmdmsg=_('last update was interrupted'), |
|
190 | cmdmsg=_('last update was interrupted'), | |
156 | cmdhint=_("use 'hg update' to get a consistent checkout") |
|
191 | cmdhint=_("use 'hg update' to get a consistent checkout"), | |
|
192 | statushint=_("To continue: hg update") | |||
157 | ) |
|
193 | ) | |
158 |
|
194 | addunfinished( | ||
159 | def _commentlines(raw): |
|
195 | 'bisect', fname='bisect.state', allowcommit=True, reportonly=True, | |
160 | '''Surround lineswith a comment char and a new line''' |
|
196 | statushint=_('To mark the changeset good: hg bisect --good\n' | |
161 | lines = raw.splitlines() |
|
197 | 'To mark the changeset bad: hg bisect --bad\n' | |
162 | commentedlines = ['# %s' % line for line in lines] |
|
198 | 'To abort: hg bisect --reset\n') | |
163 | return '\n'.join(commentedlines) + '\n' |
|
199 | ) | |
164 |
|
200 | addunfinished( | ||
165 | def _helpmessage(continuecmd, abortcmd): |
|
201 | 'merge', fname=None, clearable=True, allowcommit=True, | |
166 | msg = _('To continue: %s\n' |
|
202 | cmdmsg=_('outstanding uncommitted merge'), | |
167 | 'To abort: %s') % (continuecmd, abortcmd) |
|
203 | statushint=_('To continue: hg commit\n' | |
168 | return _commentlines(msg) |
|
204 | 'To abort: hg merge --abort'), | |
169 |
|
205 | cmdhint=_("use 'hg commit' or 'hg merge --abort'") | ||
170 | def _rebasemsg(): |
|
|||
171 | return _helpmessage('hg rebase --continue', 'hg rebase --abort') |
|
|||
172 |
|
||||
173 | def _histeditmsg(): |
|
|||
174 | return _helpmessage('hg histedit --continue', 'hg histedit --abort') |
|
|||
175 |
|
||||
176 | def _unshelvemsg(): |
|
|||
177 | return _helpmessage('hg unshelve --continue', 'hg unshelve --abort') |
|
|||
178 |
|
||||
179 | def _graftmsg(): |
|
|||
180 | return _helpmessage('hg graft --continue', 'hg graft --abort') |
|
|||
181 |
|
||||
182 | def _mergemsg(): |
|
|||
183 | return _helpmessage('hg commit', 'hg merge --abort') |
|
|||
184 |
|
||||
185 | def _bisectmsg(): |
|
|||
186 | msg = _('To mark the changeset good: hg bisect --good\n' |
|
|||
187 | 'To mark the changeset bad: hg bisect --bad\n' |
|
|||
188 | 'To abort: hg bisect --reset\n') |
|
|||
189 | return _commentlines(msg) |
|
|||
190 |
|
||||
191 | def fileexistspredicate(filename): |
|
|||
192 | return lambda repo: repo.vfs.exists(filename) |
|
|||
193 |
|
||||
194 | def _mergepredicate(repo): |
|
|||
195 | return len(repo[None].parents()) > 1 |
|
|||
196 |
|
||||
197 | STATES = ( |
|
|||
198 | # (state, predicate to detect states, helpful message function) |
|
|||
199 | ('histedit', fileexistspredicate('histedit-state'), _histeditmsg), |
|
|||
200 | ('bisect', fileexistspredicate('bisect.state'), _bisectmsg), |
|
|||
201 | ('graft', fileexistspredicate('graftstate'), _graftmsg), |
|
|||
202 | ('unshelve', fileexistspredicate('shelvedstate'), _unshelvemsg), |
|
|||
203 | ('rebase', fileexistspredicate('rebasestate'), _rebasemsg), |
|
|||
204 | # The merge state is part of a list that will be iterated over. |
|
|||
205 | # They need to be last because some of the other unfinished states may also |
|
|||
206 | # be in a merge or update state (eg. rebase, histedit, graft, etc). |
|
|||
207 | # We want those to have priority. |
|
|||
208 | ('merge', _mergepredicate, _mergemsg), |
|
|||
209 | ) |
|
206 | ) | |
210 |
|
207 | |||
211 | def getrepostate(repo): |
|
208 | def getrepostate(repo): | |
212 | # experimental config: commands.status.skipstates |
|
209 | # experimental config: commands.status.skipstates | |
213 | skip = set(repo.ui.configlist('commands', 'status.skipstates')) |
|
210 | skip = set(repo.ui.configlist('commands', 'status.skipstates')) | |
214 | for state, statedetectionpredicate, msgfn in STATES: |
|
211 | for state in _unfinishedstates: | |
215 | if state in skip: |
|
212 | if state._opname in skip: | |
216 | continue |
|
213 | continue | |
217 |
if state |
|
214 | if state.isunfinished(repo): | |
218 |
return (state, state |
|
215 | return (state._opname, state.statusmsg()) |
@@ -281,6 +281,7 b' Using status to get more context' | |||||
281 |
|
281 | |||
282 | # To continue: hg graft --continue |
|
282 | # To continue: hg graft --continue | |
283 | # To abort: hg graft --abort |
|
283 | # To abort: hg graft --abort | |
|
284 | # To stop: hg graft --stop | |||
284 |
|
285 | |||
285 |
|
286 | |||
286 | Commit while interrupted should fail: |
|
287 | Commit while interrupted should fail: |
@@ -44,6 +44,13 b" of the files in a commit we're updating " | |||||
44 | commit: 1 unknown (interrupted update) |
|
44 | commit: 1 unknown (interrupted update) | |
45 | update: 1 new changesets (update) |
|
45 | update: 1 new changesets (update) | |
46 | phases: 2 draft |
|
46 | phases: 2 draft | |
|
47 | Detect interrupted update by hg status --verbose | |||
|
48 | $ hg status -v | |||
|
49 | ? b/nonempty | |||
|
50 | # The repository is in an unfinished *update* state. | |||
|
51 | ||||
|
52 | # To continue: hg update | |||
|
53 | ||||
47 |
|
54 | |||
48 | $ rm b/nonempty |
|
55 | $ rm b/nonempty | |
49 |
|
56 |
@@ -164,7 +164,8 b' plain headers' | |||||
164 | 0 files updated, 0 files merged, 0 files removed, 1 files unresolved |
|
164 | 0 files updated, 0 files merged, 0 files removed, 1 files unresolved | |
165 | use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon |
|
165 | use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon | |
166 | (no more unresolved files) |
|
166 | (no more unresolved files) | |
167 | abort: cannot manage merge changesets |
|
167 | abort: outstanding uncommitted merge | |
|
168 | (use 'hg commit' or 'hg merge --abort') | |||
168 | $ rm -r sandbox |
|
169 | $ rm -r sandbox | |
169 |
|
170 | |||
170 | hg headers |
|
171 | hg headers | |
@@ -243,7 +244,8 b' hg headers' | |||||
243 | 0 files updated, 0 files merged, 0 files removed, 1 files unresolved |
|
244 | 0 files updated, 0 files merged, 0 files removed, 1 files unresolved | |
244 | use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon |
|
245 | use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon | |
245 | (no more unresolved files) |
|
246 | (no more unresolved files) | |
246 | abort: cannot manage merge changesets |
|
247 | abort: outstanding uncommitted merge | |
|
248 | (use 'hg commit' or 'hg merge --abort') | |||
247 | $ rm -r sandbox |
|
249 | $ rm -r sandbox | |
248 |
|
250 | |||
249 | Test saving last-message.txt |
|
251 | Test saving last-message.txt |
@@ -82,6 +82,7 b' Conflicting rebase:' | |||||
82 |
|
82 | |||
83 | # To continue: hg rebase --continue |
|
83 | # To continue: hg rebase --continue | |
84 | # To abort: hg rebase --abort |
|
84 | # To abort: hg rebase --abort | |
|
85 | # To stop: hg rebase --stop | |||
85 |
|
86 | |||
86 |
|
87 | |||
87 | Try to continue without solving the conflict: |
|
88 | Try to continue without solving the conflict: |
@@ -1153,7 +1153,8 b' Abort unshelve while merging (issue5123)' | |||||
1153 | -- trying to pull in the shelve bits |
|
1153 | -- trying to pull in the shelve bits | |
1154 | -- unshelve should abort otherwise, it'll eat my second parent. |
|
1154 | -- unshelve should abort otherwise, it'll eat my second parent. | |
1155 | $ hg unshelve |
|
1155 | $ hg unshelve | |
1156 | abort: cannot unshelve while merging |
|
1156 | abort: outstanding uncommitted merge | |
|
1157 | (use 'hg commit' or 'hg merge --abort') | |||
1157 | [255] |
|
1158 | [255] | |
1158 |
|
1159 | |||
1159 | $ cd .. |
|
1160 | $ cd .. |
@@ -275,6 +275,7 b' before strip of merge parent' | |||||
275 | ##strip not allowed with merge in progress |
|
275 | ##strip not allowed with merge in progress | |
276 | $ hg strip 4 |
|
276 | $ hg strip 4 | |
277 | abort: outstanding uncommitted merge |
|
277 | abort: outstanding uncommitted merge | |
|
278 | (use 'hg commit' or 'hg merge --abort') | |||
278 | [255] |
|
279 | [255] | |
279 | ##strip allowed --force with merge in progress |
|
280 | ##strip allowed --force with merge in progress | |
280 | $ hg strip 4 --force |
|
281 | $ hg strip 4 --force |
@@ -40,6 +40,7 b'' | |||||
40 | (branch merge, don't forget to commit) |
|
40 | (branch merge, don't forget to commit) | |
41 | $ hg transplant 1 |
|
41 | $ hg transplant 1 | |
42 | abort: outstanding uncommitted merge |
|
42 | abort: outstanding uncommitted merge | |
|
43 | (use 'hg commit' or 'hg merge --abort') | |||
43 | [255] |
|
44 | [255] | |
44 | $ hg up -qC tip |
|
45 | $ hg up -qC tip | |
45 | $ echo b0 > b1 |
|
46 | $ echo b0 > b1 | |
@@ -461,7 +462,7 b" transplant -c shouldn't use an old chang" | |||||
461 | baz |
|
462 | baz | |
462 | foo |
|
463 | foo | |
463 |
|
464 | |||
464 |
test multiple revisions and -- |
|
465 | test multiple revisions, --continue and hg status --verbose | |
465 |
|
466 | |||
466 | $ hg up -qC 0 |
|
467 | $ hg up -qC 0 | |
467 | $ echo bazbaz > baz |
|
468 | $ echo bazbaz > baz | |
@@ -481,6 +482,15 b' test multiple revisions and --continue' | |||||
481 | abort: transplant in progress |
|
482 | abort: transplant in progress | |
482 | (use 'hg transplant --continue' or 'hg update' to abort) |
|
483 | (use 'hg transplant --continue' or 'hg update' to abort) | |
483 | [255] |
|
484 | [255] | |
|
485 | $ hg status -v | |||
|
486 | A bar | |||
|
487 | ? baz.rej | |||
|
488 | ? foo.rej | |||
|
489 | # The repository is in an unfinished *transplant* state. | |||
|
490 | ||||
|
491 | # To continue: hg transplant --continue | |||
|
492 | # To abort: hg update | |||
|
493 | ||||
484 | $ echo fixed > baz |
|
494 | $ echo fixed > baz | |
485 | $ hg transplant --continue |
|
495 | $ hg transplant --continue | |
486 | 9d6d6b5a8275 transplanted as d80c49962290 |
|
496 | 9d6d6b5a8275 transplanted as d80c49962290 |
General Comments 0
You need to be logged in to leave comments.
Login now