dulwich.object_store module¶
Git object store interfaces and implementation.
- class dulwich.object_store.BaseObjectStore¶
Bases:
object
Object store interface.
- add_object(obj)¶
Add a single object to this object store.
- add_objects(objects, progress=None)¶
Add a set of objects to this object store.
- Parameters
objects – Iterable over a list of (object, path) tuples
- add_pack() Tuple[BytesIO, Callable[[], None], Callable[[], None]] ¶
Add a new pack to this object store.
- add_pack_data(count, pack_data, progress=None)¶
Add pack data to this object store.
- Parameters
count – Number of items to add
pack_data – Iterator over pack data tuples
- close()¶
Close any files opened by this object store.
- contains_loose(sha)¶
Check if a particular object is present by SHA1 and is loose.
- contains_packed(sha)¶
Check if a particular object is present by SHA1 and is packed.
- find_common_revisions(graphwalker)¶
Find which revisions this store has in common using graphwalker.
- Parameters
graphwalker – A graphwalker object.
Returns: List of SHAs that are in common
- find_missing_objects(haves, wants, shallow=None, progress=None, get_tagged=None, get_parents=<function BaseObjectStore.<lambda>>, depth=None)¶
Find the missing objects required for a set of revisions.
- Parameters
haves – Iterable over SHAs already in common.
wants – Iterable over SHAs of objects to fetch.
shallow – Set of shallow commit SHA1s to skip
progress – Simple progress function that will be called with updated progress strings.
get_tagged – Function that returns a dict of pointed-to sha -> tag sha for including tags.
get_parents – Optional function for getting the parents of a commit.
Returns: Iterator over (sha, path) pairs.
- generate_pack_contents(have, want, shallow=None, progress=None)¶
Iterate over the contents of a pack file.
- Parameters
have – List of SHA1s of objects that should not be sent
want – List of SHA1s of objects that should be sent
shallow – Set of shallow commit SHA1s to skip
progress – Optional progress reporting method
- generate_pack_data(have, want, shallow=None, progress=None, ofs_delta=True)¶
Generate pack data objects for a set of wants/haves.
- Parameters
have – List of SHA1s of objects that should not be sent
want – List of SHA1s of objects that should be sent
shallow – Set of shallow commit SHA1s to skip
ofs_delta – Whether OFS deltas can be included
progress – Optional progress reporting method
- get_raw(name)¶
Obtain the raw text for an object.
- Parameters
name – sha for the object.
Returns: tuple with numeric type and object contents.
- iter_shas(shas)¶
Iterate over the objects for the specified shas.
- Parameters
shas – Iterable object with SHAs
Returns: Object iterator
- iter_tree_contents(tree_id, include_trees=False)¶
Iterate the contents of a tree and all subtrees.
Iteration is depth-first pre-order, as in e.g. os.walk.
- Parameters
tree_id – SHA1 of the tree.
include_trees – If True, include tree objects in the iteration.
- Returns: Iterator over TreeEntry namedtuples for all the objects in a
tree.
- property packs¶
Iterable of pack objects.
- peel_sha(sha)¶
Peel all tags from a SHA.
- Parameters
sha – The object SHA to peel.
- Returns: The fully-peeled SHA1 of a tag object, after peeling all
intermediate tags; if the original ref does not point to a tag, this will equal the original SHA1.
- tree_changes(source, target, want_unchanged=False, include_trees=False, change_type_same=False, rename_detector=None)¶
Find the differences between the contents of two trees
- Parameters
source – SHA1 of the source tree
target – SHA1 of the target tree
want_unchanged – Whether unchanged files should be reported
include_trees – Whether to include trees
change_type_same – Whether to report files changing type in the same entry.
- Returns: Iterator over tuples with
(oldpath, newpath), (oldmode, newmode), (oldsha, newsha)
- class dulwich.object_store.BucketBasedObjectStore(pack_compression_level=-1)¶
Bases:
PackBasedObjectStore
Object store implementation that uses a bucket store like S3 as backend.
- add_pack()¶
Add a new pack to this object store.
- Returns: Fileobject to write to, a commit function to
call when the pack is finished and an abort function.
- class dulwich.object_store.DiskObjectStore(path, loose_compression_level=-1, pack_compression_level=-1)¶
Bases:
PackBasedObjectStore
Git-style object store that exists on disk.
Open an object store.
- Parameters
path – Path of the object store.
loose_compression_level – zlib compression level for loose objects
pack_compression_level – zlib compression level for pack objects
- add_alternate_path(path)¶
Add an alternate path to this object store.
- add_object(obj)¶
Add a single object to this object store.
- Parameters
obj – Object to add
- add_pack()¶
Add a new pack to this object store.
- Returns: Fileobject to write to, a commit function to
call when the pack is finished and an abort function.
- add_thin_pack(read_all, read_some)¶
Add a new thin pack to this object store.
Thin packs are packs that contain deltas with parents that exist outside the pack. They should never be placed in the object store directly, and always indexed and completed as they are copied.
- Parameters
read_all – Read function that blocks until the number of requested bytes are read.
read_some – Read function that returns at least one byte, but may not return the number of bytes requested.
- Returns: A Pack object pointing at the now-completed thin pack in the
objects/pack directory.
- property alternates¶
- classmethod from_config(path, config)¶
- classmethod init(path)¶
- move_in_pack(path)¶
Move a specific file containing a pack into the pack directory.
- Note: The file should be on the same file system as the
packs directory.
- Parameters
path – Path to the pack file.
- class dulwich.object_store.MemoryObjectStore¶
Bases:
BaseObjectStore
Object store that keeps all objects in memory.
- add_object(obj)¶
Add a single object to this object store.
- add_objects(objects, progress=None)¶
Add a set of objects to this object store.
- Parameters
objects – Iterable over a list of (object, path) tuples
- add_pack()¶
Add a new pack to this object store.
Because this object store doesn’t support packs, we extract and add the individual objects.
- Returns: Fileobject to write to and a commit function to
call when the pack is finished.
- add_thin_pack(read_all, read_some)¶
Add a new thin pack to this object store.
Thin packs are packs that contain deltas with parents that exist outside the pack. Because this object store doesn’t support packs, we extract and add the individual objects.
- Parameters
read_all – Read function that blocks until the number of requested bytes are read.
read_some – Read function that returns at least one byte, but may not return the number of bytes requested.
- contains_loose(sha)¶
Check if a particular object is present by SHA1 and is loose.
- contains_packed(sha)¶
Check if a particular object is present by SHA1 and is packed.
- get_raw(name: bytes)¶
Obtain the raw text for an object.
- Parameters
name – sha for the object.
Returns: tuple with numeric type and object contents.
- property packs¶
List with pack objects.
- class dulwich.object_store.MissingObjectFinder(object_store, haves, wants, shallow=None, progress=None, get_tagged=None, get_parents=<function MissingObjectFinder.<lambda>>)¶
Bases:
object
Find the objects missing from another object store.
- Parameters
object_store – Object store containing at least all objects to be sent
haves – SHA1s of commits not to send (already present in target)
wants – SHA1s of commits to send
progress – Optional function to report progress to.
get_tagged – Function that returns a dict of pointed-to sha -> tag sha for including tags.
get_parents – Optional function for getting the parents of a commit.
tagged – dict of pointed-to sha -> tag sha for including tags
- add_todo(entries)¶
- next()¶
- class dulwich.object_store.ObjectIterator¶
Bases:
object
Interface for iterating over objects.
- iterobjects()¶
- class dulwich.object_store.ObjectStoreGraphWalker(local_heads, get_parents, shallow=None)¶
Bases:
object
Graph walker that finds what commits are missing from an object store.
- heads¶
Revisions without descendants in the local repo
- get_parents¶
Function to retrieve parents in the local repo
Create a new instance.
- Parameters
local_heads – Heads to start search with
get_parents – Function for finding the parents of a SHA1.
- ack(sha)¶
Ack that a revision and its ancestors are present in the source.
- next()¶
Iterate over ancestors of heads in the target.
- class dulwich.object_store.ObjectStoreIterator(store, sha_iter)¶
Bases:
ObjectIterator
ObjectIterator that works on top of an ObjectStore.
Create a new ObjectIterator.
- Parameters
store – Object store to retrieve from
sha_iter – Iterator over (sha, path) tuples
- iterobjects()¶
Iterate over just the objects.
- itershas()¶
Iterate over the SHAs.
- class dulwich.object_store.OverlayObjectStore(bases, add_store=None)¶
Bases:
BaseObjectStore
Object store that can overlay multiple object stores.
- add_object(object)¶
Add a single object to this object store.
- add_objects(objects, progress=None)¶
Add a set of objects to this object store.
- Parameters
objects – Iterable over a list of (object, path) tuples
- contains_loose(sha)¶
Check if a particular object is present by SHA1 and is loose.
- contains_packed(sha)¶
Check if a particular object is present by SHA1 and is packed.
- get_raw(sha_id)¶
Obtain the raw text for an object.
- Parameters
name – sha for the object.
Returns: tuple with numeric type and object contents.
- property packs¶
Iterable of pack objects.
- class dulwich.object_store.PackBasedObjectStore(pack_compression_level=-1)¶
Bases:
BaseObjectStore
- add_objects(objects, progress=None)¶
Add a set of objects to this object store.
- Parameters
objects – Iterable over (object, path) tuples, should support __len__.
Returns: Pack object of the objects written.
- property alternates¶
- close()¶
Close any files opened by this object store.
- contains_loose(sha)¶
Check if a particular object is present by SHA1 and is loose.
This does not check alternates.
- contains_packed(sha)¶
Check if a particular object is present by SHA1 and is packed.
This does not check alternates.
- get_raw(name)¶
Obtain the raw fulltext for an object.
- Parameters
name – sha for the object.
Returns: tuple with numeric type and object contents.
- pack_loose_objects()¶
Pack loose objects.
Returns: Number of objects packed
- property packs¶
List with pack objects.
- repack()¶
Repack the packs in this repository.
Note that this implementation is fairly naive and currently keeps all objects in memory while it repacks.
- dulwich.object_store.commit_tree_changes(object_store, tree, changes)¶
Commit a specified set of changes to a tree structure.
This will apply a set of changes on top of an existing tree, storing new objects in object_store.
changes are a list of tuples with (path, mode, object_sha). Paths can be both blobs and trees. See the mode and object sha to None deletes the path.
This method works especially well if there are only a small number of changes to a big tree. For a large number of changes to a large tree, use e.g. commit_tree.
- Parameters
object_store – Object store to store new objects in and retrieve old ones from.
tree – Original tree root
changes – changes to apply
Returns: New tree root object
- dulwich.object_store.read_packs_file(f)¶
Yield the packs listed in a packs file.
- dulwich.object_store.tree_lookup_path(lookup_obj, root_sha, path)¶
Look up an object in a Git tree.
- Parameters
lookup_obj – Callback for retrieving object by SHA1
root_sha – SHA1 of the root tree
path – Path to lookup
Returns: A tuple of (mode, SHA) of the resulting path.