Mercurial > hg
annotate tests/test-check-commit.t @ 32009:c6cb21ddf74a
checkheads: upgrade the obsolescence postprocessing logic (issue4354)
The previous logic had many shortcoming (eg: looking at the head only, not
handling prune, etc...), the new logic use a more robust approach:
For each head, we check if after the push all changesets exclusive to this heads
will be obsolete. If they are, the branch considered be "replaced".
To check if a changeset will be obsolete, we simply checks:
* the changeset phase
* the existence of a marker relevant to the "pushed set" that affects the
changesets..
This fixes two major issues of the previous algorithm:
* branch partially rewritten (eg: head but not root) are no longer detected as
replaced,
* Prune are now properly handled.
(This implementation was introduction in the evolve extension, version 6.0.0.)
This new algorithm has an extended number of tests, a basic one is provided
in this patch. The others will be introduced in their own changeset for clarity.
In addition, we stop trying to process heads unknown locally, we do not have
enough data to take an informed decision so we should stop pretending we do.
This reflect a test that is now update.
author | Pierre-Yves David <pierre-yves.david@ens-lyon.org> |
---|---|
date | Sat, 15 Apr 2017 02:55:18 +0200 |
parents | 2cab496db1e0 |
children | 5db6d70fd30b |
rev | line source |
---|---|
22067
14306a686e71
test-check-commit-hg.t: automatically test all 'draft() and ::.' changesets
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
1 #require test-repo |
14306a686e71
test-check-commit-hg.t: automatically test all 'draft() and ::.' changesets
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
2 |
14306a686e71
test-check-commit-hg.t: automatically test all 'draft() and ::.' changesets
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
3 Enable obsolescence to avoid the warning issue when obsmarker are found |
14306a686e71
test-check-commit-hg.t: automatically test all 'draft() and ::.' changesets
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
4 |
29219
3c9066ed557c
tests: silence test-repo obsolete warning
timeless <timeless@mozdev.org>
parents:
28293
diff
changeset
|
5 $ . "$TESTDIR/helpers-testrepo.sh" |
22067
14306a686e71
test-check-commit-hg.t: automatically test all 'draft() and ::.' changesets
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
6 |
14306a686e71
test-check-commit-hg.t: automatically test all 'draft() and ::.' changesets
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
7 Go back in the hg repo |
14306a686e71
test-check-commit-hg.t: automatically test all 'draft() and ::.' changesets
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
8 |
14306a686e71
test-check-commit-hg.t: automatically test all 'draft() and ::.' changesets
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
9 $ cd $TESTDIR/.. |
14306a686e71
test-check-commit-hg.t: automatically test all 'draft() and ::.' changesets
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
10 |
30648
2cab496db1e0
tests: add magic string to bypass check-commit
David Soria Parra <davidsp@fb.com>
parents:
29219
diff
changeset
|
11 $ for node in `hg log --rev 'not public() and ::. and not desc("# no-check-commit")' --template '{node|short}\n'`; do |
22067
14306a686e71
test-check-commit-hg.t: automatically test all 'draft() and ::.' changesets
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
12 > hg export $node | contrib/check-commit > ${TESTTMP}/check-commit.out |
14306a686e71
test-check-commit-hg.t: automatically test all 'draft() and ::.' changesets
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
13 > if [ $? -ne 0 ]; then |
28293
a22b6fa5a844
tests: minor grammar change for check-commit
timeless <timeless@mozdev.org>
parents:
27756
diff
changeset
|
14 > echo "Revision $node does not comply with rules" |
22067
14306a686e71
test-check-commit-hg.t: automatically test all 'draft() and ::.' changesets
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
15 > echo '------------------------------------------------------' |
14306a686e71
test-check-commit-hg.t: automatically test all 'draft() and ::.' changesets
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
16 > cat ${TESTTMP}/check-commit.out |
14306a686e71
test-check-commit-hg.t: automatically test all 'draft() and ::.' changesets
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
17 > echo |
14306a686e71
test-check-commit-hg.t: automatically test all 'draft() and ::.' changesets
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
18 > fi |
14306a686e71
test-check-commit-hg.t: automatically test all 'draft() and ::.' changesets
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
19 > done |
14306a686e71
test-check-commit-hg.t: automatically test all 'draft() and ::.' changesets
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
20 |
14306a686e71
test-check-commit-hg.t: automatically test all 'draft() and ::.' changesets
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
21 |