view tests/test-remotefilelog-wireproto.t @ 40924:08cfa77d7288

wireprotov2: unify file revision collection and linknode derivation The old mechanism for choosing which file revisions to send in the haveparents=True case was buggy in multiple ways - the most severe of which being that file revisions were excluded when they shouldn't have been. This commit unifies the logic for deriving the filenodes that will be sent by the "filesdata" command. We now consistently read files data from manifests. The "haveparents" argument now controls whether we iterate ctx.files() or use the full manifest to derive relevant files. The logic here is still woefully lacking to fully support shallow clones. It will require an API break to fully address. This commit should at least make the server APIs emit proper data, which is strictly better than before. Differential Revision: https://phab.mercurial-scm.org/D5406
author Gregory Szorc <gregory.szorc@gmail.com>
date Mon, 10 Dec 2018 18:55:08 +0000
parents 0800d9e6e216
children dcaa2df1f688
line wrap: on
line source

#require no-windows

  $ . "$TESTDIR/remotefilelog-library.sh"

  $ hg init master
  $ cd master
  $ cat >> .hg/hgrc <<EOF
  > [remotefilelog]
  > server=True
  > EOF
  $ echo x > x
  $ hg commit -qAm x
  $ echo y >> x
  $ hg commit -qAm y
  $ echo z >> x
  $ hg commit -qAm z
  $ hg update 1
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ echo w >> x
  $ hg commit -qAm w

  $ cd ..

Shallow clone and activate getflogheads testing extension

  $ hgcloneshallow ssh://user@dummy/master shallow --noupdate
  streaming all changes
  2 files to transfer, 908 bytes of data
  transferred 908 bytes in * seconds (*/sec) (glob)
  searching for changes
  no changes found
  $ cd shallow

  $ cat >> .hg/hgrc <<EOF
  > [extensions]
  > getflogheads=$TESTDIR/remotefilelog-getflogheads.py
  > EOF

Get heads of a remotefilelog

  $ hg getflogheads x
  2797809ca5e9c2f307d82b1345e832f655fb99a2
  ca758b402ddc91e37e3113e1a97791b537e1b7bb

Get heads of a non-existing remotefilelog

  $ hg getflogheads y
  EMPTY