hg admin::chainsaw-update [OPTION] --rev REV --source SOURCE --dest DEST

aliases: admin::chainsawupdate

pull and update to a given revision, no matter what, (EXPERIMENTAL)

    Context of application: *some* Continuous Integration (CI) systems,
    packaging or deployment tools.

    Wanted end result: local repository at the given REPO_PATH, having the
    latest changes to the given revision and with a clean working directory
    updated at the given revision.

    chainsaw-update pulls from one source, then updates the working directory
    to the given revision, overcoming anything that would stand in the way.

    By default, it will:

    - clone if the local repo does not exist yet, **removing any directory
      at the given path** that would not be a Mercurial repository.
      The initial clone is full by default, so that clonebundles can be
      applied. Use the --initial-clone-minimal flag to avoid this.
    - break locks if needed, leading to possible corruption if there
      is a concurrent write access.
    - perform recovery actions if needed
    - revert any local modification.
    - purge unknown and ignored files.
    - go as far as to reclone if everything else failed (not implemented yet).

    DO NOT use it for anything else than performing a series
    of unattended updates, with full exclusive repository access each time
    and without any other local work than running build scripts.
    In case the local repository is a share (see :hg:`help share`), exclusive
    write access to the share source is also mandatory.

    It is recommended to run these commands with the ``HGPLAIN`` environment
    variable (see :hg:`scripting`).

    Motivation: in Continuous Integration and Delivery systems (CI/CD), the
    occasional remnant or bogus lock are common sources of waste of time (both
    working time and calendar time). CI/CD scripts tend to grow with counter-
    measures, often done in urgency. Also, whilst it is neat to keep
    repositories from one job to the next (especially with large
    repositories), an exceptional recloning is better than missing a release
    deadline.
    

options:

  ======================= =======================================================================================================================================================================================================================
  --[no-]purge-unknown    Remove unversioned files before update. Disabling this can in some cases interfere with the update.See also :hg:`purge`. (default: on)                                                                                 
  --[no-]purge-ignored    Remove ignored files before update. Disable this for instance to reuse previous compiler object files. See also :hg:`purge`. (default: on)                                                                             
  --rev VALUE             revision to update to                                                                                                                                                                                                  
  --source VALUE          repository to clone from                                                                                                                                                                                               
  --dest VALUE            repository to update to REV (possibly cloning)                                                                                                                                                                         
  --initial-clone-minimal Pull only the prescribed revision upon initial cloning. This has the side effect of ignoring clone-bundles, which if often slower on the client side and stressful to the server than applying available clone bundles.
  ======================= =======================================================================================================================================================================================================================

global options ([+] can be repeated):

 == =================== ==================================================================
 -R --repository REPO   repository root directory or name of overlay bundle file          
    --cwd DIR           change working directory                                          
 -y --noninteractive    do not prompt, automatically pick the first choice for all prompts
 -q --quiet             suppress output                                                   
 -v --verbose           enable additional output                                          
    --color TYPE        when to colorize (boolean, always, auto, never, or debug)         
    --config CONFIG [+] set/override config option (use 'section.name=value')             
    --debug             enable debugging output                                           
    --debugger          start debugger                                                    
    --encoding ENCODE   set the charset encoding (default: utf-8)                         
    --encodingmode MODE set the charset encoding mode (default: strict)                   
    --traceback         always print a traceback on exception                             
    --time              time how long the command takes                                   
    --profile           print command execution profile                                   
    --version           output version information and exit                               
 -h --help              display help and exit                                             
    --hidden            consider hidden changesets                                        
    --pager TYPE        when to paginate (boolean, always, auto, or never) (default: auto)
 == =================== ==================================================================