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] |