Mercurial > hg > mercurial-source
comparison tests/test-largefiles-update.t @ 23276:4be754832829
largefiles: move "copyalltostore" invocation into "markcommitted"
Before this patch, while "hg convert", largefiles avoids copying
largefiles in the working directory into the store area by combination
of setting "repo._isconverting" in "mercurialsink{before|after}" and
checking it in "copytostoreabsolute".
This avoiding is needed while "hg convert", because converting doesn't
update largefiles in the working directory.
But this implementation is not efficient, because:
- invocation in "markcommitted" can easily ensure updating
largefiles in the working directory
"markcommitted" is invoked only when new revision is committed via
"commit" of "localrepository" (= with files in the working
directory). On the other hand, "commitctx" may be invoked directly
for in-memory committing.
- committing without updating the working directory (e.g. "import
--bypass") also needs this kind of avoiding
For efficiency of this kind of avoiding, this patch does:
- move "copyalltostore" invocation into "markcommitted"
- remove meaningless procedures below:
- hooking "mercurialsink{before|after}" to (un)set "repo._isconverting"
- checking "repo._isconverting" in "copytostoreabsolute"
This patch invokes "copyalltostore" also in "_commitcontext", because
"_commitcontext" expects that largefiles in the working directory are
copied into store area after "commitctx". In this case, the working
directory is used as a kind of temporary area to write largefiles out,
even though converted revisions are committed via "commitctx" (without
updating normal files).
author | FUJIWARA Katsunori <foozy@lares.dti.ne.jp> |
---|---|
date | Sat, 08 Nov 2014 00:48:41 +0900 |
parents | 0ec2e124fcc0 |
children | b5e2128ce9e6 |
comparison
equal
deleted
inserted
replaced
23275:fae708cb32d1 | 23276:4be754832829 |
---|---|
609 M large2 | 609 M large2 |
610 | 610 |
611 #endif | 611 #endif |
612 | 612 |
613 $ cd .. | 613 $ cd .. |
614 | |
615 Test that "hg convert" avoids copying largefiles from the working | |
616 directory into store, because "hg convert" doesn't update largefiles | |
617 in the working directory (removing files under ".cache/largefiles" | |
618 forces "hg convert" to copy corresponding largefiles) | |
619 | |
620 $ cat >> $HGRCPATH <<EOF | |
621 > [extensions] | |
622 > convert = | |
623 > EOF | |
624 | |
625 $ rm $TESTTMP/.cache/largefiles/6a4f36d4075fbe0f30ec1d26ca44e63c05903671 | |
626 $ hg convert -q repo repo.converted |