tests/bundles/test-revlog-diff-relative-to-nullrev.sh
author Pierre-Yves David <pierre-yves.david@octobus.net>
Tue, 14 Feb 2023 20:09:39 +0100
changeset 49995 27fd12eca557
parent 49239 a94f28be2e6e
child 51046 f636103c4d67
permissions -rwxr-xr-x
transaction: quietly rollback if no other changes than temporary files If no actual change have been made, we don't really need to roll them back. We only have to cleanup some temporary files and it seems reasonable to do that quietly. This will help us to use the transaction in wider context¹ without impacting the user experience. [1] as in Python context managers that lives longer.

#!/bin/bash
#
# Make sure to patch mercurial to create the delta against nullrev
#
# # Parent  cdb85d0512b81031d4a7b30d6a5ddbe69ef1a876
#
# diff --git a/mercurial/revlogutils/deltas.py b/mercurial/revlogutils/deltas.py
# --- a/mercurial/revlogutils/deltas.py
# +++ b/mercurial/revlogutils/deltas.py
# @@ -1117,7 +1117,10 @@ class deltacomputer:
#                  candidaterevs = next(groups)
#
#          if deltainfo is None:
# -            deltainfo = self._fullsnapshotinfo(fh, revinfo, target_rev)
# +            if revlog._generaldelta:
# +                deltainfo = self._builddeltainfo(revinfo, nullrev, fh)
# +            else:
# +                deltainfo = self._fullsnapshotinfo(fh, revinfo, target_rev)


cd "`dirname \"$0\"`"
export HGRCPATH=
export HGMODULEPOLICY=py

rm -rf nullrev-diff
../../hg init nullrev-diff  --config format.revlog-compression=zlib
cd nullrev-diff
echo hi > a
../../../hg commit -Am root-B
echo ho > a
../../../hg commit -Am child-A
hg up null
echo ha > a
../../../hg commit -Am root-A
../../../hg debugdeltachain a
rm -rf .hg/cache/ .hg/wcache/
cd ..

tar cf test-revlog-diff-relative-to-nullrev.tar nullrev-diff

rm -rf nullrev-diff