tests/test-narrow-merge.t
changeset 36079 a2a6e724d61a
child 36084 dc01484606da
equal deleted inserted replaced
36078:7f68235f23ff 36079:a2a6e724d61a
       
     1 
       
     2   $ . "$TESTDIR/narrow-library.sh"
       
     3 
       
     4 create full repo
       
     5 
       
     6   $ hg init master
       
     7   $ cd master
       
     8   $ cat >> .hg/hgrc <<EOF
       
     9   > [narrow]
       
    10   > serveellipses=True
       
    11   > EOF
       
    12 
       
    13   $ mkdir inside
       
    14   $ echo inside1 > inside/f1
       
    15   $ echo inside2 > inside/f2
       
    16   $ mkdir outside
       
    17   $ echo outside1 > outside/f1
       
    18   $ echo outside2 > outside/f2
       
    19   $ hg ci -Aqm 'initial'
       
    20 
       
    21   $ echo modified > inside/f1
       
    22   $ hg ci -qm 'modify inside/f1'
       
    23 
       
    24   $ hg update -q 0
       
    25   $ echo modified > inside/f2
       
    26   $ hg ci -qm 'modify inside/f2'
       
    27 
       
    28   $ hg update -q 0
       
    29   $ echo modified2 > inside/f1
       
    30   $ hg ci -qm 'conflicting inside/f1'
       
    31 
       
    32   $ hg update -q 0
       
    33   $ echo modified > outside/f1
       
    34   $ hg ci -qm 'modify outside/f1'
       
    35 
       
    36   $ hg update -q 0
       
    37   $ echo modified2 > outside/f1
       
    38   $ hg ci -qm 'conflicting outside/f1'
       
    39 
       
    40   $ cd ..
       
    41 
       
    42   $ hg clone --narrow ssh://user@dummy/master narrow --include inside
       
    43   requesting all changes
       
    44   adding changesets
       
    45   adding manifests
       
    46   adding file changes
       
    47   added 6 changesets with 5 changes to 2 files (+4 heads)
       
    48   new changesets *:* (glob)
       
    49   updating to branch default
       
    50   2 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
    51   $ cd narrow
       
    52 
       
    53   $ hg update -q 0
       
    54 
       
    55 Can merge in when no files outside narrow spec are involved
       
    56 
       
    57   $ hg update -q 'desc("modify inside/f1")'
       
    58   $ hg merge 'desc("modify inside/f2")'
       
    59   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
    60   (branch merge, don't forget to commit)
       
    61   $ hg commit -m 'merge inside changes'
       
    62 
       
    63 Can merge conflicting changes inside narrow spec
       
    64 
       
    65   $ hg update -q 'desc("modify inside/f1")'
       
    66   $ hg merge 'desc("conflicting inside/f1")' 2>&1 | egrep -v '(warning:|incomplete!)'
       
    67   merging inside/f1
       
    68   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
       
    69   use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
       
    70   $ echo modified3 > inside/f1
       
    71   $ hg resolve -m
       
    72   (no more unresolved files)
       
    73   $ hg commit -m 'merge inside/f1'
       
    74 
       
    75 TODO: Can merge non-conflicting changes outside narrow spec
       
    76 
       
    77   $ hg update -q 'desc("modify inside/f1")'
       
    78   $ hg merge 'desc("modify outside/f1")'
       
    79   abort: merge affects file 'outside/f1' outside narrow, which is not yet supported
       
    80   (merging in the other direction may work)
       
    81   [255]
       
    82 
       
    83   $ hg update -q 'desc("modify outside/f1")'
       
    84   $ hg merge 'desc("modify inside/f1")'
       
    85   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
    86   (branch merge, don't forget to commit)
       
    87   $ hg ci -m 'merge from inside to outside'
       
    88 
       
    89 Refuses merge of conflicting outside changes
       
    90 
       
    91   $ hg update -q 'desc("modify outside/f1")'
       
    92   $ hg merge 'desc("conflicting outside/f1")'
       
    93   abort: conflict in file 'outside/f1' is outside narrow clone
       
    94   [255]