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_data
(count, pack_data, progress=None)¶ Add pack data to this object store.
- Parameters
num_items – 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.
-
determine_wants_all
(refs)¶
-
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, 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.
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, 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
progress – Optional progress reporting method
-
generate_pack_data
(have, want, 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
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)¶ 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.
DiskObjectStore
(path)¶ Bases:
dulwich.object_store.PackBasedObjectStore
Git-style object store that exists on disk.
Open an object store.
- Parameters
path – Path of the object store.
-
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
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:
dulwich.object_store.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)¶ 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, 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.
- Variables
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:
dulwich.object_store.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
-
empty
()¶
-
iterobjects
()¶ Iterate over just the objects.
-
itershas
()¶ Iterate over the SHAs.
-
class
dulwich.object_store.
OverlayObjectStore
(bases, add_store=None)¶ Bases:
dulwich.object_store.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
¶ Bases:
dulwich.object_store.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.