#!/usr/bin/env python
import sys, stat, time, math
+from cStringIO import StringIO
from bup import hashsplit, git, options, index, client, metadata, hlinkdb
from bup.helpers import *
from bup.hashsplit import GIT_MODE_TREE, GIT_MODE_FILE, GIT_MODE_SYMLINK
metalist = [('', dir_metadata)] + metalist[1:]
sorted_metalist = sorted(metalist, key = lambda x : x[0])
metadata = ''.join([m[1].encode() for m in sorted_metalist])
- shalist.append((0100644, '.bupm', w.new_blob(metadata)))
+ metadata_f = StringIO(metadata)
+ mode, id = hashsplit.split_to_blob_or_tree(w.new_blob, w.new_tree,
+ [metadata_f],
+ keep_boundaries=False)
+ shalist.append((mode, '.bupm', id))
tree = force_tree or w.new_tree(shalist)
if shalists:
shalists[-1].append((GIT_MODE_TREE,
import os, re, stat, time
from bup import git, metadata
from helpers import *
+from bup.git import BUP_NORMAL, BUP_CHUNKED
from bup.hashsplit import GIT_MODE_TREE, GIT_MODE_FILE
EMPTY_SHA='\0'*20
assert(type == 'tree')
for (mode,mangled_name,sha) in git.tree_decode(''.join(it)):
if mangled_name == '.bupm':
- self._bupm = File(self, mangled_name, mode, sha, git.BUP_NORMAL)
+ bupmode = stat.S_ISDIR(mode) and BUP_CHUNKED or BUP_NORMAL
+ self._bupm = File(self, mangled_name, GIT_MODE_FILE, sha,
+ bupmode)
continue
name = mangled_name
(name,bupmode) = git.demangle_name(mangled_name)