Mercurial > hg
changeset 7400:409a9b442308
mq: use atomictempfiles during patch refresh
author | Brendan Cully <brendan@kublai.com> |
---|---|
date | Sun, 23 Nov 2008 16:07:47 -0800 |
parents | e71bda2d2087 |
children | 41e87b4d0c9d |
files | hgext/mq.py |
diffstat | 1 files changed, 6 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/mq.py Sat Nov 22 14:04:42 2008 -0800 +++ b/hgext/mq.py Sun Nov 23 16:07:47 2008 -0800 @@ -1093,7 +1093,7 @@ patchparent = self.qparents(repo, top) ph = self.readheaders(patchfn) - patchf = self.opener(patchfn, 'r+') + patchf = self.opener(patchfn, 'r') # if the patch was a git patch, refresh it as a git patch for line in patchf: @@ -1108,6 +1108,9 @@ if newdate: ph.setdate(newdate) + # only commit new patch when write is complete + patchf = self.opener(patchfn, 'w', atomictemp=True) + patchf.seek(0) patchf.truncate() @@ -1185,7 +1188,7 @@ changes=c, opts=self.diffopts()) for chunk in chunks: patchf.write(chunk) - patchf.close() + patchf.rename() repo.dirstate.setparents(*cparents) copies = {} @@ -1246,7 +1249,7 @@ self.removeundo(repo) else: self.printdiff(repo, patchparent, fp=patchf) - patchf.close() + patchf.rename() added = repo.status()[1] for a in added: f = repo.wjoin(a)