diff --git a/mercurial/transaction.py b/mercurial/transaction.py
index 16da812ad970f55a003734e57b548f34a5a4b6b9_bWVyY3VyaWFsL3RyYW5zYWN0aW9uLnB5..29bfa964d6d8a5341c533932a73b283b517fbef2_bWVyY3VyaWFsL3RyYW5zYWN0aW9uLnB5 100644
--- a/mercurial/transaction.py
+++ b/mercurial/transaction.py
@@ -266,5 +266,4 @@
     @active
     def close(self):
         '''commit the transaction'''
-        self._generatefiles()
         if self.count == 1 and self.onclose is not None:
@@ -270,4 +269,5 @@
         if self.count == 1 and self.onclose is not None:
+            self._generatefiles()
             self.onclose()
 
         self.count -= 1