mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 15:27:13 +03:00
Distinguish removed and deleted files. Tests are not fixed yet.
hg status will now show "R filename" for "hg rm"ed files and "! filename" for files which were deleted manually. Manually deleted files are considered unmodified.
This commit is contained in:
parent
f5ef5dad07
commit
c057b50e85
@ -21,7 +21,7 @@ def lookup_rev(ui, repo, rev=None):
|
||||
return parents.pop()
|
||||
|
||||
def check_clean(ui, repo):
|
||||
modified, added, removed, unknown = repo.changes()
|
||||
modified, added, removed, deleted, unknown = repo.changes()
|
||||
if modified or added or removed:
|
||||
ui.warn("Repository is not clean, please commit or revert\n")
|
||||
sys.exit(1)
|
||||
|
@ -15,7 +15,7 @@ def dodiff(fp, ui, repo, node1, node2, files=None, match=util.always,
|
||||
|
||||
if not changes:
|
||||
changes = repo.changes(node1, node2, files, match=match)
|
||||
modified, added, removed, unknown = changes
|
||||
modified, added, removed, deleted, unknown = changes
|
||||
if files:
|
||||
modified, added, removed = map(lambda x: filterfiles(x, files),
|
||||
(modified, added, removed))
|
||||
@ -67,12 +67,12 @@ def difftree(ui, repo, node1=None, node2=None, **opts):
|
||||
if node2:
|
||||
change = repo.changelog.read(node2)
|
||||
mmap2 = repo.manifest.read(change[0])
|
||||
modified, added, removed, unknown = repo.changes(node1, node2)
|
||||
modified, added, removed, deleted, unknown = repo.changes(node1, node2)
|
||||
def read(f): return repo.file(f).read(mmap2[f])
|
||||
date2 = date(change)
|
||||
else:
|
||||
date2 = time.asctime()
|
||||
modified, added, removed, unknown = repo.changes(node1)
|
||||
modified, added, removed, deleted, unknown = repo.changes(node1)
|
||||
if not node1:
|
||||
node1 = repo.dirstate.parents()[0]
|
||||
def read(f): return file(os.path.join(repo.root, f)).read()
|
||||
|
@ -264,7 +264,7 @@ def dodiff(fp, ui, repo, node1, node2, files=None, match=util.always,
|
||||
changes=None, text=False):
|
||||
if not changes:
|
||||
changes = repo.changes(node1, node2, files, match=match)
|
||||
modified, added, removed, unknown = changes
|
||||
modified, added, removed, deleted, unknown = changes
|
||||
if files:
|
||||
modified, added, removed = map(lambda x: filterfiles(x, files),
|
||||
(modified, added, removed))
|
||||
@ -785,10 +785,9 @@ def commit(ui, repo, *pats, **opts):
|
||||
addremove(ui, repo, *pats, **opts)
|
||||
fns, match, anypats, cwd = matchpats(repo, pats, opts)
|
||||
if pats:
|
||||
modified, added, removed, unknown = (
|
||||
modified, added, removed, deleted, unknown = (
|
||||
repo.changes(files=fns, match=match))
|
||||
files = (modified + added +
|
||||
[fn for fn in removed if repo.dirstate.state(fn) == 'r'])
|
||||
files = modified + added + removed
|
||||
else:
|
||||
files = []
|
||||
try:
|
||||
@ -1381,9 +1380,10 @@ def identify(ui, repo):
|
||||
return
|
||||
|
||||
hexfunc = ui.verbose and hex or short
|
||||
modified, added, removed, unknown = repo.changes()
|
||||
output = ["%s%s" % ('+'.join([hexfunc(parent) for parent in parents]),
|
||||
(modified or added or removed) and "+" or "")]
|
||||
modified, added, removed, deleted, unknown = repo.changes()
|
||||
output = ["%s%s" %
|
||||
('+'.join([hexfunc(parent) for parent in parents]),
|
||||
(modified or added or removed or deleted) and "+" or "")]
|
||||
|
||||
if not ui.quiet:
|
||||
# multiple tags for a single parent separated by '/'
|
||||
@ -1412,8 +1412,8 @@ def import_(ui, repo, patch1, *patches, **opts):
|
||||
patches = (patch1,) + patches
|
||||
|
||||
if not opts['force']:
|
||||
modified, added, removed, unknown = repo.changes()
|
||||
if modified or added or removed:
|
||||
modified, added, removed, deleted, unknown = repo.changes()
|
||||
if modified or added or removed or deleted:
|
||||
raise util.Abort(_("outstanding uncommitted changes"))
|
||||
|
||||
d = opts["base"]
|
||||
@ -1829,7 +1829,7 @@ def remove(ui, repo, pat, *pats, **opts):
|
||||
"""
|
||||
names = []
|
||||
def okaytoremove(abs, rel, exact):
|
||||
modified, added, removed, unknown = repo.changes(files=[abs])
|
||||
modified, added, removed, deleted, unknown = repo.changes(files=[abs])
|
||||
reason = None
|
||||
if modified:
|
||||
reason = _('is modified')
|
||||
@ -1893,9 +1893,9 @@ def revert(ui, repo, *pats, **opts):
|
||||
repo.dirstate.parents()[0]
|
||||
|
||||
files, choose, anypats, cwd = matchpats(repo, pats, opts)
|
||||
modified, added, removed, unknown = repo.changes(match=choose)
|
||||
modified, added, removed, deleted, unknown = repo.changes(match=choose)
|
||||
repo.forget(added)
|
||||
repo.undelete(removed)
|
||||
repo.undelete(removed + deleted)
|
||||
|
||||
return repo.update(node, False, True, choose, False)
|
||||
|
||||
@ -2022,17 +2022,19 @@ def status(ui, repo, *pats, **opts):
|
||||
M = modified
|
||||
A = added
|
||||
R = removed
|
||||
! = deleted, but still tracked
|
||||
? = not tracked
|
||||
"""
|
||||
|
||||
files, matchfn, anypats, cwd = matchpats(repo, pats, opts)
|
||||
modified, added, removed, unknown = [
|
||||
modified, added, removed, deleted, unknown = [
|
||||
[util.pathto(cwd, x) for x in n]
|
||||
for n in repo.changes(files=files, match=matchfn)]
|
||||
|
||||
changetypes = [(_('modified'), 'M', modified),
|
||||
(_('added'), 'A', added),
|
||||
(_('removed'), 'R', removed),
|
||||
(_('deleted'), '!', deleted),
|
||||
(_('unknown'), '?', unknown)]
|
||||
|
||||
end = opts['print0'] and '\0' or '\n'
|
||||
@ -2437,6 +2439,7 @@ table = {
|
||||
[('m', 'modified', None, _('show only modified files')),
|
||||
('a', 'added', None, _('show only added files')),
|
||||
('r', 'removed', None, _('show only removed files')),
|
||||
('d', 'deleted', None, _('show only deleted (but tracked) files')),
|
||||
('u', 'unknown', None, _('show only unknown (not tracked) files')),
|
||||
('n', 'no-status', None, _('hide status prefix')),
|
||||
('0', 'print0', None,
|
||||
|
@ -265,7 +265,7 @@ class hgweb(object):
|
||||
date1 = util.datestr(change1[2])
|
||||
date2 = util.datestr(change2[2])
|
||||
|
||||
modified, added, removed, unknown = r.changes(node1, node2)
|
||||
modified, added, removed, deleted, unknown = r.changes(node1, node2)
|
||||
if files:
|
||||
modified, added, removed = map(lambda x: filterfiles(x, files),
|
||||
(modified, added, removed))
|
||||
|
@ -355,7 +355,7 @@ class localrepository(object):
|
||||
else:
|
||||
self.ui.warn(_("%s not tracked!\n") % f)
|
||||
else:
|
||||
modified, added, removed, unknown = self.changes(match=match)
|
||||
modified, added, removed, deleted, unknown = self.changes(match=match)
|
||||
commit = modified + added
|
||||
remove = removed
|
||||
|
||||
@ -544,12 +544,10 @@ class localrepository(object):
|
||||
|
||||
removed = mf1.keys()
|
||||
|
||||
removed.extend(deleted) #XXX get rid of this when returning deleted
|
||||
|
||||
# sort and return results:
|
||||
for l in modified, added, removed, unknown:
|
||||
for l in modified, added, removed, deleted, unknown:
|
||||
l.sort()
|
||||
return (modified, added, removed, unknown)
|
||||
return (modified, added, removed, deleted, unknown)
|
||||
|
||||
def add(self, list):
|
||||
wlock = self.wlock()
|
||||
@ -1392,7 +1390,7 @@ class localrepository(object):
|
||||
ma = self.manifest.read(man)
|
||||
mfa = self.manifest.readflags(man)
|
||||
|
||||
modified, added, removed, unknown = self.changes()
|
||||
modified, added, removed, deleted, unknown = self.changes()
|
||||
|
||||
if allow and not forcemerge:
|
||||
if modified or added or removed:
|
||||
@ -1434,7 +1432,7 @@ class localrepository(object):
|
||||
if moddirstate:
|
||||
wlock = self.wlock()
|
||||
|
||||
for f in removed:
|
||||
for f in deleted:
|
||||
if f in mw:
|
||||
del mw[f]
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user