[PATCH STABLE] largefiles: fix largefiles+subrepo update (issue3752)
Benoit Boissinot
benoit.boissinot at ens-lyon.org
Tue Jan 22 23:50:00 UTC 2013
Thanks, pushing with the fixes.
On Wed, Jan 23, 2013 at 12:00 AM, Mads Kiilerich <mads at kiilerich.com> wrote:
> On 01/22/2013 08:48 AM, Benoit Boissinot wrote:
>
>> # HG changeset patch
>> # User Benoit Boissinot <benoit.boissinot at ens-lyon.org**>
>> # Date 1358840881 -3600
>> # Branch stable
>> # Node ID f648a1ac2a3db36d1e6872ed87a771**3892c1c4e3
>> # Parent 9354a8c1bdedec8e60d9b00aeba7cd**2a4bd681a0
>> largefiles: fix largefiles+subrepo update (issue3752)
>>
>> Override updaterepo() instead of individual methods that may not be
>> called for
>> each subrepo. Add test.
>> Based on patch from Matt Harbison.
>>
>> Changes the order of update-related messages (now largefiles comes before
>> the
>> global status).
>>
>
> This looks good as a stable patch.
>
> A couple of details:
>
>
> diff --git a/hgext/largefiles/overrides.**py
>> b/hgext/largefiles/overrides.**py
>> --- a/hgext/largefiles/overrides.**py
>> +++ b/hgext/largefiles/overrides.**py
>> @@ -669,20 +669,20 @@
>> finally:
>> wlock.release()
>> -def hgupdate(orig, repo, node):
>> - # Only call updatelfiles the standins that have changed to save time
>> - oldstandins = lfutil.getstandinsstate(repo)
>> - result = orig(repo, node)
>> - newstandins = lfutil.getstandinsstate(repo)
>> - filelist = lfutil.getlfilestoupdate(**oldstandins, newstandins)
>> +def hgupdaterepo(orig, repo, node, overwrite):
>> + if not overwrite:
>> + # Only call updatelfiles on the standins that have changed to
>> save time
>> + oldstandins = lfutil.getstandinsstate(repo)
>> +
>> + result = orig(repo, node, overwrite)
>> +
>> + filelist = None
>> + if not overwrite:
>> + newstandins = lfutil.getstandinsstate(repo)
>> + filelist = lfutil.getlfilestoupdate(**oldstandins, newstandins)
>> lfcommands.updatelfiles(repo.**ui, repo, filelist=filelist,
>> printmessage=True)
>>
>
> instead of reusing this line
>
>
> return result
>> -def hgclean(orig, repo, node, show_stats=True):
>> - result = orig(repo, node, show_stats)
>> - lfcommands.updatelfiles(repo.**ui, repo)
>>
>
> please choose merge with this one and drop the redundant printmessage.
>
>
> - return result
>> -
>> def hgmerge(orig, repo, node, force=None, remind=True):
>> # Mark the repo as being in the middle of a merge, so that
>> # updatelfiles() will know that it needs to trust the standins in
>> diff --git a/hgext/largefiles/uisetup.py b/hgext/largefiles/uisetup.py
>> --- a/hgext/largefiles/uisetup.py
>> +++ b/hgext/largefiles/uisetup.py
>> @@ -109,11 +109,7 @@
>> entry = extensions.wrapfunction(**commands, 'revert',
>> overrides.overriderevert)
>> - # clone uses hg._update instead of hg.update even though they are
>> the
>> - # same function... so wrap both of them)
>> - extensions.wrapfunction(hg, 'update', overrides.hgupdate)
>> - extensions.wrapfunction(hg, '_update', overrides.hgupdate)
>> - extensions.wrapfunction(hg, 'clean', overrides.hgclean)
>> + extensions.wrapfunction(hg, 'updaterepo', overrides.hgupdaterepo)
>> extensions.wrapfunction(hg, 'merge', overrides.hgmerge)
>> extensions.wrapfunction(**archival, 'archive',
>> overrides.overridearchive)
>> diff --git a/tests/test-issue3084.t b/tests/test-issue3084.t
>> --- a/tests/test-issue3084.t
>> +++ b/tests/test-issue3084.t
>> @@ -16,9 +16,9 @@
>> $ hg commit -m "Add foo as a largefile"
>> $ hg update -r 0
>> - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
>> getting changed largefiles
>> 0 largefiles updated, 1 removed
>> + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
>> $ echo "normal" > foo
>> $ hg add foo
>> diff --git a/tests/test-largefiles-cache.**t
>> b/tests/test-largefiles-cache.**t
>> --- a/tests/test-largefiles-cache.**t
>> +++ b/tests/test-largefiles-cache.**t
>> @@ -45,27 +45,27 @@
>> "missing"(!) file.
>> $ hg update
>> + getting changed largefiles
>> + error getting 7f7097b041ccf68cc5561e9600da46**55d21c6d18 from
>> file:$TESTTMP/mirror for large: can't get file locally
>> + 0 largefiles updated, 0 removed
>> 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
>> - getting changed largefiles
>> - error getting 7f7097b041ccf68cc5561e9600da46**55d21c6d18 from
>> file:$TESTTMP/mirror for large: can't get file locally (glob)
>>
>
> some globs are lost throughout the test - they are probably needed for
> handling windows paths.
>
> /Mads
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mercurial-scm.org/pipermail/mercurial-devel/attachments/20130123/22da167e/attachment-0002.html>
More information about the Mercurial-devel
mailing list