Mercurial > public > mercurial-scm > hg-stable
diff mercurial/dirstate.py @ 31217:1ef37b16b8e8
dirstate: try to use hardlink to backup dirstate
This should be more efficient once util.copyfile has real hardlink support.
author | Jun Wu <quark@fb.com> |
---|---|
date | Wed, 01 Mar 2017 17:59:21 -0800 |
parents | 49e5491ed9bd |
children | fc57a8b95f1b |
line wrap: on
line diff
--- a/mercurial/dirstate.py Sun Mar 05 16:20:07 2017 -0800 +++ b/mercurial/dirstate.py Wed Mar 01 17:59:21 2017 -0800 @@ -1235,8 +1235,14 @@ # end of this transaction tr.registertmp(filename, location='plain') - self._opener.write(prefix + self._filename + suffix, - self._opener.tryread(filename)) + backupname = prefix + self._filename + suffix + assert backupname != filename + if self._opener.exists(backupname): + self._opener.unlink(backupname) + # hardlink backup is okay because _writedirstate is always called + # with an "atomictemp=True" file. + util.copyfile(self._opener.join(filename), + self._opener.join(backupname), hardlink=True) def restorebackup(self, tr, suffix='', prefix=''): '''Restore dirstate by backup file with suffix'''