Mercurial > hg
changeset 23292:e44399c494ab
changelog: register changelog.i.a as a temporary file
The file is registered to make sure the transaction is cleaned up in all cases.
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Sat, 08 Nov 2014 17:08:09 +0000 |
parents | 03d2d6931836 |
children | b89856abf4e2 |
files | mercurial/changelog.py tests/test-hook.t |
diffstat | 2 files changed, 18 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/changelog.py Wed Nov 05 09:27:08 2014 +0000 +++ b/mercurial/changelog.py Sat Nov 08 17:08:09 2014 +0000 @@ -273,7 +273,11 @@ if self._delaybuf: # make a temporary copy of the index fp1 = self._realopener(self.indexfile) - fp2 = self._realopener(self.indexfile + ".a", "w") + pendingfilename = self.indexfile + ".a" + # register as a temp file to ensure cleanup on failure + tr.registertmp(pendingfilename) + # write existing data + fp2 = self._realopener(pendingfilename, "w") fp2.write(fp1.read()) # add pending data fp2.write("".join(self._delaybuf))
--- a/tests/test-hook.t Wed Nov 05 09:27:08 2014 +0000 +++ b/tests/test-hook.t Sat Nov 08 17:08:09 2014 +0000 @@ -148,6 +148,19 @@ $ hg -q tip 4:539e4b31b6dc +(Check that no 'changelog.i.a' file were left behind) + + $ ls -1 .hg/store/ + 00changelog.i + 00manifest.i + data + fncache + journal.phaseroots + phaseroots + undo + undo.phaseroots + + precommit hook can prevent commit $ echo "precommit.forbid = python \"$TESTDIR/printenv.py\" precommit.forbid 1" >> .hg/hgrc