[PATCH 2 of 3 stable] largefiles: mark lfile as added in lfdirstate when the standin is added

FUJIWARA Katsunori foozy at lares.dti.ne.jp
Wed Dec 31 22:52:37 CST 2014


At Wed, 31 Dec 2014 15:05:59 +0100,
Mads Kiilerich wrote:
> 
> # HG changeset patch
> # User Mads Kiilerich <madski at unity3d.com>
> # Date 1420033562 -3600
> #      Wed Dec 31 14:46:02 2014 +0100
> # Branch stable
> # Node ID 997a96cf63443db2f8d4682d25d367e9344b2cdb
> # Parent  97eb62b0f4a91cea78909e7098c6b069c3899f89
> largefiles: mark lfile as added in lfdirstate when the standin is added
> 
> This is an alternative solution to the problem addressed by f72d73937853. This
> implementation has the advantage that it doesn't mark clean largefiles as
> normallookup. We can thus avoid repeated rehashing of all largefiles when
> f72d73937853 is backed out.
> 
> This implementation use the existing 'lfmr' actions that 23fe278bde43
> introduced for handling another part of the same cases.

Oops, sorry for performance problem, and thank you for fixing it !

These changes look good to me.

BTW, this series may cause complicated merging into default, because
"actions" handling was largely changed on default by Martin.



> diff --git a/hgext/largefiles/overrides.py b/hgext/largefiles/overrides.py
> --- a/hgext/largefiles/overrides.py
> +++ b/hgext/largefiles/overrides.py
> @@ -445,7 +445,7 @@ def overridecalculateupdates(origfn, rep
>      removes = set(a[0] for a in actions['r'])
>  
>      newglist = []
> -    lfmr = [] # LargeFiles: Mark as Removed
> +    lfmr = [] # LargeFiles: Mark as Removed ... and mark largefile as added
>      for action in actions['g']:
>          f, args, msg = action
>          splitstandin = f and lfutil.splitstandin(f)
> @@ -514,10 +514,14 @@ def overridecalculateupdates(origfn, rep
>  
>  def mergerecordupdates(orig, repo, actions, branchmerge):
>      if 'lfmr' in actions:
> -        # this should be executed before 'orig', to execute 'remove'
> -        # before all other actions
> +        lfdirstate = lfutil.openlfdirstate(repo.ui, repo)
>          for lfile, args, msg in actions['lfmr']:
> +            # this should be executed before 'orig', to execute 'remove'
> +            # before all other actions
>              repo.dirstate.remove(lfile)
> +            # make sure lfile doesn't get synclfdirstate'd as normal
> +            lfdirstate.add(lfile)
> +        lfdirstate.write()
>  
>      return orig(repo, actions, branchmerge)
>  
> 

----------------------------------------------------------------------
[FUJIWARA Katsunori]                             foozy at lares.dti.ne.jp


More information about the Mercurial-devel mailing list