diff --git a/hgext/lfs/__init__.py b/hgext/lfs/__init__.py
index d624c8558c6156d92f046b0151973d2ca74262ba_aGdleHQvbGZzL19faW5pdF9fLnB5..488634db5928282dd0ae665f26a46d1eda049dd9_aGdleHQvbGZzL19faW5pdF9fLnB5 100644
--- a/hgext/lfs/__init__.py
+++ b/hgext/lfs/__init__.py
@@ -124,7 +124,7 @@
             if 'lfs' not in repo.requirements:
                 ctx = repo[kwargs['node']]
                 # TODO: is there a way to just walk the files in the commit?
-                if any(ctx[f].islfs() for f in ctx.files()):
+                if any(ctx[f].islfs() for f in ctx.files() if f in ctx):
                     repo.requirements.add('lfs')
                     repo._writerequirements()
 
diff --git a/tests/test-lfs.t b/tests/test-lfs.t
index d624c8558c6156d92f046b0151973d2ca74262ba_dGVzdHMvdGVzdC1sZnMudA==..488634db5928282dd0ae665f26a46d1eda049dd9_dGVzdHMvdGVzdC1sZnMudA== 100644
--- a/tests/test-lfs.t
+++ b/tests/test-lfs.t
@@ -680,3 +680,12 @@
 
   $ hg -R convert_lfs2 config --debug extensions | grep lfs
   $TESTTMP/convert_lfs2/.hg/hgrc:*: extensions.lfs= (glob)
+
+Committing deleted files works:
+
+  $ hg init $TESTTMP/repo-del
+  $ cd $TESTTMP/repo-del
+  $ echo 1 > A
+  $ hg commit -m 'add A' -A A
+  $ hg rm A
+  $ hg commit -m 'rm A'