##// END OF EJS Templates
scmutil: introduce function to check whether repo uses treemanifest or not...
scmutil: introduce function to check whether repo uses treemanifest or not In an upcoming patch, I wanted to check whether current repo uses treemanifest or not. I looked for a function and found that at all places we manually check for the requirement in repo requirements. I guess having a dedicated function for that is much better. Differential Revision: https://phab.mercurial-scm.org/D8981

File last commit:

r45693:81859d38 default
r46126:dfe58565 default
Show More
purge.py
136 lines | 4.4 KiB | text/x-python | PythonLexer
Emanuele Aina
Move back the purge extension in hgext
r4311 # Copyright (C) 2006 - Marco Barisione <marco@barisione.org>
#
Matt Mackall
urls: bulk-change primary website URLs
r26421 # This is a small extension for Mercurial (https://mercurial-scm.org/)
Emanuele Aina
Move back the purge extension in hgext
r4311 # that removes files not known to mercurial
#
Martin Geisler
purge: wrap docstrings at 70 characters
r9270 # This program was inspired by the "cvspurge" script contained in CVS
# utilities (http://www.red-bean.com/cvsutils/).
Emanuele Aina
Move back the purge extension in hgext
r4311 #
# For help on the usage of "hg purge" use:
# hg help purge
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
Martin Geisler
Remove FSF mailing address from GPL headers...
r15782 # along with this program; if not, see <http://www.gnu.org/licenses/>.
Emanuele Aina
Move back the purge extension in hgext
r4311
Dirkjan Ochtman
extensions: change descriptions for extensions providing a few commands
r8934 '''command to delete untracked files from the working directory'''
timeless
purge: use absolute_import
r28382 from __future__ import absolute_import
Dirkjan Ochtman
help: add/fix docstrings for a bunch of extensions
r8873
Yuya Nishihara
py3: move up symbol imports to enforce import-checker rules...
r29205 from mercurial.i18n import _
timeless
purge: use absolute_import
r28382 from mercurial import (
Yuya Nishihara
commands: move templates of common command options to cmdutil (API)...
r32375 cmdutil,
Gregory Szorc
merge: move purge logic from extension...
r39499 merge as mergemod,
Augie Fackler
purge: apply byteskwargs to opts, fixing all python3 issues here...
r36589 pycompat,
Yuya Nishihara
registrar: move cmdutil.command to registrar module (API)...
r32337 registrar,
timeless
purge: use absolute_import
r28382 scmutil,
)
Emanuele Aina
Move back the purge extension in hgext
r4311
Adrian Buehlmann
purge: use cmdutil.command decorator
r14310 cmdtable = {}
Yuya Nishihara
registrar: move cmdutil.command to registrar module (API)...
r32337 command = registrar.command(cmdtable)
Augie Fackler
extensions: change magic "shipped with hg" string...
r29841 # Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
Augie Fackler
extensions: document that `testedwith = 'internal'` is special...
r25186 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
# be specifying the version(s) of Mercurial they are tested with, or
# leave the attribute unspecified.
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 testedwith = b'ships-with-hg-core'
Adrian Buehlmann
purge: use cmdutil.command decorator
r14310
Augie Fackler
formatting: blacken the codebase...
r43346
@command(
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 b'purge|clean',
Augie Fackler
formatting: blacken the codebase...
r43346 [
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 (b'a', b'abort-on-err', None, _(b'abort if an error occurs')),
(b'', b'all', None, _(b'purge ignored files too')),
Valentin Gatien-Baron
purge: add -i flag to delete ignored files instead of untracked files...
r44771 (b'i', b'ignored', None, _(b'purge only ignored files')),
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 (b'', b'dirs', None, _(b'purge empty directories')),
(b'', b'files', None, _(b'purge files')),
(b'p', b'print', None, _(b'print filenames instead of deleting them')),
Augie Fackler
formatting: blacken the codebase...
r43346 (
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 b'0',
b'print0',
Augie Fackler
formatting: blacken the codebase...
r43346 None,
_(
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 b'end filenames with NUL, for use with xargs'
b' (implies -p/--print)'
Augie Fackler
formatting: blacken the codebase...
r43346 ),
),
]
+ cmdutil.walkopts,
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 _(b'hg purge [OPTION]... [DIR]...'),
Martin von Zweigbergk
purge: classify as a "working directory management" command in help...
r45693 helpcategory=command.CATEGORY_WORKING_DIRECTORY,
Augie Fackler
formatting: blacken the codebase...
r43346 )
Matt Mackall
purge: eliminate dopurge
r6573 def purge(ui, repo, *dirs, **opts):
Benjamin Pollack
1 file changed, 7 insertions(+), 9 deletions(-)...
r7605 '''removes files not tracked by Mercurial
Matt Mackall
purge: eliminate dopurge
r6573
Martin Geisler
purge: wrap docstrings at 70 characters
r9270 Delete files not known to Mercurial. This is useful to test local
and uncommitted changes in an otherwise-clean source tree.
Matt Mackall
purge: eliminate dopurge
r6573
Ben Kehoe
purge: add options for deleting only files or only directories
r21853 This means that purge will delete the following by default:
Martin Geisler
purge: fix formatting of lists with proper reST markup
r9215
Martin Geisler
Use hg role in help strings
r10973 - Unknown files: files marked with "?" by :hg:`status`
Martin Geisler
purge: wrap docstrings at 70 characters
r9270 - Empty directories: in fact Mercurial ignores directories unless
they contain files under source control management
Martin Geisler
purge: fix formatting of lists with proper reST markup
r9215
Matt Mackall
purge: eliminate dopurge
r6573 But it will leave untouched:
Martin Geisler
purge: fix formatting of lists with proper reST markup
r9215
- Modified and unmodified tracked files
Valentin Gatien-Baron
purge: add -i flag to delete ignored files instead of untracked files...
r44771 - Ignored files (unless -i or --all is specified)
Martin Geisler
Use hg role in help strings
r10973 - New files added to the repository (with :hg:`add`)
Matt Mackall
purge: eliminate dopurge
r6573
Ben Kehoe
purge: add options for deleting only files or only directories
r21853 The --files and --dirs options can be used to direct purge to delete
only files, only directories, or both. If neither option is given,
both will be deleted.
Matt Mackall
purge: eliminate dopurge
r6573 If directories are given on the command line, only files in these
directories are considered.
Martin Geisler
purge: wrap docstrings at 70 characters
r9270 Be careful with purge, as you could irreversibly delete some files
you forgot to add to the repository. If you only want to print the
list of files that this program would delete, use the --print
option.
Matt Mackall
purge: eliminate dopurge
r6573 '''
Augie Fackler
purge: apply byteskwargs to opts, fixing all python3 issues here...
r36589 opts = pycompat.byteskwargs(opts)
Valentin Gatien-Baron
purge: add -i flag to delete ignored files instead of untracked files...
r44771 cmdutil.check_at_most_one_arg(opts, b'all', b'ignored')
Gregory Szorc
merge: move purge logic from extension...
r39499
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 act = not opts.get(b'print')
eol = b'\n'
if opts.get(b'print0'):
eol = b'\0'
Augie Fackler
formatting: blacken the codebase...
r43346 act = False # --print0 implies --print
Valentin Gatien-Baron
purge: add -i flag to delete ignored files instead of untracked files...
r44771 if opts.get(b'all', False):
ignored = True
unknown = True
else:
ignored = opts.get(b'ignored', False)
unknown = not ignored
Gregory Szorc
merge: move purge logic from extension...
r39499
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 removefiles = opts.get(b'files')
removedirs = opts.get(b'dirs')
Gregory Szorc
merge: move purge logic from extension...
r39499
Ben Kehoe
purge: add options for deleting only files or only directories
r21853 if not removefiles and not removedirs:
removefiles = True
removedirs = True
Emanuele Aina
Move back the purge extension in hgext
r4311
Gregory Szorc
merge: move purge logic from extension...
r39499 match = scmutil.match(repo[None], dirs, opts)
Emanuele Aina
Move back the purge extension in hgext
r4311
Gregory Szorc
merge: move purge logic from extension...
r39499 paths = mergemod.purge(
Augie Fackler
formatting: blacken the codebase...
r43346 repo,
match,
Valentin Gatien-Baron
purge: add -i flag to delete ignored files instead of untracked files...
r44771 unknown=unknown,
ignored=ignored,
Augie Fackler
formatting: blacken the codebase...
r43346 removeemptydirs=removedirs,
removefiles=removefiles,
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 abortonerror=opts.get(b'abort_on_err'),
Augie Fackler
formatting: blacken the codebase...
r43346 noop=not act,
)
Emanuele Aina
Move back the purge extension in hgext
r4311
Gregory Szorc
merge: move purge logic from extension...
r39499 for path in paths:
if not act:
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 ui.write(b'%s%s' % (path, eol))