status: clean up all users for unknown files
authorMatt Mackall <mpm@selenic.com>
Fri, 27 Jun 2008 13:43:29 -0500
changeset 6760 4faaa0535ea7
parent 6759 9d2ab50803e9
child 6761 cb981fc955fb
status: clean up all users for unknown files
hgext/extdiff.py
hgext/gpg.py
hgext/hgk.py
hgext/keyword.py
hgext/mq.py
hgext/record.py
mercurial/cmdutil.py
mercurial/commands.py
mercurial/context.py
mercurial/localrepo.py
mercurial/patch.py
--- a/hgext/extdiff.py	Thu Jun 26 18:49:45 2008 -0500
+++ b/hgext/extdiff.py	Fri Jun 27 13:43:29 2008 -0500
@@ -122,8 +122,7 @@
     '''
     node1, node2 = cmdutil.revpair(repo, opts['rev'])
     matcher = cmdutil.match(repo, pats, opts)
-    modified, added, removed, deleted, unknown = repo.status(
-        node1, node2, matcher)[:5]
+    modified, added, removed = repo.status(node1, node2, matcher)[:3]
     if not (modified or added or removed):
         return 0
 
--- a/hgext/gpg.py	Thu Jun 26 18:49:45 2008 -0500
+++ b/hgext/gpg.py	Fri Jun 27 13:43:29 2008 -0500
@@ -239,7 +239,7 @@
         repo.opener("localsigs", "ab").write(sigmessage)
         return
 
-    for x in repo.status()[:5]:
+    for x in repo.status(unknown=True)[:5]:
         if ".hgsigs" in x and not opts["force"]:
             raise util.Abort(_("working copy of .hgsigs is changed "
                                "(please commit .hgsigs manually "
--- a/hgext/hgk.py	Thu Jun 26 18:49:45 2008 -0500
+++ b/hgext/hgk.py	Fri Jun 27 13:43:29 2008 -0500
@@ -55,9 +55,7 @@
         mmap = repo[node1].manifest()
         mmap2 = repo[node2].manifest()
         m = cmdutil.match(repo, files)
-        status = repo.status(node1, node2, match=m)[:5]
-        modified, added, removed, deleted, unknown = status
-
+        modified, added, removed  = repo.status(node1, node2, m)[:3]
         empty = short(nullid)
 
         for f in modified:
--- a/hgext/keyword.py	Thu Jun 26 18:49:45 2008 -0500
+++ b/hgext/keyword.py	Fri Jun 27 13:43:29 2008 -0500
@@ -253,12 +253,12 @@
             return t2 != text
         return revlog.revlog.cmp(self, node, text)
 
-def _status(ui, repo, kwt, *pats, **opts):
+def _status(ui, repo, kwt, unknown, *pats, **opts):
     '''Bails out if [keyword] configuration is not active.
     Returns status of working directory.'''
     if kwt:
         matcher = cmdutil.match(repo, pats, opts)
-        return repo.status(match=matcher, clean=True)
+        return repo.status(match=matcher, unknown=unknown, clean=True)
     if ui.configitems('keyword'):
         raise util.Abort(_('[keyword] patterns cannot match'))
     raise util.Abort(_('no [keyword] patterns configured'))
@@ -268,15 +268,15 @@
     if repo.dirstate.parents()[1] != nullid:
         raise util.Abort(_('outstanding uncommitted merge'))
     kwt = kwtools['templater']
-    status = _status(ui, repo, kwt, *pats, **opts)
-    modified, added, removed, deleted, unknown, ignored, clean = status
+    status = _status(ui, repo, kwt, False, *pats, **opts)
+    modified, added, removed, deleted = status[:4]
     if modified or added or removed or deleted:
         raise util.Abort(_('outstanding uncommitted changes'))
     wlock = lock = None
     try:
         wlock = repo.wlock()
         lock = repo.lock()
-        kwt.overwrite(None, expand, clean)
+        kwt.overwrite(None, expand, status[6])
     finally:
         del wlock, lock
 
@@ -380,11 +380,9 @@
     That is, files matched by [keyword] config patterns but not symlinks.
     '''
     kwt = kwtools['templater']
-    status = _status(ui, repo, kwt, *pats, **opts)
+    status = _status(ui, repo, kwt, opts.get('untracked'), *pats, **opts)
     modified, added, removed, deleted, unknown, ignored, clean = status
-    files = modified + added + clean
-    if opts.get('untracked'):
-        files += unknown
+    files = modified + added + clean + unknown
     files.sort()
     wctx = repo[None]
     kwfiles = [f for f in files if kwt.iskwfile(f, wctx.flags)]
--- a/hgext/mq.py	Thu Jun 26 18:49:45 2008 -0500
+++ b/hgext/mq.py	Fri Jun 27 13:43:29 2008 -0500
@@ -852,7 +852,7 @@
                 self.ui.warn(_('cleaning up working directory...'))
                 node = repo.dirstate.parents()[0]
                 hg.revert(repo, node, None)
-                unknown = repo.status()[4]
+                unknown = repo.status(unknown=True)[4]
                 # only remove unknown files that we know we touched or
                 # created while patching
                 for f in unknown:
@@ -933,7 +933,7 @@
                 qp = self.qparents(repo, rev)
                 changes = repo.changelog.read(qp)
                 mmap = repo.manifest.read(changes[0])
