diff --git a/mercurial/fileset.py b/mercurial/fileset.py --- a/mercurial/fileset.py +++ b/mercurial/fileset.py @@ -464,9 +464,10 @@ def copied(mctx, x): getargs(x, 0, 0, _("copied takes no arguments")) s = [] for f in mctx.subset: - p = mctx.ctx[f].parents() - if p and p[0].path() != f: - s.append(f) + if f in mctx.ctx: + p = mctx.ctx[f].parents() + if p and p[0].path() != f: + s.append(f) return s @predicate('revs(revs, pattern)') diff --git a/tests/test-fileset.t b/tests/test-fileset.t --- a/tests/test-fileset.t +++ b/tests/test-fileset.t @@ -249,6 +249,8 @@ Test files properties Test merge states $ hg ci -m manychanges + $ hg file -r . 'set:copied() & modified()' + [1] $ hg up -C 0 * files updated, 0 files merged, * files removed, 0 files unresolved (glob) $ echo c >> b2