Mercurial > hg
changeset 15477:9d774a10e954
merge with stable
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Thu, 10 Nov 2011 15:55:26 -0600 |
parents | 7c06e9c35f2f (current diff) 85cba926cb59 (diff) |
children | 1bb0a5b02da9 |
files | |
diffstat | 2 files changed, 75 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/largefiles/lfcommands.py Thu Nov 10 15:40:34 2011 -0600 +++ b/hgext/largefiles/lfcommands.py Thu Nov 10 15:55:26 2011 -0600 @@ -437,7 +437,11 @@ (not os.path.exists(abslfile) or expecthash != lfutil.hashfile(abslfile))): if not lfutil.copyfromcache(repo, expecthash, lfile): - return None # don't try to set the mode or update the dirstate + # use normallookup() to allocate entry in largefiles dirstate, + # because lack of it misleads lfiles_repo.status() into + # recognition that such cache missing files are REMOVED. + lfdirstate.normallookup(lfile) + return None # don't try to set the mode ret = 1 mode = os.stat(absstandin).st_mode if mode != os.stat(abslfile).st_mode:
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-largefiles-cache.t Thu Nov 10 15:55:26 2011 -0600 @@ -0,0 +1,70 @@ +Create user cache directory + + $ USERCACHE=`pwd`/cache; export USERCACHE + $ cat <<EOF >> ${HGRCPATH} + > [extensions] + > hgext.largefiles= + > [largefiles] + > usercache=${USERCACHE} + > EOF + $ mkdir -p ${USERCACHE} + +Create source repo, and commit adding largefile. + + $ hg init src + $ cd src + $ echo large > large + $ hg add --large large + $ hg commit -m 'add largefile' + $ cd .. + +Discard all cached largefiles in USERCACHE + + $ rm -rf ${USERCACHE} + +Create mirror repo, and pull from source without largefile: +"pull" is used instead of "clone" for suppression of (1) updating to +tip (= cahcing largefile from source repo), and (2) recording source +repo as "default" path in .hg/hgrc. + + $ hg init mirror + $ cd mirror + $ hg pull ../src + pulling from ../src + requesting all changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files + (run 'hg update' to get a working copy) + +Update working directory to "tip", which requires largefile("large"), +but there is no cache file for it. So, hg must treat it as +"missing"(!) file. + + $ hg update + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + getting changed largefiles + large: Can't get file locally + (no default or default-push path set in hgrc) + 0 largefiles updated, 0 removed + $ hg status + ! large + +Update working directory to null: this cleanup .hg/largefiles/dirstate + + $ hg update null + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + getting changed largefiles + 0 largefiles updated, 0 removed + +Update working directory to tip, again. + + $ hg update + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + getting changed largefiles + large: Can't get file locally + (no default or default-push path set in hgrc) + 0 largefiles updated, 0 removed + $ hg status + ! large