mercurial/merge.py
changeset 9716 ea8c207a0f78
parent 9467 4c041f1ee1b4
child 9717 68a1b9d0663e
equal deleted inserted replaced
9715:f0e99a2eac76 9716:ea8c207a0f78
   395 
   395 
   396 def update(repo, node, branchmerge, force, partial):
   396 def update(repo, node, branchmerge, force, partial):
   397     """
   397     """
   398     Perform a merge between the working directory and the given node
   398     Perform a merge between the working directory and the given node
   399 
   399 
       
   400     node = the node to update to, or None if unspecified
   400     branchmerge = whether to merge between branches
   401     branchmerge = whether to merge between branches
   401     force = whether to force branch merging or file overwriting
   402     force = whether to force branch merging or file overwriting
   402     partial = a function to filter file lists (dirstate not updated)
   403     partial = a function to filter file lists (dirstate not updated)
       
   404 
       
   405     The table below shows all the behaviors of the update command
       
   406     given the -c and -C or no options, whether the working directory
       
   407     is dirty, whether a revision is specified, and the relationship of
       
   408     the parent rev to the target rev (linear, on the same named
       
   409     branch, or on another named branch).
       
   410 
       
   411     This logic is tested by test-update-branches.
       
   412 
       
   413     -c  -C  dirty  rev  |  linear   same  cross
       
   414      n   n    n     n   |    ok     (1)     x
       
   415      n   n    n     y   |    ok     (1)    ok
       
   416      n   n    y     *   |   merge   (2)    (3)
       
   417      n   y    *     *   |    ---  discard  ---
       
   418      y   n    y     *   |    ---    (4)    ---
       
   419      y   n    n     *   |    ---    ok     ---
       
   420      y   y    *     *   |    ---    (5)    ---
       
   421 
       
   422     x = can't happen
       
   423     * = don't-care
       
   424     1 = abort: crosses branches (use 'hg merge' or 'hg update -C')
       
   425     2 = abort: crosses branches (use 'hg merge' or 'hg update -C'
       
   426                  to discard changes)
       
   427     3 = abort: crosses named branches (use 'hg update -C' to
       
   428                  discard changes)
       
   429     4 = abort: uncommitted local changes
       
   430     5 = incompatible options (checked in commands.py)
   403     """
   431     """
   404 
   432 
   405     wlock = repo.wlock()
   433     wlock = repo.wlock()
   406     try:
   434     try:
   407         wc = repo[None]
   435         wc = repo[None]