# HG changeset patch # User Pierre-Yves David # Date 1413604422 25200 # Node ID 197e17be540715c6bc94e1c360d0a421a63d4e7f # Parent fc3670f41d3ed9f431fd15f07645325d6d6f6bac transaction: use 'location' instead of 'vfs' objects for file generation The argument is now a location name. The location must be present in the 'vfsmap' provided to the transaction at creation time. diff -r fc3670f41d3e -r 197e17be5407 mercurial/bookmarks.py --- a/mercurial/bookmarks.py Wed Nov 05 01:59:32 2014 +0000 +++ b/mercurial/bookmarks.py Fri Oct 17 20:53:42 2014 -0700 @@ -52,7 +52,7 @@ The transaction is then responsible for updating the file content.""" tr.addfilegenerator('bookmarks', ('bookmarks',), self._write, - vfs=self._repo.vfs) + location='plain') tr.hookargs['bookmark_moved'] = '1' def write(self): diff -r fc3670f41d3e -r 197e17be5407 mercurial/transaction.py --- a/mercurial/transaction.py Wed Nov 05 01:59:32 2014 +0000 +++ b/mercurial/transaction.py Fri Oct 17 20:53:42 2014 -0700 @@ -234,7 +234,8 @@ self._addbackupentry(('', '', tmpfile, False)) @active - def addfilegenerator(self, genid, filenames, genfunc, order=0, vfs=None): + def addfilegenerator(self, genid, filenames, genfunc, order=0, + location=''): """add a function to generates some files at transaction commit The `genfunc` argument is a function capable of generating proper @@ -252,18 +253,20 @@ The `order` argument may be used to control the order in which multiple generator will be executed. + + The `location` arguments may be used to indicate the files are located + outside of the the standard directory for transaction. It should match + one of the key of the `transaction.vfsmap` dictionnary. """ # For now, we are unable to do proper backup and restore of custom vfs # but for bookmarks that are handled outside this mechanism. - assert vfs is None or filenames == ('bookmarks',) - self._filegenerators[genid] = (order, filenames, genfunc, vfs) + self._filegenerators[genid] = (order, filenames, genfunc, location) def _generatefiles(self): # write files registered for generation for entry in sorted(self._filegenerators.values()): - order, filenames, genfunc, vfs = entry - if vfs is None: - vfs = self.opener + order, filenames, genfunc, location = entry + vfs = self._vfsmap[location] files = [] try: for name in filenames: @@ -271,7 +274,7 @@ # localrepo. Until this is properly fixed we disable the # backup for them. if name not in ('phaseroots', 'bookmarks'): - self.addbackup(name) + self.addbackup(name, location=location) files.append(vfs(name, 'w', atomictemp=True)) genfunc(*files) finally: