On Thu, Jun 15, 2017 at 2:32 AM, Pulkit Goyal <7895pul...@gmail.com> wrote: > # HG changeset patch > # User Pulkit Goyal <7895pul...@gmail.com> > # Date 1497462524 -19800 > # Wed Jun 14 23:18:44 2017 +0530 > # Node ID 622220c3eb0a6ae2f0e7dfc94ac103ad4bfc53aa > # Parent f12a51d828c6bac3ed7683bd07f7d04232727da5 > cmdutil: add a function to terse the status > > This function will be used to terse the output of `hg status`. It collapses a > directory if all the files (except ignored) shares the same status and > consider > ignored ones when ignore is passed through either terse or normally. A further > patch will add tests which will make things clearer. > > diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py > --- a/mercurial/cmdutil.py > +++ b/mercurial/cmdutil.py > @@ -402,6 +402,115 @@ > > return commit(ui, repo, recordinwlock, pats, opts) > > +def tersestatus(repo, statlist, status, ignore): > + """ > + Returns a list of statuses with directory collapsed if all the files in > the > + directory has the same status. > + """ > + > + def numfiles(dirname): > + """ > + Calculates the number of tracked files in a given directory which > also > + includes files which were removed or deleted. Considers ignored files > + if ignore argument is True or 'i' is present in status argument. > + """ > + if 'i' in status or ignore: > + def match(fname): > + return False > + else: > + match = repo.dirstate._ignore > + lendir = 0 > + abspath = repo.root + pycompat.ossep + dirname > + for f in os.listdir(abspath):
While testing more, I found that this can raise OSError if the abspath is a directory which is removed or deleted. I will include that in a v2 if required or else do a followup. _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel