tests/test-remotefilelog-push-pull.t
changeset 40495 3a333a582d7b
child 40508 354acd0dc637
equal deleted inserted replaced
40494:9aeb9e2d28a7 40495:3a333a582d7b
       
     1   $ PYTHONPATH=$TESTDIR/..:$PYTHONPATH
       
     2   $ export PYTHONPATH
       
     3 
       
     4   $ . "$TESTDIR/remotefilelog-library.sh"
       
     5 
       
     6   $ hginit master
       
     7   $ cd master
       
     8   $ cat >> .hg/hgrc <<EOF
       
     9   > [remotefilelog]
       
    10   > server=True
       
    11   > EOF
       
    12   $ echo x > x
       
    13   $ hg commit -qAm x
       
    14 
       
    15   $ cd ..
       
    16 
       
    17   $ hgcloneshallow ssh://user@dummy/master shallow -q
       
    18   1 files fetched over 1 fetches - (1 misses, 0.00% hit ratio) over *s (glob)
       
    19   $ hgcloneshallow ssh://user@dummy/master shallow2 -q
       
    20 
       
    21 We should see the remotefilelog capability here, which advertises that
       
    22 the server supports our custom getfiles method.
       
    23 
       
    24   $ cd master
       
    25   $ echo 'hello' | hg -R . serve --stdio | grep capa | identifyrflcaps
       
    26   getfile
       
    27   getflogheads
       
    28   remotefilelog
       
    29   $ echo 'capabilities' | hg -R . serve --stdio | identifyrflcaps ; echo
       
    30   getfile
       
    31   getflogheads
       
    32   remotefilelog
       
    33   
       
    34 # pull to shallow from full
       
    35 
       
    36   $ echo y > y
       
    37   $ hg commit -qAm y
       
    38 
       
    39   $ cd ../shallow
       
    40   $ hg pull
       
    41   pulling from ssh://user@dummy/master
       
    42   searching for changes
       
    43   adding changesets
       
    44   adding manifests
       
    45   adding file changes
       
    46   added 1 changesets with 0 changes to 0 files
       
    47   new changesets d34c38483be9
       
    48   (run 'hg update' to get a working copy)
       
    49 
       
    50   $ hg up
       
    51   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
    52   1 files fetched over 1 fetches - (1 misses, 0.00% hit ratio) over *s (glob)
       
    53 
       
    54   $ cat y
       
    55   y
       
    56 
       
    57   $ cd ..
       
    58 
       
    59 # pull from shallow to shallow (local)
       
    60 
       
    61   $ cd shallow
       
    62   $ echo z > z
       
    63   $ hg commit -qAm z
       
    64   $ echo x >> x
       
    65   $ echo y >> y
       
    66   $ hg commit -qAm xxyy
       
    67   $ cd ../shallow2
       
    68   $ clearcache
       
    69   $ hg pull ../shallow
       
    70   pulling from ../shallow
       
    71   searching for changes
       
    72   adding changesets
       
    73   adding manifests
       
    74   adding file changes
       
    75   added 3 changesets with 4 changes to 3 files
       
    76   new changesets d34c38483be9:d7373980d475 (2 drafts)
       
    77   (run 'hg update' to get a working copy)
       
    78   2 files fetched over 2 fetches - (2 misses, 0.00% hit ratio) over *s (glob)
       
    79 
       
    80 # pull from shallow to shallow (ssh)
       
    81 
       
    82   $ hg strip -r 1
       
    83   saved backup bundle to $TESTTMP/shallow2/.hg/strip-backup/d34c38483be9-89d325c9-backup.hg (glob)
       
    84   $ hg pull ssh://user@dummy/$TESTTMP/shallow --config remotefilelog.cachepath=${CACHEDIR}2
       
    85   pulling from ssh://user@dummy/$TESTTMP/shallow
       
    86   searching for changes
       
    87   adding changesets
       
    88   adding manifests
       
    89   adding file changes
       
    90   added 3 changesets with 4 changes to 3 files
       
    91   new changesets d34c38483be9:d7373980d475 (2 drafts)
       
    92   (run 'hg update' to get a working copy)
       
    93   1 files fetched over 1 fetches - (1 misses, 0.00% hit ratio) over *s (glob)
       
    94 
       
    95   $ hg up
       
    96   3 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
    97   $ cat z
       
    98   z
       
    99 
       
   100   $ hg -R ../shallow strip -qr 3
       
   101   $ hg strip -qr 3
       
   102   $ cd ..
       
   103 
       
   104 # push from shallow to shallow
       
   105 
       
   106   $ cd shallow
       
   107   $ echo a > a
       
   108   $ hg commit -qAm a
       
   109   $ hg push ssh://user@dummy/$TESTTMP/shallow2
       
   110   pushing to ssh://user@dummy/$TESTTMP/shallow2
       
   111   searching for changes
       
   112   remote: adding changesets
       
   113   remote: adding manifests
       
   114   remote: adding file changes
       
   115   remote: added 1 changesets with 1 changes to 1 files
       
   116 
       
   117   $ cd ../shallow2
       
   118   $ hg up
       
   119   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   120   $ cat a
       
   121   a
       
   122 
       
   123 # verify files are read-only
       
   124 
       
   125   $ ls -l .hg/store/data
       
   126   total * (glob)
       
   127   drwxrwxr-x* 11f6ad8ec52a2984abaafd7c3b516503785c2072 (glob)
       
   128   drwxrwxr-x* 395df8f7c51f007019cb30201c49e884b46b92fa (glob)
       
   129   drwxrwxr-x* 86f7e437faa5a7fce15d1ddcb9eaeaea377667b8 (glob)
       
   130   drwxrwxr-x* 95cb0bfd2977c761298d9624e4b4d4c72a39974a (glob)
       
   131   $ ls -l .hg/store/data/395df8f7c51f007019cb30201c49e884b46b92fa
       
   132   total * (glob)
       
   133   -r--r--r--* 69a1b67522704ec122181c0890bd16e9d3e7516a (glob)
       
   134   -r--r--r--* 69a1b67522704ec122181c0890bd16e9d3e7516a_old (glob)
       
   135   $ cd ..
       
   136 
       
   137 # push from shallow to full
       
   138 
       
   139   $ cd shallow
       
   140   $ hg push
       
   141   pushing to ssh://user@dummy/master
       
   142   searching for changes
       
   143   remote: adding changesets
       
   144   remote: adding manifests
       
   145   remote: adding file changes
       
   146   remote: added 2 changesets with 2 changes to 2 files
       
   147 
       
   148   $ cd ../master
       
   149   $ hg log -l 1 --style compact
       
   150   3[tip]   1489bbbc46f0   1970-01-01 00:00 +0000   test
       
   151     a
       
   152   
       
   153   $ hg up
       
   154   2 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   155   $ cat a
       
   156   a
       
   157 
       
   158 # push public commits
       
   159 
       
   160   $ cd ../shallow
       
   161   $ echo p > p
       
   162   $ hg commit -qAm p
       
   163   $ hg phase -f -p -r .
       
   164   $ echo d > d
       
   165   $ hg commit -qAm d
       
   166 
       
   167   $ cd ../shallow2
       
   168   $ hg pull ../shallow
       
   169   pulling from ../shallow
       
   170   searching for changes
       
   171   adding changesets
       
   172   adding manifests
       
   173   adding file changes
       
   174   added 2 changesets with 2 changes to 2 files
       
   175   new changesets 3a2e32c04641:cedeb4167c1f (1 drafts)
       
   176   2 local changesets published (?)
       
   177   (run 'hg update' to get a working copy)
       
   178 
       
   179   $ cd ..
       
   180 
       
   181 # Test pushing from shallow to shallow with multiple manifests introducing the
       
   182 # same filenode. Test this by constructing two separate histories of file 'c'
       
   183 # that share a file node and verifying that the history works after pushing.
       
   184 
       
   185   $ hginit multimf-master
       
   186   $ hgcloneshallow ssh://user@dummy/multimf-master multimf-shallow -q
       
   187   $ hgcloneshallow ssh://user@dummy/multimf-master multimf-shallow2 -q
       
   188   $ cd multimf-shallow
       
   189   $ echo a > a
       
   190   $ hg commit -qAm a
       
   191   $ echo b > b
       
   192   $ hg commit -qAm b
       
   193   $ echo c > c
       
   194   $ hg commit -qAm c1
       
   195   $ hg up -q 0
       
   196   $ echo c > c
       
   197   $ hg commit -qAm c2
       
   198   $ echo cc > c
       
   199   $ hg commit -qAm c22
       
   200   $ hg log -G -T '{rev} {desc}\n'
       
   201   @  4 c22
       
   202   |
       
   203   o  3 c2
       
   204   |
       
   205   | o  2 c1
       
   206   | |
       
   207   | o  1 b
       
   208   |/
       
   209   o  0 a
       
   210   
       
   211 
       
   212   $ cd ../multimf-shallow2
       
   213 - initial commit to prevent hg pull from being a clone
       
   214   $ echo z > z && hg commit -qAm z
       
   215   $ hg pull -f ssh://user@dummy/$TESTTMP/multimf-shallow
       
   216   pulling from ssh://user@dummy/$TESTTMP/multimf-shallow
       
   217   searching for changes
       
   218   warning: repository is unrelated
       
   219   requesting all changes
       
   220   adding changesets
       
   221   adding manifests
       
   222   adding file changes
       
   223   added 5 changesets with 4 changes to 3 files (+2 heads)
       
   224   new changesets cb9a9f314b8b:d8f06a4c6d38 (5 drafts)
       
   225   (run 'hg heads' to see heads, 'hg merge' to merge)
       
   226 
       
   227   $ hg up -q 5
       
   228   $ hg log -f -T '{rev}\n' c
       
   229   5
       
   230   4