view tests/test-remotefilelog-strip.t @ 48637:5154f2025d8a

test-http-bad-server: introduce socket closing after reading a pattern We introduce the `close-after-recv-patterns` option. It has the same goal as `close-after-send-patterns` with a slightly different implementation. Reading "up to a pattern" is hard. As we can only check the pattern from what we have already read (inlike writing, were we can check what we are about to write). So instead we make the `close-after-recv-patterns` alter the behavior of the existing `close-after-recv-bytes`. The value from `close-after-recv-bytes` only gets into play after we have seen the pattern from `close-after-recv-patterns`. This allow us to achieve the target benefit without changing the read pattern too much. Differential Revision: https://phab.mercurial-scm.org/D12068
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Sun, 23 Jan 2022 19:49:42 +0100
parents 47a9527731c3
children
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 ..

  $ hgcloneshallow ssh://user@dummy/master shallow -q
  1 files fetched over 1 fetches - (1 misses, 0.00% hit ratio) over *s (glob)
  $ cd shallow

  $ cat >> $TESTTMP/get_file_linknode.py <<EOF
  > from mercurial import node, registrar, scmutil
  > cmdtable = {}
  > command = registrar.command(cmdtable)
  > @command(b'debug-file-linknode', [(b'r', b'rev', b'.', b'rev')], b'hg debug-file-linknode FILE')
  > def debug_file_linknode(ui, repo, file, **opts):
  >   rflctx = scmutil.revsingle(repo.unfiltered(), opts['rev']).filectx(file)
  >   ui.status(b'%s\n' % node.hex(rflctx.ancestormap()[rflctx._filenode][2]))
  > EOF

  $ cat >> .hg/hgrc <<EOF
  > [ui]
  > interactive=1
  > [extensions]
  > strip=
  > get_file_linknode=$TESTTMP/get_file_linknode.py
  > [experimental]
  > evolution=createmarkers,allowunstable
  > EOF
  $ echo a > a
  $ hg commit -qAm msg1
  $ hg commit --amend 're:^$' -m msg2
  $ hg commit --amend 're:^$' -m msg3
  $ hg --hidden log -G -T '{rev} {node|short}'
  @  3 df91f74b871e
  |
  | x  2 70494d7ec5ef
  |/
  | x  1 1e423846dde0
  |/
  o  0 b292c1e3311f
  
  $ hg debug-file-linknode -r 70494d a
  df91f74b871e064c89afa1fe9e2f66afa2c125df
  $ hg --hidden strip -r 1 3
  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
  saved backup bundle to $TESTTMP/shallow/.hg/strip-backup/df91f74b871e-c94d67be-backup.hg

  $ hg --hidden log -G -T '{rev} {node|short}'
  o  1 70494d7ec5ef
  |
  @  0 b292c1e3311f
  
Demonstrate that the linknode points to a commit that is actually in the repo
after the strip operation. Otherwise remotefilelog has to search every commit in
the repository looking for a valid linkrev every time it's queried, such as
during push.
  $ hg debug-file-linknode -r 70494d a
  70494d7ec5ef6cd3cd6939a9fd2812f9956bf553