Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/revlog.py @ 27431:8f016345e6b0
merge with stable
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Fri, 18 Dec 2015 14:40:11 -0600 |
parents | 29f50344fa83 e240e914d226 |
children | 12f727a5b434 |
comparison
equal
deleted
inserted
replaced
27429:2e31a17ad1bf | 27431:8f016345e6b0 |
---|---|
13 | 13 |
14 from __future__ import absolute_import | 14 from __future__ import absolute_import |
15 | 15 |
16 import collections | 16 import collections |
17 import errno | 17 import errno |
18 import os | |
18 import struct | 19 import struct |
19 import zlib | 20 import zlib |
20 | 21 |
21 # import stuff from node for others to import from revlog | 22 # import stuff from node for others to import from revlog |
22 from .node import ( | 23 from .node import ( |
1493 self._cache = (node, curr, text) | 1494 self._cache = (node, curr, text) |
1494 self._basecache = (curr, chainbase) | 1495 self._basecache = (curr, chainbase) |
1495 return node | 1496 return node |
1496 | 1497 |
1497 def _writeentry(self, transaction, ifh, dfh, entry, data, link, offset): | 1498 def _writeentry(self, transaction, ifh, dfh, entry, data, link, offset): |
1499 # Files opened in a+ mode have inconsistent behavior on various | |
1500 # platforms. Windows requires that a file positioning call be made | |
1501 # when the file handle transitions between reads and writes. See | |
1502 # 3686fa2b8eee and the mixedfilemodewrapper in windows.py. On other | |
1503 # platforms, Python or the platform itself can be buggy. Some versions | |
1504 # of Solaris have been observed to not append at the end of the file | |
1505 # if the file was seeked to before the end. See issue4943 for more. | |
1506 # | |
1507 # We work around this issue by inserting a seek() before writing. | |
1508 # Note: This is likely not necessary on Python 3. | |
1509 ifh.seek(0, os.SEEK_END) | |
1510 if dfh: | |
1511 dfh.seek(0, os.SEEK_END) | |
1512 | |
1498 curr = len(self) - 1 | 1513 curr = len(self) - 1 |
1499 if not self._inline: | 1514 if not self._inline: |
1500 transaction.add(self.datafile, offset) | 1515 transaction.add(self.datafile, offset) |
1501 transaction.add(self.indexfile, curr * len(entry)) | 1516 transaction.add(self.indexfile, curr * len(entry)) |
1502 if data[0]: | 1517 if data[0]: |