- if adate_tz:
- adate_str = _git_date_str(adate_sec, adate_tz)
- else:
- adate_str = _local_git_date_str(adate_sec)
- if cdate_tz:
- cdate_str = _git_date_str(cdate_sec, cdate_tz)
- else:
- cdate_str = _local_git_date_str(cdate_sec)
- l = []
- if tree: l.append('tree %s' % tree.encode('hex'))
- if parent: l.append('parent %s' % parent.encode('hex'))
- if author: l.append('author %s %s' % (author, adate_str))
- if committer: l.append('committer %s %s' % (committer, cdate_str))
- l.append('')
- l.append(msg)
- return self.maybe_write('commit', '\n'.join(l))
-
- def abort(self):
- """Remove the pack file from disk."""
- f = self.file
- if f:
- pfd = self.parentfd
- self.file = None
- self.parentfd = None
- self.idx = None
- try:
- try:
- os.unlink(self.filename + '.pack')
- finally:
- f.close()
- finally:
- if pfd is not None:
- os.close(pfd)
-
- def _end(self, run_midx=True):
- f = self.file
- if not f: return None
- self.file = None
- try:
- self.objcache = None
- idx = self.idx
- self.idx = None
-
- # update object count
- f.seek(8)
- cp = struct.pack('!i', self.count)
- assert(len(cp) == 4)
- f.write(cp)
-
- # calculate the pack sha1sum
- f.seek(0)
- sum = Sha1()
- for b in chunkyreader(f):
- sum.update(b)
- packbin = sum.digest()
- f.write(packbin)
- fdatasync(f.fileno())
- finally:
- f.close()
-
- obj_list_sha = self._write_pack_idx_v2(self.filename + '.idx', idx, packbin)
- nameprefix = os.path.join(self.repo_dir,
- 'objects/pack/pack-' + obj_list_sha)
- if os.path.exists(self.filename + '.map'):
- os.unlink(self.filename + '.map')
- os.rename(self.filename + '.pack', nameprefix + '.pack')
- os.rename(self.filename + '.idx', nameprefix + '.idx')
+ content = create_commit_blob(tree, parent,
+ author, adate_sec, adate_tz,
+ committer, cdate_sec, cdate_tz,
+ msg)
+ return self.maybe_write(b'commit', content)
+
+ def _end(self, run_midx=True, abort=False):
+ # Ignores run_midx during abort
+ self.tmpdir, tmpdir = None, self.tmpdir
+ self.parentfd, pfd, = None, self.parentfd
+ self.file, f = None, self.file
+ self.idx, idx = None, self.idx