mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 00:45:18 +03:00
9efc7f05e3
Upon pull or unbundle, we display a message with the range of new revisions fetched. This revision range could readily be used after a pull to look out what's new with 'hg log'. The algorithm takes care of filtering "obsolete" revisions that might be present in transaction's "changes" but should not be displayed to the end user.
76 lines
2.0 KiB
Perl
76 lines
2.0 KiB
Perl
Test how largefiles abort in case the disk runs full
|
|
|
|
$ cat > criple.py <<EOF
|
|
> from __future__ import absolute_import
|
|
> import errno
|
|
> import os
|
|
> import shutil
|
|
> from mercurial import util
|
|
> #
|
|
> # this makes the original largefiles code abort:
|
|
> _origcopyfileobj = shutil.copyfileobj
|
|
> def copyfileobj(fsrc, fdst, length=16*1024):
|
|
> # allow journal files (used by transaction) to be written
|
|
> if 'journal.' in fdst.name:
|
|
> return _origcopyfileobj(fsrc, fdst, length)
|
|
> fdst.write(fsrc.read(4))
|
|
> raise IOError(errno.ENOSPC, os.strerror(errno.ENOSPC))
|
|
> shutil.copyfileobj = copyfileobj
|
|
> #
|
|
> # this makes the rewritten code abort:
|
|
> def filechunkiter(f, size=131072, limit=None):
|
|
> yield f.read(4)
|
|
> raise IOError(errno.ENOSPC, os.strerror(errno.ENOSPC))
|
|
> util.filechunkiter = filechunkiter
|
|
> #
|
|
> def oslink(src, dest):
|
|
> raise OSError("no hardlinks, try copying instead")
|
|
> util.oslink = oslink
|
|
> EOF
|
|
|
|
$ echo "[extensions]" >> $HGRCPATH
|
|
$ echo "largefiles =" >> $HGRCPATH
|
|
|
|
$ hg init alice
|
|
$ cd alice
|
|
$ echo "this is a very big file" > big
|
|
$ hg add --large big
|
|
$ hg commit --config extensions.criple=$TESTTMP/criple.py -m big
|
|
abort: No space left on device
|
|
[255]
|
|
|
|
The largefile is not created in .hg/largefiles:
|
|
|
|
$ ls .hg/largefiles
|
|
dirstate
|
|
|
|
The user cache is not even created:
|
|
|
|
>>> import os; os.path.exists("$HOME/.cache/largefiles/")
|
|
False
|
|
|
|
Make the commit with space on the device:
|
|
|
|
$ hg commit -m big
|
|
|
|
Now make a clone with a full disk, and make sure lfutil.link function
|
|
makes copies instead of hardlinks:
|
|
|
|
$ cd ..
|
|
$ hg --config extensions.criple=$TESTTMP/criple.py clone --pull alice bob
|
|
requesting all changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 1 changesets with 1 changes to 1 files
|
|
new changesets 390cf214e9ac
|
|
updating to branch default
|
|
getting changed largefiles
|
|
abort: No space left on device
|
|
[255]
|
|
|
|
The largefile is not created in .hg/largefiles:
|
|
|
|
$ ls bob/.hg/largefiles
|
|
dirstate
|