tests/test-share-bookmarks.t
changeset 42313 81ece800576a
parent 41965 e4ac7e63c213
child 42314 314056e438a9
equal deleted inserted replaced
42312:2b77183ac477 42313:81ece800576a
       
     1   $ echo "[extensions]"      >> $HGRCPATH
       
     2   $ echo "share = "          >> $HGRCPATH
       
     3 
       
     4 prepare repo1
       
     5 
       
     6   $ hg init repo1
       
     7   $ cd repo1
       
     8   $ echo a > a
       
     9   $ hg commit -A -m'init'
       
    10   adding a
       
    11   $ echo a >> a
       
    12   $ hg commit -m'change in shared clone'
       
    13   $ echo b > b
       
    14   $ hg commit -A -m'another file'
       
    15   adding b
       
    16 
       
    17 share it
       
    18 
       
    19   $ cd ..
       
    20   $ hg share repo1 repo2
       
    21   updating working directory
       
    22   2 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
    23 
       
    24 unshare it
       
    25 
       
    26   $ cd repo2
       
    27   $ hg unshare
       
    28 
       
    29 check that a change does not propagate
       
    30 
       
    31   $ echo b >> b
       
    32   $ hg commit -m'change in unshared'
       
    33   $ cd ../repo1
       
    34   $ hg id -r tip
       
    35   c2e0ac586386 tip
       
    36 
       
    37   $ cd ..
       
    38 
       
    39 test sharing bookmarks
       
    40 
       
    41   $ hg share -B repo1 repo3
       
    42   updating working directory
       
    43   2 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
    44   $ cd repo1
       
    45   $ hg bookmark bm1
       
    46   $ hg bookmarks
       
    47    * bm1                       2:c2e0ac586386
       
    48   $ cd ../repo2
       
    49   $ hg book bm2
       
    50   $ hg bookmarks
       
    51    * bm2                       3:0e6e70d1d5f1
       
    52   $ cd ../repo3
       
    53   $ hg bookmarks
       
    54      bm1                       2:c2e0ac586386
       
    55   $ hg book bm3
       
    56   $ hg bookmarks
       
    57      bm1                       2:c2e0ac586386
       
    58    * bm3                       2:c2e0ac586386
       
    59   $ cd ../repo1
       
    60   $ hg bookmarks
       
    61    * bm1                       2:c2e0ac586386
       
    62      bm3                       2:c2e0ac586386
       
    63 
       
    64 check whether HG_PENDING makes pending changes only in relatd
       
    65 repositories visible to an external hook.
       
    66 
       
    67 In "hg share" case, another transaction can't run in other
       
    68 repositories sharing same source repository, because starting
       
    69 transaction requires locking store of source repository.
       
    70 
       
    71 Therefore, this test scenario ignores checking visibility of
       
    72 .hg/bookmakrs.pending in repo2, which shares repo1 without bookmarks.
       
    73 
       
    74   $ cat > $TESTTMP/checkbookmarks.sh <<EOF
       
    75   > echo "@repo1"
       
    76   > hg -R "$TESTTMP/repo1" bookmarks
       
    77   > echo "@repo2"
       
    78   > hg -R "$TESTTMP/repo2" bookmarks
       
    79   > echo "@repo3"
       
    80   > hg -R "$TESTTMP/repo3" bookmarks
       
    81   > exit 1 # to avoid adding new bookmark for subsequent tests
       
    82   > EOF
       
    83 
       
    84   $ cd ../repo1
       
    85   $ hg --config hooks.pretxnclose="sh $TESTTMP/checkbookmarks.sh" -q book bmX
       
    86   @repo1
       
    87      bm1                       2:c2e0ac586386
       
    88      bm3                       2:c2e0ac586386
       
    89    * bmX                       2:c2e0ac586386
       
    90   @repo2
       
    91    * bm2                       3:0e6e70d1d5f1
       
    92   @repo3
       
    93      bm1                       2:c2e0ac586386
       
    94    * bm3                       2:c2e0ac586386
       
    95      bmX                       2:c2e0ac586386
       
    96   transaction abort!
       
    97   rollback completed
       
    98   abort: pretxnclose hook exited with status 1
       
    99   [255]
       
   100   $ hg book bm1
       
   101 
       
   102 FYI, in contrast to above test, bmX is invisible in repo1 (= shared
       
   103 src), because (1) HG_PENDING refers only repo3 and (2)
       
   104 "bookmarks.pending" is written only into repo3.
       
   105 
       
   106   $ cd ../repo3
       
   107   $ hg --config hooks.pretxnclose="sh $TESTTMP/checkbookmarks.sh" -q book bmX
       
   108   @repo1
       
   109    * bm1                       2:c2e0ac586386
       
   110      bm3                       2:c2e0ac586386
       
   111   @repo2
       
   112    * bm2                       3:0e6e70d1d5f1
       
   113   @repo3
       
   114      bm1                       2:c2e0ac586386
       
   115      bm3                       2:c2e0ac586386
       
   116    * bmX                       2:c2e0ac586386
       
   117   transaction abort!
       
   118   rollback completed
       
   119   abort: pretxnclose hook exited with status 1
       
   120   [255]
       
   121   $ hg book bm3
       
   122 
       
   123   $ cd ../repo1
       
   124 
       
   125 test that commits work
       
   126 
       
   127   $ echo 'shared bookmarks' > a
       
   128   $ hg commit -m 'testing shared bookmarks'
       
   129   $ hg bookmarks
       
   130    * bm1                       3:b87954705719
       
   131      bm3                       2:c2e0ac586386
       
   132   $ cd ../repo3
       
   133   $ hg bookmarks
       
   134      bm1                       3:b87954705719
       
   135    * bm3                       2:c2e0ac586386
       
   136   $ echo 'more shared bookmarks' > a
       
   137   $ hg commit -m 'testing shared bookmarks'
       
   138   created new head
       
   139   $ hg bookmarks
       
   140      bm1                       3:b87954705719
       
   141    * bm3                       4:62f4ded848e4
       
   142   $ cd ../repo1
       
   143   $ hg bookmarks
       
   144    * bm1                       3:b87954705719
       
   145      bm3                       4:62f4ded848e4
       
   146   $ cd ..
       
   147 
       
   148 test pushing bookmarks works
       
   149 
       
   150   $ hg clone repo3 repo4
       
   151   updating to branch default
       
   152   2 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   153   $ cd repo4
       
   154   $ hg boo bm4
       
   155   $ echo foo > b
       
   156   $ hg commit -m 'foo in b'
       
   157   $ hg boo
       
   158      bm1                       3:b87954705719
       
   159      bm3                       4:62f4ded848e4
       
   160    * bm4                       5:92793bfc8cad
       
   161   $ hg push -B bm4
       
   162   pushing to $TESTTMP/repo3
       
   163   searching for changes
       
   164   adding changesets
       
   165   adding manifests
       
   166   adding file changes
       
   167   added 1 changesets with 1 changes to 1 files
       
   168   exporting bookmark bm4
       
   169   $ cd ../repo1
       
   170   $ hg bookmarks
       
   171    * bm1                       3:b87954705719
       
   172      bm3                       4:62f4ded848e4
       
   173      bm4                       5:92793bfc8cad
       
   174   $ cd ../repo3
       
   175   $ hg bookmarks
       
   176      bm1                       3:b87954705719
       
   177    * bm3                       4:62f4ded848e4
       
   178      bm4                       5:92793bfc8cad
       
   179   $ cd ..
       
   180 
       
   181 test behavior when sharing a shared repo
       
   182 
       
   183   $ hg share -B repo3 missingdir/repo5
       
   184   updating working directory
       
   185   2 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   186   $ cd missingdir/repo5
       
   187   $ hg book
       
   188      bm1                       3:b87954705719
       
   189      bm3                       4:62f4ded848e4
       
   190      bm4                       5:92793bfc8cad
       
   191   $ cd ../..
       
   192 
       
   193 test what happens when an active bookmark is deleted
       
   194 
       
   195   $ cd repo1
       
   196   $ hg boo -d bm3
       
   197   $ hg boo
       
   198    * bm1                       3:b87954705719
       
   199      bm4                       5:92793bfc8cad
       
   200   $ cd ../repo3
       
   201   $ hg boo
       
   202      bm1                       3:b87954705719
       
   203      bm4                       5:92793bfc8cad
       
   204   $ cd ..
       
   205 
       
   206 verify that bookmarks are not written on failed transaction
       
   207 
       
   208   $ cat > failpullbookmarks.py << EOF
       
   209   > """A small extension that makes bookmark pulls fail, for testing"""
       
   210   > from __future__ import absolute_import
       
   211   > from mercurial import (
       
   212   >   error,
       
   213   >   exchange,
       
   214   >   extensions,
       
   215   > )
       
   216   > def _pullbookmarks(orig, pullop):
       
   217   >     orig(pullop)
       
   218   >     raise error.HookAbort('forced failure by extension')
       
   219   > def extsetup(ui):
       
   220   >     extensions.wrapfunction(exchange, '_pullbookmarks', _pullbookmarks)
       
   221   > EOF
       
   222   $ cd repo4
       
   223   $ hg boo
       
   224      bm1                       3:b87954705719
       
   225      bm3                       4:62f4ded848e4
       
   226    * bm4                       5:92793bfc8cad
       
   227   $ cd ../repo3
       
   228   $ hg boo
       
   229      bm1                       3:b87954705719
       
   230      bm4                       5:92793bfc8cad
       
   231   $ hg --config "extensions.failpullbookmarks=$TESTTMP/failpullbookmarks.py" pull $TESTTMP/repo4
       
   232   pulling from $TESTTMP/repo4
       
   233   searching for changes
       
   234   no changes found
       
   235   adding remote bookmark bm3
       
   236   abort: forced failure by extension
       
   237   [255]
       
   238   $ hg boo
       
   239      bm1                       3:b87954705719
       
   240      bm4                       5:92793bfc8cad
       
   241   $ hg pull $TESTTMP/repo4
       
   242   pulling from $TESTTMP/repo4
       
   243   searching for changes
       
   244   no changes found
       
   245   adding remote bookmark bm3
       
   246   1 local changesets published
       
   247   $ hg boo
       
   248      bm1                       3:b87954705719
       
   249    * bm3                       4:62f4ded848e4
       
   250      bm4                       5:92793bfc8cad
       
   251   $ cd ..
       
   252 
       
   253 verify bookmark behavior after unshare
       
   254 
       
   255   $ cd repo3
       
   256   $ hg unshare
       
   257   $ hg boo
       
   258      bm1                       3:b87954705719
       
   259    * bm3                       4:62f4ded848e4
       
   260      bm4                       5:92793bfc8cad
       
   261   $ hg boo -d bm4
       
   262   $ hg boo bm5
       
   263   $ hg boo
       
   264      bm1                       3:b87954705719
       
   265      bm3                       4:62f4ded848e4
       
   266    * bm5                       4:62f4ded848e4
       
   267   $ cd ../repo1
       
   268   $ hg boo
       
   269    * bm1                       3:b87954705719
       
   270      bm3                       4:62f4ded848e4
       
   271      bm4                       5:92793bfc8cad
       
   272   $ cd ..