Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 11 Sep 2012 00:12:07 +0200] rev 17475
amend: add obsolete support
If the obsolete feature is enabled, `hg commit --amend` marks a
changeset as obsolete instead of stripping it.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 24 Aug 2012 21:16:23 +0200] rev 17474
obsolete: add a high level function to create an obsolete marker
This function is designed to be used by all code that creates new
obsolete markers in the local repository.
It is not used by debugobsolete because debugobsolete allows the
use of an unknown hash as argument.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Sat, 25 Aug 2012 16:20:41 +0200] rev 17473
amend: use an explicit commit message for temporary amending commit
Before this changeset, the extra commit created during amend had
the same description as the final commit. This was a bit confusing
when trying to understand what that extra commit was about.
This changeset changes the description of such commit to:
temporary amend commit for <ammend-commit-hash>
The old behaviour was not a big deal, but would become more confusing
once we use obsolescence marker instead of stripping the precursors.
This also helps if the user restores a strip backup.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 10 Sep 2012 23:44:24 +0200] rev 17472
amend: wrap all commit operations in a single transaction
This allows proper recovery of an interrupted amend process.
No changes are made to the logic besides:
- indent operations into a single try-except clause,
- some comment and code wrapping to 80 chars,
- strip logic should not be contained in the transaction and is extracted from
the main code.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sat, 25 Aug 2012 15:37:28 +0200] rev 17471
amend: lock the repository during the whole process
Without this changes another writer can lock the repository in the middle the
amend process. The resulting mess can be pretty ugly.
Bryan O'Sullivan <bryano@fb.com> [Mon, 10 Sep 2012 14:08:10 -0700] rev 17470
Merge with crew
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 28 Aug 2012 20:52:04 +0200] rev 17469
obsolete: introduce caches for all meaningful sets
This changeset introduces caches on the `obsstore` that keeps track of sets of
revisions meaningful for obsolescence related logics. For now they are:
- obsolete: changesets used as precursors (and not public),
- extinct: obsolete changesets with osbolete descendants only,
- unstable: non obsolete changesets with obsolete ancestors.
The cache is accessed using the `getobscache(repo, '<set-name>')` function which
builds the cache on demand. The `clearobscaches(repo)` function takes care of
clearing the caches if any.
Caches are cleared when one of these events happens:
- a new marker is added,
- a new changeset is added,
- some changesets are made public,
- some public changesets are demoted to draft or secret.
Declaration of more sets is made easy because we will have to handle at least
two other "troubles" (latecomer and conflicting).
Caches are now used by revset and changectx. It is usually not much more
expensive to compute the whole set than to check the property of a few elements.
The performance boost is welcome in case we apply obsolescence logic on a lot of
revisions. This makes the feature usable!
Patrick Mezard <patrick@mezard.eu> [Sun, 09 Sep 2012 12:35:06 +0200] rev 17468
Merge with stable
Patrick Mezard <patrick@mezard.eu> [Sun, 09 Sep 2012 12:31:14 +0200] rev 17467
test-http-branchmap: enable on Windows
Tests using "hg serve --daemon" are currently disabled on Windows for
lack of proper kill utility. The one shipped with MinGW operates on
internal process identifiers and not on the ones recorded by hg serve.
Fortunately we can replace most of them by calls to killdaemons.py.
This patch is a proof of concept on how to run these tests on Windows.
The plan is:
- Check test-http-branchmap.t does not fail/hang on the buildbot
- Convert all kill utility calls to killdaemons.py calls.
- Add a rule in check-code.py to forbid kill calls, or ignore the
remaining ones (test-hup.t, etc.).
- Possibly drop the 'serve' rule from hghave.
The:
listening at http://*:$HGPORT1/
line does not appear on Windows because the detached process can no
longer write on its parent streams. Grepping hg serve stdout directly
causes the parent process to never return and hangs the test. This is a
bug, but I have no simple solution and prefer to pay this small price
and enable hg serve tests on Windows.
Patrick Mezard <patrick@mezard.eu> [Mon, 20 Aug 2012 22:36:51 +0200] rev 17466
killdaemons: take file argument explicitely
It makes it easier to use as a generic replacement for kill utility,
mostly for Windows tests.