On Mon, May 8, 2017 at 11:25 PM, Pierre-Yves David <
pierre-yves.da...@ens-lyon.org> wrote:

>
>
> On 05/09/2017 12:48 AM, Gregory Szorc wrote:
>
>> On Sat, May 6, 2017 at 1:05 AM, Pierre-Yves David
>> <pierre-yves.da...@ens-lyon.org <mailto:pierre-yves.da...@ens-lyon.org>>
>> wrote:
>>
>>     # HG changeset patch
>>     # User Pierre-Yves David <pierre-yves.da...@octobus.net
>>     <mailto:pierre-yves.da...@octobus.net>>
>>
>>     # Date 1493998275 -7200
>>     #      Fri May 05 17:31:15 2017 +0200
>>     # Node ID 3a04e2424b2821fa92d41ac9e40430aa25d4560d
>>     # Parent  16b60a34def41f52e024d32d6e99e5d533cad02f
>>     # EXP-Topic bundle2.tagsfnodecache
>>     # Available At
>>     https://www.mercurial-scm.org/repo/users/marmoute/mercurial/
>>     <https://www.mercurial-scm.org/repo/users/marmoute/mercurial/>
>>     #              hg pull
>>     https://www.mercurial-scm.org/repo/users/marmoute/mercurial/
>>     <https://www.mercurial-scm.org/repo/users/marmoute/mercurial/> -r
>>     3a04e2424b28
>>     bundle: add optional 'tagsfnodecache' data to on disk bundle
>> (issue5543)
>>
>>     This should help performance when unbundling.
>>
>>     diff --git a/mercurial/bundle2.py b/mercurial/bundle2.py
>>     --- a/mercurial/bundle2.py
>>     +++ b/mercurial/bundle2.py
>>     @@ -1378,6 +1378,8 @@ def _addpartsfromopts(ui, repo, bundler,
>>              part.addparam('nbchanges', str(cg.extras['clcount']),
>>                            mandatory=False)
>>
>>     +    addparttagsfnodescache(repo, bundler, outgoing)
>>     +
>>      def addparttagsfnodescache(repo, bundler, outgoing):
>>          # we include the tags fnode cache for the bundle changeset
>>          # (as an optional parts)
>>     diff --git a/tests/test-tags.t b/tests/test-tags.t
>>     --- a/tests/test-tags.t
>>     +++ b/tests/test-tags.t
>>     @@ -716,3 +716,15 @@ Running hg tags should produce tags2* fi
>>        0040: ff ff ff ff ff ff ff ff 40 f0 35 8c 19 e0 a7 d3
>>     |........@.5.....|
>>        0050: 8a 5c 6a 82 4d cf fb a5 87 d0 2f a3 1e 4f 2f 8a
>>     |.\j.M...../..O/.|
>>
>>     +Check that the bundle includes cache data
>>     +
>>     +  $ hg -R tagsclient bundle --all ./test-cache-in-bundle-all-rev.hg
>>     +  4 changesets found
>>     +  $ hg debugbundle ./test-cache-in-bundle-all-rev.hg
>>     +  Stream params: sortdict([('Compression', 'BZ')])
>>     +  changegroup -- "sortdict([('version', '02'), ('nbchanges', '4')])"
>>     +      96ee1d7354c4ad7372047672c36a1f561e3a6a4c
>>     +      c4dab0c2fd337eb9191f80c3024830a4889a8f34
>>     +      f63cc8fe54e4d326f8d692805d70e092f851ddb1
>>     +      40f0358cb314c824a5929ee527308d90e023bc10
>>     +  hgtagsfnodes -- 'sortdict()'
>>
>>
>> This test would be more useful if it didn't send empty tags cache data.
>> In fact, I think you found a bug! Shouldn't we omit the part if it is
>> empty?
>>
>
> The cache data is not empty, the `hg debugbundle` command just do not show
> it. The code is already checking for existing data and only generate the
> part if there are any.
>
> So everything should be working as intended here.
>
> (small note: In the future, I'll probably suggest we send data for all
> known cache entry since the storage for them is "free" and the overhead in
> the bundle should be negligible)
>
>
I question the value of that. AFAIK we only ever resolve the .hgtags node
for heads. So sending down the cached fnode for changesets that are no
longer heads feels wasteful since the data will never be used.
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel

Reply via email to