tests/test-obsolete-checkheads.t
changeset 17546 488e470634d8
child 17547 e6de4761d26f
equal deleted inserted replaced
17540:f2bcc5975f10 17546:488e470634d8
       
     1 Check that obsolete properly strip heads
       
     2   $ cat > obs.py << EOF
       
     3   > import mercurial.obsolete
       
     4   > mercurial.obsolete._enabled = True
       
     5   > EOF
       
     6   $ cat >> $HGRCPATH << EOF
       
     7   > [phases]
       
     8   > # public changeset are not obsolete
       
     9   > publish=false
       
    10   > [ui]
       
    11   > logtemplate='{node|short} ({phase}) {desc|firstline}\n'
       
    12   > [extensions]
       
    13   > graphlog=
       
    14   > EOF
       
    15   $ echo "obs=${TESTTMP}/obs.py" >> $HGRCPATH
       
    16   $ mkcommit() {
       
    17   >    echo "$1" > "$1"
       
    18   >    hg add "$1"
       
    19   >    hg ci -m "add $1"
       
    20   > }
       
    21   $ getid() {
       
    22   >    hg id --debug -ir "desc('$1')"
       
    23   > }
       
    24 
       
    25 
       
    26   $ hg init remote
       
    27   $ cd remote
       
    28   $ mkcommit base
       
    29   $ hg phase --public .
       
    30   $ cd ..
       
    31   $ cp -r remote base
       
    32   $ hg clone remote local
       
    33   updating to branch default
       
    34   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
    35   $ cd local
       
    36 
       
    37 New head replaces old head
       
    38 ==========================
       
    39 
       
    40 setup
       
    41 
       
    42   $ mkcommit old
       
    43   $ hg push
       
    44   pushing to $TESTTMP/remote
       
    45   searching for changes
       
    46   adding changesets
       
    47   adding manifests
       
    48   adding file changes
       
    49   added 1 changesets with 1 changes to 1 files
       
    50   $ hg up -q '.^'
       
    51   $ mkcommit new
       
    52   created new head
       
    53   $ hg debugobsolete `getid old` `getid new`
       
    54   $ hg glog --hidden
       
    55   @  71e3228bffe1 (draft) add new
       
    56   |
       
    57   | x  c70b08862e08 (draft) add old
       
    58   |/
       
    59   o  b4952fcf48cf (public) add base
       
    60   
       
    61   $ cp -r ../remote ../backup1
       
    62 
       
    63 old exists remotely as draft. It is obsoleted by new that we now push.
       
    64 Push should not warn about creating new head
       
    65 
       
    66   $ hg push
       
    67   pushing to $TESTTMP/remote
       
    68   searching for changes
       
    69   adding changesets
       
    70   adding manifests
       
    71   adding file changes
       
    72   added 1 changesets with 1 changes to 1 files (+1 heads)
       
    73 
       
    74 old head is obsolete but replacement in not pushed
       
    75 ==================================================
       
    76 
       
    77 setup
       
    78 
       
    79   $ rm -fr ../remote
       
    80   $ cp -r ../backup1 ../remote
       
    81   $ hg up -q '.^'
       
    82   $ mkcommit other
       
    83   created new head
       
    84   $ hg glog --hidden
       
    85   @  d7d41ccbd4de (draft) add other
       
    86   |
       
    87   | o  71e3228bffe1 (draft) add new
       
    88   |/
       
    89   | x  c70b08862e08 (draft) add old
       
    90   |/
       
    91   o  b4952fcf48cf (public) add base
       
    92   
       
    93 
       
    94 old exists remotely as draft. It is obsoleted by new but we don't push new.
       
    95 Push should abort on new head
       
    96 
       
    97   $ hg push -r 'desc("other")'
       
    98   pushing to $TESTTMP/remote
       
    99   searching for changes
       
   100   abort: push creates new remote head d7d41ccbd4de!
       
   101   (did you forget to merge? use push -f to force)
       
   102   [255]