Mercurial > hg
comparison hgext/histedit.py @ 29878:d7de02efa47e
histedit: directly use node in 'verifyactions'
It does not seem useful to convert to hex: it is an extra step and they are
longer strings. So we stick to node for the logic. We only convert to short hex
for error when needed. As a nice side effect this remove the explicit constant
usage in'[12:]'. This will also help moving the code around later as we just
have to access action.node.
author | Pierre-Yves David <pierre-yves.david@ens-lyon.org> |
---|---|
date | Fri, 26 Aug 2016 20:54:32 +0200 |
parents | 1c19d3efe15d |
children | b566c5992e07 |
comparison
equal
deleted
inserted
replaced
29877:1c19d3efe15d | 29878:d7de02efa47e |
---|---|
1371 other constraints. | 1371 other constraints. |
1372 | 1372 |
1373 Will abort if there are to many or too few rules, a malformed rule, | 1373 Will abort if there are to many or too few rules, a malformed rule, |
1374 or a rule on a changeset outside of the user-given range. | 1374 or a rule on a changeset outside of the user-given range. |
1375 """ | 1375 """ |
1376 expected = set(c.hex() for c in ctxs) | 1376 expected = set(c.node() for c in ctxs) |
1377 seen = set() | 1377 seen = set() |
1378 prev = None | 1378 prev = None |
1379 for action in actions: | 1379 for action in actions: |
1380 action.verify(prev) | 1380 action.verify(prev) |
1381 prev = action | 1381 prev = action |
1384 if constraint not in _constraints.known(): | 1384 if constraint not in _constraints.known(): |
1385 raise error.ParseError(_('unknown constraint "%s"') % | 1385 raise error.ParseError(_('unknown constraint "%s"') % |
1386 constraint) | 1386 constraint) |
1387 | 1387 |
1388 if action.node is not None: | 1388 if action.node is not None: |
1389 ha = node.hex(action.node) | 1389 if _constraints.noother in constrs and action.node not in expected: |
1390 if _constraints.noother in constrs and ha not in expected: | |
1391 raise error.ParseError( | 1390 raise error.ParseError( |
1392 _('%s "%s" changeset was not a candidate') | 1391 _('%s "%s" changeset was not a candidate') |
1393 % (action.verb, ha[:12]), | 1392 % (action.verb, node.short(action.node)), |
1394 hint=_('only use listed changesets')) | 1393 hint=_('only use listed changesets')) |
1395 if _constraints.forceother in constrs and ha in expected: | 1394 if _constraints.forceother in constrs and action.node in expected: |
1396 raise error.ParseError( | 1395 raise error.ParseError( |
1397 _('%s "%s" changeset was not an edited list candidate') | 1396 _('%s "%s" changeset was not an edited list candidate') |
1398 % (action.verb, ha[:12]), | 1397 % (action.verb, node.short(action.node)), |
1399 hint=_('only use listed changesets')) | 1398 hint=_('only use listed changesets')) |
1400 if _constraints.noduplicates in constrs and ha in seen: | 1399 if _constraints.noduplicates in constrs and action.node in seen: |
1401 raise error.ParseError(_( | 1400 raise error.ParseError(_( |
1402 'duplicated command for changeset %s') % | 1401 'duplicated command for changeset %s') % |
1403 ha[:12]) | 1402 node.short(action.node)) |
1404 seen.add(ha) | 1403 seen.add(action.node) |
1405 missing = sorted(expected - seen) # sort to stabilize output | 1404 missing = sorted(expected - seen) # sort to stabilize output |
1406 | 1405 |
1407 if state.repo.ui.configbool('histedit', 'dropmissing'): | 1406 if state.repo.ui.configbool('histedit', 'dropmissing'): |
1408 if len(actions) == 0: | 1407 if len(actions) == 0: |
1409 raise error.ParseError(_('no rules provided'), | 1408 raise error.ParseError(_('no rules provided'), |
1410 hint=_('use strip extension to remove commits')) | 1409 hint=_('use strip extension to remove commits')) |
1411 | 1410 |
1412 drops = [drop(state, node.bin(n)) for n in missing] | 1411 drops = [drop(state, n) for n in missing] |
1413 # put the in the beginning so they execute immediately and | 1412 # put the in the beginning so they execute immediately and |
1414 # don't show in the edit-plan in the future | 1413 # don't show in the edit-plan in the future |
1415 actions[:0] = drops | 1414 actions[:0] = drops |
1416 elif missing: | 1415 elif missing: |
1417 raise error.ParseError(_('missing rules for changeset %s') % | 1416 raise error.ParseError(_('missing rules for changeset %s') % |
1418 missing[0][:12], | 1417 node.short(missing[0]), |
1419 hint=_('use "drop %s" to discard, see also: ' | 1418 hint=_('use "drop %s" to discard, see also: ' |
1420 '"hg help -e histedit.config"') % missing[0][:12]) | 1419 '"hg help -e histedit.config"') |
1420 % node.short(missing[0])) | |
1421 | 1421 |
1422 def adjustreplacementsfrommarkers(repo, oldreplacements): | 1422 def adjustreplacementsfrommarkers(repo, oldreplacements): |
1423 """Adjust replacements from obsolescense markers | 1423 """Adjust replacements from obsolescense markers |
1424 | 1424 |
1425 Replacements structure is originally generated based on | 1425 Replacements structure is originally generated based on |