Mercurial > evolve
view tests/test-check-sdist.t @ 6224:17ffdea0edbb stable
evolve: look for split successors of the correct ancestor (issue6648)
Consider two changesets, 1 and 2. 1 is split into two new changesets and 2 is
pruned. If we stand on 2 and call hg evolve, _singlesuccessor() will traverse
ancestors of wdp in search of a changeset with successors to update to (it will
be 1, which was split). In case of a split, select_split_successor() gets
control. The issue is this function didn't traverse ancestors, and instead
tried to look up successors of the original changeset (i.e. 2 in our case,
which was pruned).
We can make select_split_successor() aware of _singlesuccessor() logic by using
the changeset that actually has successors without traversing ancestors again.
It's done by storing that changeset in MultipleSuccessorsError exception.
author | Anton Shestakov <av6@dwimlabs.net> |
---|---|
date | Thu, 21 Apr 2022 22:19:27 +0400 |
parents | 74665d83fb3b |
children | 318b81560f8c |
line wrap: on
line source
Enable obsolescence to avoid the warning issue when obsmarkers are found $ cat << EOF >> "$HGRCPATH" > [experimental] > evolution = all > EOF $ cd "$TESTDIR"/.. Archiving to a separate location to avoid hardlink mess when the repo is shared #if test-repo $ hg archive "$TESTTMP"/hg-evolve $ cd "$TESTTMP"/hg-evolve #endif $ "$PYTHON" setup.py sdist --dist-dir "$TESTTMP"/dist > /dev/null */dist.py:*: UserWarning: Unknown distribution option: 'python_requires' (glob) warnings.warn(msg) warning: sdist: standard file not found: should have one of README, README.txt (?) (?) warning: no previously-included files found matching 'docs/tutorial/.netlify' warning: no previously-included files found matching '.gitlab-ci.yml' warning: no previously-included files found matching '.hg-format-source' warning: no previously-included files found matching 'Makefile' no previously-included directories found matching 'contrib' no previously-included directories found matching 'debian' no previously-included directories found matching '.gitlab' $ cd "$TESTTMP"/dist $ find hg-evolve-*.tar.gz -size +800000c hg-evolve-*.tar.gz (glob) $ tar -tzf hg-evolve-*.tar.gz | sed 's|^hg-evolve-[^/]*/||' | sort > files $ wc -l files 357 files $ fgrep debian files tests/test-check-debian.t $ fgrep __init__.py files hgext3rd/__init__.py hgext3rd/evolve/__init__.py hgext3rd/evolve/thirdparty/__init__.py hgext3rd/topic/__init__.py $ fgrep common.sh files docs/tutorial/testlib/common.sh tests/testlib/common.sh $ fgrep README files README.rst docs/README docs/tutorial/README.rst hgext3rd/topic/README $ egrep '(gitlab|contrib|hack|format-source)' files [1] $ fgrep legacy.py files [1] $ fgrep netlify files [1]