view tests/test-remotefilelog-clone.t @ 45587:768412472663

merge: store cases when a file is absent post merge in commitinfo Some merges can result in file being absent form working directory. This can be one of file was kept deleted or file was removed by merge code. User might revert the file back before committing. In such cases we will like to have better handling and create new filenodes. We store this info in mergestate as commitinfo so that we can use it while committing to create new filenode if required. Differential Revision: https://phab.mercurial-scm.org/D9003
author Pulkit Goyal <7895pulkit@gmail.com>
date Mon, 24 Aug 2020 15:35:34 +0530
parents a0886a4d6dce
children db9e33beb0fb
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

  $ cd ..

# shallow clone from full

  $ hgcloneshallow ssh://user@dummy/master shallow --noupdate
  streaming all changes
  2 files to transfer, 227 bytes of data
  transferred 227 bytes in * seconds (*/sec) (glob)
  searching for changes
  no changes found
  $ cd shallow
  $ cat .hg/requires
  dotencode
  exp-remotefilelog-repo-req-1
  fncache
  generaldelta
  revlogv1
  sparserevlog
  store

  $ hg update
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  1 files fetched over 1 fetches - (1 misses, 0.00% hit ratio) over *s (glob)

  $ cat x
  x

  $ ls .hg/store/data
  $ echo foo > f
  $ hg add f
  $ hg ci -m 'local content'
  $ ls .hg/store/data
  4a0a19218e082a343a1b17e5333409af9d98f0f5

  $ cd ..

# shallow clone from shallow

  $ hgcloneshallow ssh://user@dummy/shallow shallow2  --noupdate
  streaming all changes
  3 files to transfer, 564 bytes of data
  transferred 564 bytes in * seconds (*/sec) (glob)
  searching for changes
  no changes found
  $ cd shallow2
  $ cat .hg/requires
  dotencode
  exp-remotefilelog-repo-req-1
  fncache
  generaldelta
  revlogv1
  sparserevlog
  store
  $ ls .hg/store/data
  4a0a19218e082a343a1b17e5333409af9d98f0f5

  $ hg update
  2 files updated, 0 files merged, 0 files removed, 0 files unresolved

  $ cat x
  x

  $ cd ..

# full clone from shallow

Note: the output to STDERR comes from a different process to the output on
STDOUT and their relative ordering is not deterministic. As a result, the test
was failing sporadically. To avoid this, we capture STDERR to a file and
check its contents separately.

  $ TEMP_STDERR=full-clone-from-shallow.stderr.tmp
  $ hg clone --noupdate ssh://user@dummy/shallow full 2>$TEMP_STDERR
  streaming all changes
  remote: abort: Cannot clone from a shallow repo to a full repo.
  [255]
  $ cat $TEMP_STDERR
  abort: pull failed on remote
  $ rm $TEMP_STDERR

# getbundle full clone

  $ printf '[server]\npreferuncompressed=False\n' >> master/.hg/hgrc
  $ hgcloneshallow ssh://user@dummy/master shallow3
  requesting all changes
  adding changesets
  adding manifests
  adding file changes
  added 1 changesets with 0 changes to 0 files
  new changesets b292c1e3311f
  updating to branch default
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved

  $ ls shallow3/.hg/store/data
  $ cat shallow3/.hg/requires
  dotencode
  exp-remotefilelog-repo-req-1
  fncache
  generaldelta
  revlogv1
  sparserevlog
  store