##// END OF EJS Templates
rhg: add resolve_file_args to path_utils.rs...
rhg: add resolve_file_args to path_utils.rs Extracted logic for resolving `FILE ...` arguments from cat.rs into a new function in path_utils.rs. I plan to use this for rhg annotate. I tried to reuse hg::utils::files::canonical_path instead, but that didn't work. For example it reports a InsideDotHg error for any path containing "..".

File last commit:

r51090:11e6eee4 default
r53438:f33f37ac tip default
Show More
test-largefiles-small-disk.t
74 lines | 2.0 KiB | text/troff | Tads3Lexer
/ tests / test-largefiles-small-disk.t
Martin Geisler
largefiles: write .hg/largefiles/ files atomically...
r15571 Test how largefiles abort in case the disk runs full
$ cat > criple.py <<EOF
Augie Fackler
tests: update test-largefiles-small-disk to pass our import checker
r33964 > import errno
> import os
> import shutil
Martin Geisler
largefiles: write .hg/largefiles/ files atomically...
r15571 > from mercurial import util
> #
> # this makes the original largefiles code abort:
Jun Wu
dirstate: try to use hardlink to backup dirstate...
r31207 > _origcopyfileobj = shutil.copyfileobj
FUJIWARA Katsunori
tests: bulk changes to avoid whitespace errors of check-code.py...
r41885 > def copyfileobj(fsrc, fdst, length=16 * 1024):
Jun Wu
dirstate: try to use hardlink to backup dirstate...
r31207 > # allow journal files (used by transaction) to be written
transaction: use the standard transaction mechanism to backup branch...
r51090 > if b'journal.' in fdst.name or b'backup.' in fdst.name:
Jun Wu
dirstate: try to use hardlink to backup dirstate...
r31207 > return _origcopyfileobj(fsrc, fdst, length)
Martin Geisler
largefiles: write .hg/largefiles/ files atomically...
r15571 > fdst.write(fsrc.read(4))
> raise IOError(errno.ENOSPC, os.strerror(errno.ENOSPC))
> shutil.copyfileobj = copyfileobj
> #
> # this makes the rewritten code abort:
Mads Kiilerich
util: increase filechunkiter size to 128k...
r30181 > def filechunkiter(f, size=131072, limit=None):
Martin Geisler
largefiles: write .hg/largefiles/ files atomically...
r15571 > yield f.read(4)
> raise IOError(errno.ENOSPC, os.strerror(errno.ENOSPC))
> util.filechunkiter = filechunkiter
Martin Geisler
largefiles: copy files into .hg/largefiles atomically...
r15572 > #
> def oslink(src, dest):
> raise OSError("no hardlinks, try copying instead")
> util.oslink = oslink
Martin Geisler
largefiles: write .hg/largefiles/ files atomically...
r15571 > 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
Martin Geisler
largefiles: copy files into .hg/largefiles atomically...
r15572
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
Denis Laxalde
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets 390cf214e9ac
Martin Geisler
largefiles: copy files into .hg/largefiles atomically...
r15572 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
Mads Kiilerich
largefiles: update in two steps, handle interrupted updates better...
r20063 dirstate