6hg(SrSSKJr SSKrSSKJr SSKJrJrJ r J r J r SSK J r 0r\ R"\5r\"SS S S \"S 54S S S \"S54S SS \"S54S SS \"S54S SS \"S54S SS\"S54/\"S5S S S9S5rg)a'chainsaw is a collection of single-minded and dangerous tools. (EXPERIMENTAL) "Don't use a chainsaw to cut your food!" The chainsaw is a collection of commands that are so much geared towards a specific use case in a specific context or environment that they are totally inappropriate and **really dangerous** in other contexts. The help text of each command explicitly summarizes its context of application and the wanted end result. It is recommended to run these commands with the ``HGPLAIN`` environment variable (see :hg:`help scripting`). ) annotationsN)_)cmdutilcommandserror localrepo registrar)urlutilsadmin::chainsaw-updates purge-unknownTsxRemove unversioned files before update. Disabling this can in some cases interfere with the update.See also :hg:`purge`.s purge-ignoreds|Remove ignored files before update. Disable this for instance to reuse previous compiler object files. See also :hg:`purge`.srevsrevision to update tossourcesrepository to clone fromsdests.repository to update to REV (possibly cloning)sinitial-clone-minimalFsPull 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.sHhg admin::chainsaw-update [OPTION] --rev REV --source SOURCE --dest DEST) helpbasicnorepoc USnUSnUSnU(d[R"[S55eU(d[R"[S55eU(d[R"[S55e[R"U5n[ R "XSS9nSnUR[S U-55 URRS5(aUR[S55 URRS5(aUR[S55 UR5 UR!5 UR[S55 UR#5 UR[S5U-5 U(aUR%S5(d/nOU/nSS 0nUR&R)US5 [*R,"S[.R05SSn U "UR&UUUSS9n U (aU sSSS5 sSSS5 sSSS5 $SSS5 [*R,"S[.R05SSn U "UUS UR%S5UR%S5SS9n U (aU sSSS5 sSSS5 $UR[S 5U-5 [*R,"S![.R05SSn U "XUS S"9n U (aU sSSS5 sSSS5 $UR[S#5X%R24-5 SSS5 SSS5 g![Ra [R"U5 UR[S U-55 O-![a UR[S U-55 Of=fUR[S U-55 [ R "XS S9nS nGNMf=f!,(df  GN=f!,(df  N=f!,(df  g=f)$aupull 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. revsourcedests$specify a target revision with --revs!specify a pull path with --sourcesspecify a repo path with --destF)createsloaded repository at "%s" s0removed non-repository file or directory at "%s"sno such directory: "%s" screating repository at "%s" Tslockshad to break store lock swlockshad to break working copy lock s1recovering after interrupted transaction, if any spulling from %s initial_clone_minimal)suisquietschainsaw-updatespullr)r remote_hiddenNspurge purge_ignored purge_unknown)dirsallfilesconfirmsupdating to revision '%s' supdate)rcleans=chainsaw-update to revision '%s' for repository at '%s' done )r InputErrorrr urllocalpathr instancestatus RepoErrorshutilrmtreeFileNotFoundErrorsvfs tryunlinkvfswlocklockrecovergetuiconfigoverriderfindcmdrtableroot) r-optsrr repo_pathrepo repo_created pull_revs overridespullretpurgeupdates :/usr/lib/python3/dist-packages/mercurial/admin/chainsaw.pyr;r;*sL u+C (^FV I q!HIJJ q!EFGG q!CDEE$$Y/I!!">  !2Y>?@$ yy7## !012 xx(## !789 tyy{ !IJK  !()F23 )@ A AII&- WW # #I/A B??7HNN;A>qAD# CC B#{&C(..9!qAR3d3 M#{P 3 II   Q#/ ??  MM) $ II!*+ ! C IIa4y@A B C !4y@AB!!"= BC B#{s4M-Q"B P0-AP5 P0> QA$P06 Q AP0! Q4(P0Q-PN6P6'O PO  7PP P- (P00 P> :Q Q)__doc__ __future__rr#i18nrrrrr r utilsr cmdtablecommandr;r r<rEs #     H %     )      )      & '      ) *      ? @    $  H  O2fS s:v w:v r