tests/test-topic-push.t
branchmercurial-3.9
changeset 3112 706402d70b3f
parent 3111 7518ff7f26da
parent 3004 a456f55b3a6b
child 3113 27305068c5c9
child 3120 add76a5eb1ae
equal deleted inserted replaced
3111:7518ff7f26da 3112:706402d70b3f
     1   $ . "$TESTDIR/testlib/topic_setup.sh"
       
     2 
       
     3   $ cat << EOF >> $HGRCPATH
       
     4   > [ui]
       
     5   > logtemplate = {rev} {branch} {get(namespaces, "topics")} {phase} {desc|firstline}\n
       
     6   > ssh =python "$RUNTESTDIR/dummyssh"
       
     7   > EOF
       
     8 
       
     9   $ hg init main
       
    10   $ hg init draft
       
    11   $ cat << EOF >> draft/.hg/hgrc
       
    12   > [phases]
       
    13   > publish=False
       
    14   > EOF
       
    15   $ hg clone main client
       
    16   updating to branch default
       
    17   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
    18   $ cat << EOF >> client/.hg/hgrc
       
    19   > [paths]
       
    20   > draft=../draft
       
    21   > EOF
       
    22 
       
    23 
       
    24 Testing core behavior to make sure we did not break anything
       
    25 ============================================================
       
    26 
       
    27 Pushing a first changeset
       
    28 
       
    29   $ cd client
       
    30   $ echo aaa > aaa
       
    31   $ hg add aaa
       
    32   $ hg commit -m 'CA'
       
    33   $ hg outgoing -G
       
    34   comparing with $TESTTMP/main (glob)
       
    35   searching for changes
       
    36   @  0 default  draft CA
       
    37   
       
    38   $ hg push
       
    39   pushing to $TESTTMP/main (glob)
       
    40   searching for changes
       
    41   adding changesets
       
    42   adding manifests
       
    43   adding file changes
       
    44   added 1 changesets with 1 changes to 1 files
       
    45 
       
    46 Pushing two heads
       
    47 
       
    48   $ echo aaa > bbb
       
    49   $ hg add bbb
       
    50   $ hg commit -m 'CB'
       
    51   $ echo aaa > ccc
       
    52   $ hg up 'desc(CA)'
       
    53   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
    54   $ hg add ccc
       
    55   $ hg commit -m 'CC'
       
    56   created new head
       
    57   $ hg outgoing -G
       
    58   comparing with $TESTTMP/main (glob)
       
    59   searching for changes
       
    60   @  2 default  draft CC
       
    61   
       
    62   o  1 default  draft CB
       
    63   
       
    64   $ hg push
       
    65   pushing to $TESTTMP/main (glob)
       
    66   searching for changes
       
    67   abort: push creates new remote head 9fe81b7f425d!
       
    68   (merge or see 'hg help push' for details about pushing new heads)
       
    69   [255]
       
    70   $ hg outgoing -r 'desc(CB)' -G
       
    71   comparing with $TESTTMP/main (glob)
       
    72   searching for changes
       
    73   o  1 default  draft CB
       
    74   
       
    75   $ hg push -r 'desc(CB)'
       
    76   pushing to $TESTTMP/main (glob)
       
    77   searching for changes
       
    78   adding changesets
       
    79   adding manifests
       
    80   adding file changes
       
    81   added 1 changesets with 1 changes to 1 files
       
    82 
       
    83 Pushing a new branch
       
    84 
       
    85   $ hg branch mountain
       
    86   marked working directory as branch mountain
       
    87   (branches are permanent and global, did you want a bookmark?)
       
    88   $ hg commit --amend
       
    89   $ hg outgoing -G
       
    90   comparing with $TESTTMP/main (glob)
       
    91   searching for changes
       
    92   @  4 mountain  draft CC
       
    93   
       
    94   $ hg push 
       
    95   pushing to $TESTTMP/main (glob)
       
    96   searching for changes
       
    97   abort: push creates new remote branches: mountain!
       
    98   (use 'hg push --new-branch' to create new remote branches)
       
    99   [255]
       
   100   $ hg push --new-branch
       
   101   pushing to $TESTTMP/main (glob)
       
   102   searching for changes
       
   103   adding changesets
       
   104   adding manifests
       
   105   adding file changes
       
   106   added 1 changesets with 1 changes to 1 files (+1 heads)
       
   107   2 new obsolescence markers
       
   108 
       
   109 Including on non-publishing
       
   110 
       
   111   $ hg push --new-branch draft
       
   112   pushing to $TESTTMP/draft (glob)
       
   113   searching for changes
       
   114   adding changesets
       
   115   adding manifests
       
   116   adding file changes
       
   117   added 3 changesets with 3 changes to 3 files (+1 heads)
       
   118   2 new obsolescence markers
       
   119 
       
   120 Testing topic behavior
       
   121 ======================
       
   122 
       
   123 Local peer tests
       
   124 ----------------
       
   125 
       
   126   $ hg up -r 'desc(CA)'
       
   127   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   128   $ hg topic babar
       
   129   marked working directory as topic: babar
       
   130   $ echo aaa > ddd
       
   131   $ hg add ddd
       
   132   $ hg commit -m 'CD'
       
   133   active topic 'babar' grew its first changeset
       
   134   $ hg log -G # keep track of phase because I saw some strange bug during developement
       
   135   @  5 default babar draft CD
       
   136   |
       
   137   | o  4 mountain  public CC
       
   138   |/
       
   139   | o  1 default  public CB
       
   140   |/
       
   141   o  0 default  public CA
       
   142   
       
   143 
       
   144 Pushing a new topic to a non publishing server should not be seen as a new head
       
   145 
       
   146   $ hg push draft
       
   147   pushing to $TESTTMP/draft (glob)
       
   148   searching for changes
       
   149   adding changesets
       
   150   adding manifests
       
   151   adding file changes
       
   152   added 1 changesets with 1 changes to 1 files (+1 heads)
       
   153   $ hg log -G
       
   154   @  5 default babar draft CD
       
   155   |
       
   156   | o  4 mountain  public CC
       
   157   |/
       
   158   | o  1 default  public CB
       
   159   |/
       
   160   o  0 default  public CA
       
   161   
       
   162 push --topic
       
   163 
       
   164   $ hg log -G -R $TESTTMP/draft
       
   165   o  3 default babar draft CD
       
   166   |
       
   167   | o  2 mountain  public CC
       
   168   |/
       
   169   | o  1 default  public CB
       
   170   |/
       
   171   o  0 default  public CA
       
   172   
       
   173   $ echo bbb >> aaa
       
   174   $ hg commit -m "C'A"
       
   175   $ hg up 1
       
   176   2 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   177   $ hg topic --clear
       
   178   $ echo bbb >> bbb
       
   179   $ hg commit -m "C'B"
       
   180   $ hg log -G
       
   181   @  7 default  draft C'B
       
   182   |
       
   183   | o  6 default babar draft C'A
       
   184   | |
       
   185   | o  5 default babar draft CD
       
   186   | |
       
   187   | | o  4 mountain  public CC
       
   188   | |/
       
   189   o |  1 default  public CB
       
   190   |/
       
   191   o  0 default  public CA
       
   192   
       
   193   $ hg outgoing draft --topic babar
       
   194   comparing with $TESTTMP/draft
       
   195   searching for changes
       
   196   6 default babar draft C'A
       
   197   $ hg push draft --topic babar
       
   198   pushing to $TESTTMP/draft
       
   199   searching for changes
       
   200   adding changesets
       
   201   adding manifests
       
   202   adding file changes
       
   203   added 1 changesets with 1 changes to 1 files
       
   204   $ hg log -G -R $TESTTMP/draft
       
   205   o  4 default babar draft C'A
       
   206   |
       
   207   o  3 default babar draft CD
       
   208   |
       
   209   | o  2 mountain  public CC
       
   210   |/
       
   211   | o  1 default  public CB
       
   212   |/
       
   213   o  0 default  public CA
       
   214   
       
   215   $ hg strip --config extensions.strip= --no-backup -r 7a9e34dbf547: --quiet
       
   216   $ hg strip --config extensions.strip= -R $TESTTMP/draft --no-backup -r 7a9e34dbf547: --quiet
       
   217 
       
   218 Pushing a new topic to a publishing server should be seen as a new head
       
   219 
       
   220   $ hg push
       
   221   pushing to $TESTTMP/main (glob)
       
   222   searching for changes
       
   223   abort: push creates new remote head 67f579af159d!
       
   224   (merge or see 'hg help push' for details about pushing new heads)
       
   225   [255]
       
   226   $ hg log -G
       
   227   @  5 default babar draft CD
       
   228   |
       
   229   | o  4 mountain  public CC
       
   230   |/
       
   231   | o  1 default  public CB
       
   232   |/
       
   233   o  0 default  public CA
       
   234   
       
   235 
       
   236 wireprotocol tests
       
   237 ------------------
       
   238 
       
   239   $ hg up -r 'desc(CA)'
       
   240   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   241   $ hg topic celeste
       
   242   marked working directory as topic: celeste
       
   243   $ echo aaa > eee
       
   244   $ hg add eee
       
   245   $ hg commit -m 'CE'
       
   246   active topic 'celeste' grew its first changeset
       
   247   $ hg log -G # keep track of phase because I saw some strange bug during developement
       
   248   @  6 default celeste draft CE
       
   249   |
       
   250   | o  5 default babar draft CD
       
   251   |/
       
   252   | o  4 mountain  public CC
       
   253   |/
       
   254   | o  1 default  public CB
       
   255   |/
       
   256   o  0 default  public CA
       
   257   
       
   258 
       
   259 Pushing a new topic to a non publishing server without topic -> new head
       
   260 
       
   261   $ cat << EOF >> ../draft/.hg/hgrc
       
   262   > [extensions]
       
   263   > topic=!
       
   264   > EOF
       
   265   $ hg push ssh://user@dummy/draft
       
   266   pushing to ssh://user@dummy/draft
       
   267   searching for changes
       
   268   abort: push creates new remote head 84eaf32db6c3!
       
   269   (merge or see 'hg help push' for details about pushing new heads)
       
   270   [255]
       
   271   $ hg log -G
       
   272   @  6 default celeste draft CE
       
   273   |
       
   274   | o  5 default babar draft CD
       
   275   |/
       
   276   | o  4 mountain  public CC
       
   277   |/
       
   278   | o  1 default  public CB
       
   279   |/
       
   280   o  0 default  public CA
       
   281   
       
   282 
       
   283 Pushing a new topic to a non publishing server should not be seen as a new head
       
   284 
       
   285   $ printf "topic=" >> ../draft/.hg/hgrc
       
   286   $ hg config extensions.topic >> ../draft/.hg/hgrc
       
   287   $ hg push ssh://user@dummy/draft
       
   288   pushing to ssh://user@dummy/draft
       
   289   searching for changes
       
   290   remote: adding changesets
       
   291   remote: adding manifests
       
   292   remote: adding file changes
       
   293   remote: added 1 changesets with 1 changes to 1 files (+1 heads)
       
   294   $ hg log -G
       
   295   @  6 default celeste draft CE
       
   296   |
       
   297   | o  5 default babar draft CD
       
   298   |/
       
   299   | o  4 mountain  public CC
       
   300   |/
       
   301   | o  1 default  public CB
       
   302   |/
       
   303   o  0 default  public CA
       
   304   
       
   305 
       
   306 Pushing a new topic to a publishing server should be seen as a new head
       
   307 
       
   308   $ hg push ssh://user@dummy/main
       
   309   pushing to ssh://user@dummy/main
       
   310   searching for changes
       
   311   abort: push creates new remote head 67f579af159d!
       
   312   (merge or see 'hg help push' for details about pushing new heads)
       
   313   [255]
       
   314   $ hg log -G
       
   315   @  6 default celeste draft CE
       
   316   |
       
   317   | o  5 default babar draft CD
       
   318   |/
       
   319   | o  4 mountain  public CC
       
   320   |/
       
   321   | o  1 default  public CB
       
   322   |/
       
   323   o  0 default  public CA
       
   324   
       
   325 
       
   326 Check that we reject multiple head on the same topic
       
   327 ----------------------------------------------------
       
   328 
       
   329   $ hg up 'desc(CB)'
       
   330   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   331   $ hg topic babar
       
   332   marked working directory as topic: babar
       
   333   $ echo aaa > fff
       
   334   $ hg add fff
       
   335   $ hg commit -m 'CF'
       
   336   $ hg log -G
       
   337   @  7 default babar draft CF
       
   338   |
       
   339   | o  6 default celeste draft CE
       
   340   | |
       
   341   | | o  5 default babar draft CD
       
   342   | |/
       
   343   | | o  4 mountain  public CC
       
   344   | |/
       
   345   o |  1 default  public CB
       
   346   |/
       
   347   o  0 default  public CA
       
   348   
       
   349 
       
   350   $ hg push draft
       
   351   pushing to $TESTTMP/draft (glob)
       
   352   searching for changes
       
   353   abort: push creates new remote head f0bc62a661be on branch 'default:babar'!
       
   354   (merge or see 'hg help push' for details about pushing new heads)
       
   355   [255]
       
   356 
       
   357 Multiple head on a branch merged in a topic changesets
       
   358 ------------------------------------------------------------------------
       
   359 
       
   360 
       
   361   $ hg up 'desc(CA)'
       
   362   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
   363   $ echo aaa > ggg
       
   364   $ hg add ggg
       
   365   $ hg commit -m 'CG'
       
   366   created new head
       
   367   $ hg up 'desc(CF)'
       
   368   switching to topic babar
       
   369   2 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   370   $ hg merge 'desc(CG)'
       
   371   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   372   (branch merge, don't forget to commit)
       
   373   $ hg commit -m 'CM'
       
   374   $ hg log -G
       
   375   @    9 default babar draft CM
       
   376   |\
       
   377   | o  8 default  draft CG
       
   378   | |
       
   379   o |  7 default babar draft CF
       
   380   | |
       
   381   | | o  6 default celeste draft CE
       
   382   | |/
       
   383   | | o  5 default babar draft CD
       
   384   | |/
       
   385   | | o  4 mountain  public CC
       
   386   | |/
       
   387   o |  1 default  public CB
       
   388   |/
       
   389   o  0 default  public CA
       
   390   
       
   391 
       
   392 Reject when pushing to draft
       
   393 
       
   394   $ hg push draft -r .
       
   395   pushing to $TESTTMP/draft (glob)
       
   396   searching for changes
       
   397   abort: push creates new remote head 4937c4cad39e!
       
   398   (merge or see 'hg help push' for details about pushing new heads)
       
   399   [255]
       
   400 
       
   401 
       
   402 Reject when pushing to publishing
       
   403 
       
   404   $ hg push -r .
       
   405   pushing to $TESTTMP/main (glob)
       
   406   searching for changes
       
   407   adding changesets
       
   408   adding manifests
       
   409   adding file changes
       
   410   added 3 changesets with 2 changes to 2 files
       
   411 
       
   412   $ cd ..
       
   413 
       
   414 Test phase move
       
   415 ==================================
       
   416 
       
   417 setup, two repo knowns about two small topic branch
       
   418 
       
   419   $ hg init repoA
       
   420   $ hg clone repoA repoB
       
   421   updating to branch default
       
   422   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   423   $ cat << EOF >> repoA/.hg/hgrc
       
   424   > [phases]
       
   425   > publish=False
       
   426   > EOF
       
   427   $ cat << EOF >> repoB/.hg/hgrc
       
   428   > [phases]
       
   429   > publish=False
       
   430   > EOF
       
   431   $ cd repoA
       
   432   $ echo aaa > base
       
   433   $ hg add base
       
   434   $ hg commit -m 'CBASE'
       
   435   $ echo aaa > aaa
       
   436   $ hg add aaa
       
   437   $ hg topic topicA
       
   438   marked working directory as topic: topicA
       
   439   $ hg commit -m 'CA'
       
   440   active topic 'topicA' grew its first changeset
       
   441   $ hg up 'desc(CBASE)'
       
   442   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   443   $ echo aaa > bbb
       
   444   $ hg add bbb
       
   445   $ hg topic topicB
       
   446   marked working directory as topic: topicB
       
   447   $ hg commit -m 'CB'
       
   448   active topic 'topicB' grew its first changeset
       
   449   $ cd ..
       
   450   $ hg push -R repoA repoB
       
   451   pushing to repoB
       
   452   searching for changes
       
   453   adding changesets
       
   454   adding manifests
       
   455   adding file changes
       
   456   added 3 changesets with 3 changes to 3 files (+1 heads)
       
   457   $ hg log -G -R repoA
       
   458   @  2 default topicB draft CB
       
   459   |
       
   460   | o  1 default topicA draft CA
       
   461   |/
       
   462   o  0 default  draft CBASE
       
   463   
       
   464 
       
   465 We turn different topic to public on each side,
       
   466 
       
   467   $ hg -R repoA phase --public topicA
       
   468   $ hg -R repoB phase --public topicB
       
   469 
       
   470 Pushing should complain because it create to heads on default
       
   471 
       
   472   $ hg push -R repoA repoB
       
   473   pushing to repoB
       
   474   searching for changes
       
   475   no changes found
       
   476   abort: push create a new head on branch "default"
       
   477   [255]