changeset 775:81e5e8e0185c

git_handler.save_remote_refs: use an atomic temp file to write This bug becomes obvious now that the code is structured like this.
author Siddharth Agarwal <sid0@fb.com>
date Wed, 03 Sep 2014 19:56:45 +0200
parents 9c6bd4102ef5
children b7eaa734e3b6
files hggit/git_handler.py
diffstat 1 files changed, 4 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/hggit/git_handler.py	Wed Sep 03 19:55:28 2014 +0200
+++ b/hggit/git_handler.py	Wed Sep 03 19:56:45 2014 +0200
@@ -207,10 +207,11 @@
             self._remote_refs.update([(name, bin(sha)) for sha, name in td])
 
     def save_remote_refs(self):
-        tf = open(self.repo.join(self.remote_refs_file), 'wb')
+        file = self.repo.opener(self.remote_refs_file, 'w+', atomictemp=True)
         for tag, node in self.remote_refs.iteritems():
-            tf.write('%s %s\n' % (hex(node), tag))
-        tf.close()
+            file.write('%s %s\n' % (hex(node), tag))
+        # If this complains, atomictempfile no longer has close
+        file.close()
 
     ## END FILE LOAD AND SAVE METHODS