\x89\x50\x4E\x47\x0D\x0A\x1A\x0A PNG  \x89\x50\x4E\x47\x0D\x0A\x1A\x0A  13\c @@sdZddlmZddlmZddlmZddlmZm Z m Z iZ e j e Z dZ e ddd d ed ed fd dd ededfgedde jd d dZd d dZdS(serase file content at a given revision The censor command instructs Mercurial to erase all content of a file at a given revision *without updating the changeset hash.* This allows existing history to remain valid while preventing future clones/pulls from receiving the erased data. Typical uses for censor are due to security or legal requirements, including:: * Passwords, private keys, cryptographic material * Licensed data/code/libraries for which the license has expired * Personally Identifiable Information or other private data Censored nodes can interrupt mercurial's typical operation whenever the excised data needs to be materialized. Some commands, like ``hg cat``/``hg revert``, simply fail when asked to produce censored data. Others, like ``hg verify`` and ``hg update``, must be capable of tolerating censored data to continue to function in a meaningful way. Such commands only tolerate censored file revisions if they are allowed by the "censor.policy=ignore" config option. i(tabsolute_import(t_(tshort(terrort registrartscmutilsships-with-hg-coretcensortrtrevts#censor file from specified revisiontREVttt tombstonesreplacement tombstone datatTEXTs-r REV [-t TEXT] [FILE]t helpcategorycK@sC|j1|jt||||||SWdQXWdQXdS(N(twlocktlockt _docensor(tuitrepotpathRR topts((s2/usr/lib64/python2.7/site-packages/hgext/censor.pyR/s c K@s|stjtdn|s<tjtdn|d}tj||f}|jst|jdkrtjtdn|jd}|j |}t|stjtdntj |||j }y||} Wn*t k r/tjtd|nXy| j |} Wn-tjk rrtjtd|nX| j} g} xO|jD]A} || }||kr|j|| kr| j|qqW| r3d jg| D]}t|j^q}tjtd |d td n|j}| jg|D]}|j^qOkrtjtd d tdn|jd}|j|| d|WdQXdS(Ns must specify file path to censorsmust specify revision to censoris%can only specify an explicit filenameis"cannot censor file with no historysinvalid revision identifier %ss"file does not exist at revision %ss, s cannot censor file in heads (%s)thintsclean/delete and commit firstscannot censor working directorysclean/delete/update firstRR (RtAbortRtNoneRtmatchtanypatstlentfilestfilet revsingleRtKeyErrortfilectxt LookupErrortfilenodetheadstappendtjoinRtnodetparentst transactiontcensorrevision(RRRRR RtwctxtmtflogtctxtfctxtfnodeR#theadnodethctctheadlisttwptpttr((s2/usr/lib64/python2.7/site-packages/hgext/censor.pyR8sJ $    !. +N(t__doc__t __future__Rtmercurial.i18nRtmercurial.nodeRt mercurialRRRtcmdtabletcommandt testedwithtCATEGORY_MAINTENANCERR(((s2/usr/lib64/python2.7/site-packages/hgext/censor.pyts!