tests/test-exchange-multi-source.t
changeset 46764 685383486d0a
child 46778 066b8d8f75b8
equal deleted inserted replaced
46763:954bad9c32a0 46764:685383486d0a
       
     1 ====================================================
       
     2 Test push/pull from multiple source at the same time
       
     3 ====================================================
       
     4 
       
     5 
       
     6 Setup
       
     7 =====
       
     8 
       
     9 main repository
       
    10 ---------------
       
    11 
       
    12   $ . $RUNTESTDIR/testlib/common.sh
       
    13   $ hg init main-repo
       
    14   $ cd main-repo
       
    15   $ mkcommit A
       
    16   $ mkcommit B
       
    17   $ mkcommit C
       
    18   $ mkcommit D
       
    19   $ mkcommit E
       
    20   $ hg up 'desc(B)'
       
    21   0 files updated, 0 files merged, 3 files removed, 0 files unresolved
       
    22   $ mkcommit F
       
    23   created new head
       
    24   $ mkcommit G
       
    25   $ hg up 'desc(C)'
       
    26   1 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
    27   $ mkcommit H
       
    28   created new head
       
    29   $ hg up null --quiet
       
    30   $ hg log -T '{desc} {rev}\n' --rev 'sort(all(), "topo")' -G
       
    31   o  H 7
       
    32   |
       
    33   | o  E 4
       
    34   | |
       
    35   | o  D 3
       
    36   |/
       
    37   o  C 2
       
    38   |
       
    39   | o  G 6
       
    40   | |
       
    41   | o  F 5
       
    42   |/
       
    43   o  B 1
       
    44   |
       
    45   o  A 0
       
    46   
       
    47   $ cd ..
       
    48 
       
    49 Various other repositories
       
    50 --------------------------
       
    51 
       
    52   $ hg clone main-repo branch-E --rev 4 -U
       
    53   adding changesets
       
    54   adding manifests
       
    55   adding file changes
       
    56   added 5 changesets with 5 changes to 5 files
       
    57   new changesets 4a2df7238c3b:a603bfb5a83e
       
    58   $ hg clone main-repo branch-G --rev 6 -U
       
    59   adding changesets
       
    60   adding manifests
       
    61   adding file changes
       
    62   added 4 changesets with 4 changes to 4 files
       
    63   new changesets 4a2df7238c3b:c521a06b234b
       
    64   $ hg clone main-repo branch-H --rev 7 -U
       
    65   adding changesets
       
    66   adding manifests
       
    67   adding file changes
       
    68   added 4 changesets with 4 changes to 4 files
       
    69   new changesets 4a2df7238c3b:40faebb2ec45
       
    70 
       
    71 Test simple bare operation
       
    72 ==========================
       
    73 
       
    74   $ hg clone main-repo test-repo-bare --rev 0 -U
       
    75   adding changesets
       
    76   adding manifests
       
    77   adding file changes
       
    78   added 1 changesets with 1 changes to 1 files
       
    79   new changesets 4a2df7238c3b
       
    80 
       
    81   $ hg pull -R test-repo-bare ./branch-E ./branch-G ./branch-H
       
    82   pulling from ./branch-E
       
    83   searching for changes
       
    84   adding changesets
       
    85   adding manifests
       
    86   adding file changes
       
    87   added 4 changesets with 4 changes to 4 files
       
    88   new changesets 27547f69f254:a603bfb5a83e
       
    89   (run 'hg update' to get a working copy)
       
    90   pulling from ./branch-G
       
    91   searching for changes
       
    92   adding changesets
       
    93   adding manifests
       
    94   adding file changes
       
    95   added 2 changesets with 2 changes to 2 files (+1 heads)
       
    96   new changesets 2f3a4c5c1417:c521a06b234b
       
    97   (run 'hg heads' to see heads, 'hg merge' to merge)
       
    98   pulling from ./branch-H
       
    99   searching for changes
       
   100   adding changesets
       
   101   adding manifests
       
   102   adding file changes
       
   103   added 1 changesets with 1 changes to 1 files (+1 heads)
       
   104   new changesets 40faebb2ec45
       
   105   (run 'hg heads .' to see heads, 'hg merge' to merge)
       
   106   $ hg log -R test-repo-bare -T '{desc} {rev}\n' --rev 'sort(all(), "topo")' -G
       
   107   o  H 7
       
   108   |
       
   109   | o  E 4
       
   110   | |
       
   111   | o  D 3
       
   112   |/
       
   113   o  C 2
       
   114   |
       
   115   | o  G 6
       
   116   | |
       
   117   | o  F 5
       
   118   |/
       
   119   o  B 1
       
   120   |
       
   121   o  A 0
       
   122   
       
   123 
       
   124 Test operation with a target
       
   125 ============================
       
   126 
       
   127   $ hg clone main-repo test-repo-rev --rev 0 -U
       
   128   adding changesets
       
   129   adding manifests
       
   130   adding file changes
       
   131   added 1 changesets with 1 changes to 1 files
       
   132   new changesets 4a2df7238c3b
       
   133 
       
   134 pulling an explicite revision
       
   135 
       
   136   $ node_b=`hg log -R main-repo --rev 'desc(B)' -T '{node}'`
       
   137   $ hg pull -R test-repo-rev ./branch-E ./branch-G ./branch-H --rev $node_b
       
   138   pulling from ./branch-E
       
   139   searching for changes
       
   140   adding changesets
       
   141   adding manifests
       
   142   adding file changes
       
   143   added 1 changesets with 1 changes to 1 files
       
   144   new changesets 27547f69f254
       
   145   (run 'hg update' to get a working copy)
       
   146   pulling from ./branch-G
       
   147   no changes found
       
   148   pulling from ./branch-H
       
   149   no changes found
       
   150   $ hg log -R test-repo-rev -T '{desc} {rev}\n' --rev 'sort(all(), "topo")' -G
       
   151   o  B 1
       
   152   |
       
   153   o  A 0
       
   154   
       
   155 
       
   156 pulling a branch head, the branch head resolve to different revision on the
       
   157 different repositories.
       
   158 
       
   159   $ hg pull -R test-repo-rev ./branch-E ./branch-G ./branch-H --rev default
       
   160   pulling from ./branch-E
       
   161   searching for changes
       
   162   adding changesets
       
   163   adding manifests
       
   164   adding file changes
       
   165   added 3 changesets with 3 changes to 3 files
       
   166   new changesets f838bfaca5c7:a603bfb5a83e
       
   167   (run 'hg update' to get a working copy)
       
   168   pulling from ./branch-G
       
   169   searching for changes
       
   170   adding changesets
       
   171   adding manifests
       
   172   adding file changes
       
   173   added 2 changesets with 2 changes to 2 files (+1 heads)
       
   174   new changesets 2f3a4c5c1417:c521a06b234b
       
   175   (run 'hg heads' to see heads, 'hg merge' to merge)
       
   176   pulling from ./branch-H
       
   177   searching for changes
       
   178   adding changesets
       
   179   adding manifests
       
   180   adding file changes
       
   181   added 1 changesets with 1 changes to 1 files (+1 heads)
       
   182   new changesets 40faebb2ec45
       
   183   (run 'hg heads .' to see heads, 'hg merge' to merge)
       
   184   $ hg log -R test-repo-rev -T '{desc} {rev}\n' --rev 'sort(all(), "topo")' -G
       
   185   o  H 7
       
   186   |
       
   187   | o  E 4
       
   188   | |
       
   189   | o  D 3
       
   190   |/
       
   191   o  C 2
       
   192   |
       
   193   | o  G 6
       
   194   | |
       
   195   | o  F 5
       
   196   |/
       
   197   o  B 1
       
   198   |
       
   199   o  A 0
       
   200   
       
   201 
       
   202 
       
   203 Test with --update
       
   204 ==================
       
   205 
       
   206 update without conflicts
       
   207 ------------------------
       
   208 
       
   209   $ hg clone main-repo test-repo-update --rev 0
       
   210   adding changesets
       
   211   adding manifests
       
   212   adding file changes
       
   213   added 1 changesets with 1 changes to 1 files
       
   214   new changesets 4a2df7238c3b
       
   215   updating to branch default
       
   216   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   217 
       
   218 We update for each pull, so the first on get into a branch independant from the
       
   219 other and stay there. This is the expected behavior.
       
   220 
       
   221   $ hg log -R test-repo-update -T '{desc} {rev}\n' --rev 'sort(all(), "topo")' -G
       
   222   @  A 0
       
   223   
       
   224   $ hg pull -R test-repo-update ./branch-E ./branch-G ./branch-H --update
       
   225   pulling from ./branch-E
       
   226   searching for changes
       
   227   adding changesets
       
   228   adding manifests
       
   229   adding file changes
       
   230   added 4 changesets with 4 changes to 4 files
       
   231   new changesets 27547f69f254:a603bfb5a83e
       
   232   4 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   233   pulling from ./branch-G
       
   234   searching for changes
       
   235   adding changesets
       
   236   adding manifests
       
   237   adding file changes
       
   238   added 2 changesets with 2 changes to 2 files (+1 heads)
       
   239   new changesets 2f3a4c5c1417:c521a06b234b
       
   240   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   241   updated to "a603bfb5a83e: E"
       
   242   1 other heads for branch "default"
       
   243   pulling from ./branch-H
       
   244   searching for changes
       
   245   adding changesets
       
   246   adding manifests
       
   247   adding file changes
       
   248   added 1 changesets with 1 changes to 1 files (+1 heads)
       
   249   new changesets 40faebb2ec45
       
   250   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   251   updated to "a603bfb5a83e: E"
       
   252   2 other heads for branch "default"
       
   253   $ hg log -R test-repo-update -T '{desc} {rev}\n' --rev 'sort(all(), "topo")' -G
       
   254   o  H 7
       
   255   |
       
   256   | @  E 4
       
   257   | |
       
   258   | o  D 3
       
   259   |/
       
   260   o  C 2
       
   261   |
       
   262   | o  G 6
       
   263   | |
       
   264   | o  F 5
       
   265   |/
       
   266   o  B 1
       
   267   |
       
   268   o  A 0
       
   269   
       
   270 
       
   271 update with conflicts
       
   272 ---------------------
       
   273 
       
   274   $ hg clone main-repo test-repo-conflict --rev 0
       
   275   adding changesets
       
   276   adding manifests
       
   277   adding file changes
       
   278   added 1 changesets with 1 changes to 1 files
       
   279   new changesets 4a2df7238c3b
       
   280   updating to branch default
       
   281   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   282 
       
   283 The update has conflict and interrupt the pull.
       
   284 
       
   285   $ echo this-will-conflict > test-repo-conflict/D
       
   286   $ hg add -R test-repo-conflict test-repo-conflict/D
       
   287   $ hg log -R test-repo-conflict -T '{desc} {rev}\n' --rev 'sort(all(), "topo")' -G
       
   288   @  A 0
       
   289   
       
   290   $ hg pull -R test-repo-conflict ./branch-E ./branch-G ./branch-H --update
       
   291   pulling from ./branch-E
       
   292   searching for changes
       
   293   adding changesets
       
   294   adding manifests
       
   295   adding file changes
       
   296   added 4 changesets with 4 changes to 4 files
       
   297   new changesets 27547f69f254:a603bfb5a83e
       
   298   merging D
       
   299   warning: conflicts while merging D! (edit, then use 'hg resolve --mark')
       
   300   3 files updated, 0 files merged, 0 files removed, 1 files unresolved
       
   301   use 'hg resolve' to retry unresolved file merges
       
   302   [1]
       
   303   $ hg -R test-repo-conflict resolve -l
       
   304   U D
       
   305   $ hg log -R test-repo-conflict -T '{desc} {rev}\n' --rev 'sort(all(), "topo")' -G
       
   306   @  E 4
       
   307   |
       
   308   o  D 3
       
   309   |
       
   310   o  C 2
       
   311   |
       
   312   o  B 1
       
   313   |
       
   314   %  A 0
       
   315