comparison hgext/rebase.py @ 27746:f0e9f38d250f

rebase: prevent creating divergence Before this patch rebase would create divergence when you were rebasing obsolete changesets on a destination not containing one of its successors. This patch introduces rebase.allowdivergence to explicitly allow divergence creation with rebase.
author Laurent Charignon <lcharignon@fb.com>
date Tue, 12 Jan 2016 13:43:41 -0800
parents d3a128e8604a
children 2d294dada4f8
comparison
equal deleted inserted replaced
27745:d3a128e8604a 27746:f0e9f38d250f
347 if repo[r].obsolete()) 347 if repo[r].obsolete())
348 obsoletenotrebased = _computeobsoletenotrebased(repo, 348 obsoletenotrebased = _computeobsoletenotrebased(repo,
349 rebaseobsrevs, 349 rebaseobsrevs,
350 dest) 350 dest)
351 rebaseobsskipped = set(obsoletenotrebased) 351 rebaseobsskipped = set(obsoletenotrebased)
352
353 # Obsolete node with successors not in dest leads to divergence
354 divergenceok = ui.configbool('rebase',
355 'allowdivergence')
356 divergencebasecandidates = rebaseobsrevs - rebaseobsskipped
357
358 if divergencebasecandidates and not divergenceok:
359 msg = _("this rebase will cause divergence")
360 h = _("to force the rebase please set "
361 "rebase.allowdivergence=True")
362 raise error.Abort(msg, hint=h)
352 363
353 # - plain prune (no successor) changesets are rebased 364 # - plain prune (no successor) changesets are rebased
354 # - split changesets are not rebased if at least one of the 365 # - split changesets are not rebased if at least one of the
355 # changeset resulting from the split is an ancestor of dest 366 # changeset resulting from the split is an ancestor of dest
356 rebaseset = rebasesetrevs - rebaseobsskipped 367 rebaseset = rebasesetrevs - rebaseobsskipped