Skip to content
Snippets Groups Projects
  • Augie Fackler's avatar
    a2a6e724d61a
    narrow: import experimental extension from narrowhg revision cb51d673e9c5 · a2a6e724d61a
    Augie Fackler authored
    Adjustments:
     * renamed src to hgext/narrow
     * marked extension experimental
     * added correct copyright header where it was missing
     * updated hgrc extension enable line in library.sh
     * renamed library.sh to narrow-library.sh
     * dropped all files from repo root as they're not interesting
     * dropped test-pyflakes.t, test-check-code.t and test-check-py3-compat.t
     * renamed remaining tests to all be test-narrow-* when they didn't already
     * fixed test-narrow-expanddirstate.t to refer to narrow and not narrowhg
     * fixed tests that wanted `update -C .` instead of `merge --abort`
     * corrected a two-space indent in narrowspec.py
     * added a missing _() in narrowcommands.py
     * fixed imports to pass the import checker
     * narrow only adds its --include and --exclude to clone if sparse isn't
       enabled to avoid breaking test-duplicateoptions.py. This is a kludge,
       and we'll need to come up with a better solution in the future.
    
    These were more or less the minimum to import something that would
    pass tests and not create a bunch of files we'll never use.
    
    Changes I intend to make as followups:
     * rework the test-narrow-*-tree.t tests to use the new testcases
       functionality in run-tests.py
     * remove lots of monkeypatches of core things
    
    Differential Revision: https://phab.mercurial-scm.org/D1974
    a2a6e724d61a
    History
    narrow: import experimental extension from narrowhg revision cb51d673e9c5
    Augie Fackler authored
    Adjustments:
     * renamed src to hgext/narrow
     * marked extension experimental
     * added correct copyright header where it was missing
     * updated hgrc extension enable line in library.sh
     * renamed library.sh to narrow-library.sh
     * dropped all files from repo root as they're not interesting
     * dropped test-pyflakes.t, test-check-code.t and test-check-py3-compat.t
     * renamed remaining tests to all be test-narrow-* when they didn't already
     * fixed test-narrow-expanddirstate.t to refer to narrow and not narrowhg
     * fixed tests that wanted `update -C .` instead of `merge --abort`
     * corrected a two-space indent in narrowspec.py
     * added a missing _() in narrowcommands.py
     * fixed imports to pass the import checker
     * narrow only adds its --include and --exclude to clone if sparse isn't
       enabled to avoid breaking test-duplicateoptions.py. This is a kludge,
       and we'll need to come up with a better solution in the future.
    
    These were more or less the minimum to import something that would
    pass tests and not create a bunch of files we'll never use.
    
    Changes I intend to make as followups:
     * rework the test-narrow-*-tree.t tests to use the new testcases
       functionality in run-tests.py
     * remove lots of monkeypatches of core things
    
    Differential Revision: https://phab.mercurial-scm.org/D1974
test-narrow-shallow.t 3.16 KiB
  $ . "$TESTDIR/narrow-library.sh"

  $ hg init master
  $ cd master
  $ cat >> .hg/hgrc <<EOF
  > [narrow]
  > serveellipses=True
  > EOF
  $ for x in `$TESTDIR/seq.py 10`
  > do
  >   echo $x > "f$x"
  >   hg add "f$x"
  > done
  $ hg commit -m "Add root files"
  $ mkdir d1 d2
  $ for x in `$TESTDIR/seq.py 10`
  > do
  >   echo d1/$x > "d1/f$x"
  >   hg add "d1/f$x"
  >   echo d2/$x > "d2/f$x"
  >   hg add "d2/f$x"
  > done
  $ hg commit -m "Add d1 and d2"
  $ for x in `$TESTDIR/seq.py 10`
  > do
  >   echo f$x rev2 > "f$x"
  >   echo d1/f$x rev2 > "d1/f$x"
  >   echo d2/f$x rev2 > "d2/f$x"
  >   hg commit -m "Commit rev2 of f$x, d1/f$x, d2/f$x"
  > done
  $ cd ..

narrow and shallow clone the d2 directory

  $ hg clone --narrow ssh://user@dummy/master shallow --include "d2" --depth 2
  requesting all changes
  adding changesets
  adding manifests
  adding file changes
  added 4 changesets with 13 changes to 10 files
  new changesets *:* (glob)
  updating to branch default
  10 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ cd shallow
  $ hg log -T '{rev}{if(ellipsis,"...")}: {desc}\n'
  3: Commit rev2 of f10, d1/f10, d2/f10
  2: Commit rev2 of f9, d1/f9, d2/f9
  1: Commit rev2 of f8, d1/f8, d2/f8
  0...: Commit rev2 of f7, d1/f7, d2/f7
  $ hg update 0
  3 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ cat d2/f7 d2/f8
  d2/f7 rev2
  d2/8

  $ cd ..

change every upstream file once

  $ cd master
  $ for x in `$TESTDIR/seq.py 10`
  > do
  >   echo f$x rev3 > "f$x"
  >   echo d1/f$x rev3 > "d1/f$x"
  >   echo d2/f$x rev3 > "d2/f$x"
  >   hg commit -m "Commit rev3 of f$x, d1/f$x, d2/f$x"
  > done
  $ cd ..

pull new changes with --depth specified. There were 10 changes to the d2