-                m, a, r, d, u = repo.status(qp, top)[:5]
+                m, a, r, d = repo.status(qp, top)[:4]
                 if d:
                     raise util.Abort("deletions found between repo revs")
                 for f in m:
@@ -1066,11 +1066,11 @@
                 # patch already
                 #
                 # this should really read:
-                #   mm, dd, aa, aa2, uu = repo.status(tip, patchparent)[:5]
+                #   mm, dd, aa, aa2 = repo.status(tip, patchparent)[:4]
                 # but we do it backwards to take advantage of manifest/chlog
                 # caching against the next repo.status call
                 #
-                mm, aa, dd, aa2, uu = repo.status(patchparent, tip)[:5]
+                mm, aa, dd, aa2 = repo.status(patchparent, tip)[:4]
                 changes = repo.changelog.read(tip)
                 man = repo.manifest.read(changes[0])
                 aaa = aa[:]
@@ -1078,7 +1078,7 @@
                     match = cmdutil.matchfiles(repo, mm + aa + dd)
                 else:
                     match = cmdutil.matchall(repo)
-                m, a, r, d, u = repo.status(match=match)[:5]
+                m, a, r, d = repo.status(match=match)[:4]
 
                 # we might end up with files that were added between
                 # tip and the dirstate parent, but then changed in the
@@ -1111,7 +1111,7 @@
                 m = util.unique(mm)
                 r = util.unique(dd)
                 a = util.unique(aa)
-                c = [filter(matchfn, l) for l in (m, a, r, [], u)]
+                c = [filter(matchfn, l) for l in (m, a, r)]
                 match = cmdutil.matchfiles(repo, util.unique(c[0] + c[1] + c[2]))
                 patch.diff(repo, patchparent, match=match,
                            fp=patchf, changes=c, opts=self.diffopts())
--- a/hgext/record.py	Thu Jun 26 18:49:45 2008 -0500
+++ b/hgext/record.py	Fri Jun 27 13:43:29 2008 -0500
@@ -405,8 +405,8 @@
         if match.files():
             changes = None
         else:
-            changes = repo.status(match=match)[:5]
-            modified, added, removed = changes[:3]
+            changes = repo.status(match=match)[:3]
+            modified, added, removed = changes
             match = cmdutil.matchfiles(repo, modified + added + removed)
         diffopts = mdiff.diffopts(git=True, nodates=True)
         fp = cStringIO.StringIO()
@@ -431,7 +431,7 @@
 
         if changes is None:
             match = cmdutil.matchfiles(repo, newfiles)
-            changes = repo.status(match=match)[:5]
+            changes = repo.status(match=match)
         modified = dict.fromkeys(changes[0])
 
         # 2. backup changed files, so we can restore them in the end
--- a/mercurial/cmdutil.py	Thu Jun 26 18:49:45 2008 -0500
+++ b/mercurial/cmdutil.py	Fri Jun 27 13:43:29 2008 -0500
@@ -1158,8 +1158,7 @@
 
     m = match(repo, pats, opts)
     if pats:
-        status = repo.status(match=m)
-        modified, added, removed, deleted, unknown = status[:5]
+        modified, added, removed = repo.status(match=m)[:3]
         files = modified + added + removed
         slist = None
         for f in m.files():
--- a/mercurial/commands.py	Thu Jun 26 18:49:45 2008 -0500
+++ b/mercurial/commands.py	Fri Jun 27 13:43:29 2008 -0500
@@ -2197,7 +2197,7 @@
         raise util.Abort(_('no files specified'))
 
     m = cmdutil.match(repo, pats, opts)
-    mardu = map(dict.fromkeys, repo.status(match=m))[:5]
+    mardu = map(dict.fromkeys, repo.status(match=m, unknown=True))[:5]
     modified, added, removed, deleted, unknown = mardu
 
     remove, forget = [], []
--- a/mercurial/context.py	Thu Jun 26 18:49:45 2008 -0500
+++ b/mercurial/context.py	Fri Jun 27 13:43:29 2008 -0500
@@ -488,7 +488,7 @@
 
     def __getattr__(self, name):
         if name == '_status':
-            self._status = self._repo.status()
+            self._status = self._repo.status(unknown=True)
             return self._status
         if name == '_manifest':
             self._buildmanifest()
--- a/mercurial/localrepo.py	Thu Jun 26 18:49:45 2008 -0500
+++ b/mercurial/localrepo.py	Fri Jun 27 13:43:29 2008 -0500
@@ -972,7 +972,7 @@
                 yield fn
 
     def status(self, node1=None, node2=None, match=None,
-               ignored=False, clean=False, unknown=True):
+               ignored=False, clean=False, unknown=False):
         """return status of files between two nodes or node and working directory
 
         If node1 is None, use the first dirstate parent instead.
--- a/mercurial/patch.py	Thu Jun 26 18:49:45 2008 -0500
+++ b/mercurial/patch.py	Fri Jun 27 13:43:29 2008 -0500
@@ -1189,8 +1189,8 @@
     date1 = util.datestr(ctx1.date())
 
     if not changes:
-        changes = repo.status(node1, node2, match=match)[:5]
-    modified, added, removed, deleted, unknown = changes
+        changes = repo.status(node1, node2, match=match)
+    modified, added, removed = changes[:3]
 
     if not modified and not added and not removed:
         return