dulwich.repo module¶
Repository access.
This module contains the base class for git repositories (BaseRepo) and an implementation which uses a repository on local disk (Repo).
-
class
dulwich.repo.
BaseRepo
(object_store, refs)¶ Bases:
object
Base class for a git repository.
Variables: - object_store – Dictionary-like object for accessing the objects
- refs – Dictionary-like object with the refs in this repository
Open a repository.
This shouldn’t be called directly, but rather through one of the base classes, such as MemoryRepo or Repo.
Parameters: - object_store – Object store to use
- refs – Refs container to use
-
do_commit
(message=None, committer=None, author=None, commit_timestamp=None, commit_timezone=None, author_timestamp=None, author_timezone=None, tree=None, encoding=None, ref='HEAD', merge_heads=None)¶ Create a new commit.
Parameters: - message – Commit message
- committer – Committer fullname
- author – Author fullname (defaults to committer)
- commit_timestamp – Commit timestamp (defaults to now)
- commit_timezone – Commit timestamp timezone (defaults to GMT)
- author_timestamp – Author timestamp (defaults to commit timestamp)
- author_timezone – Author timestamp timezone (defaults to commit timestamp timezone)
- tree – SHA1 of the tree root to use (if not specified the current index will be committed).
- encoding – Encoding
- ref – Optional ref to commit to (defaults to current branch)
- merge_heads – Merge heads (defaults to .git/MERGE_HEADS)
Returns: New commit SHA1
-
fetch
(target, determine_wants=None, progress=None, depth=None)¶ Fetch objects into another repository.
Parameters: - target – The target repository
- determine_wants – Optional function to determine what refs to fetch.
- progress – Optional progress function
- depth – Optional shallow fetch depth
Returns: The local refs
-
fetch_objects
(determine_wants, graph_walker, progress, get_tagged=None, depth=None)¶ Fetch the missing objects required for a set of revisions.
Parameters: - determine_wants – Function that takes a dictionary with heads and returns the list of heads to fetch.
- graph_walker – Object that can iterate over the list of revisions to fetch and has an “ack” method that will be called to acknowledge that a revision is present.
- 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.
- depth – Shallow fetch depth
Returns: iterator over objects, with __len__ implemented
-
fetch_pack_data
(determine_wants, graph_walker, progress, get_tagged=None, depth=None)¶ Fetch the pack data required for a set of revisions.
Parameters: - determine_wants – Function that takes a dictionary with heads and returns the list of heads to fetch.
- graph_walker – Object that can iterate over the list of revisions to fetch and has an “ack” method that will be called to acknowledge that a revision is present.
- 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.
- depth – Shallow fetch depth
Returns: count and iterator over pack data
-
get_config
()¶ Retrieve the config object.
Returns: ConfigFile object for the .git/config
file.
-
get_config_stack
()¶ Return a config stack for this repository.
This stack accesses the configuration for both this repository itself (.git/config) and the global configuration, which usually lives in ~/.gitconfig.
Returns: Config instance for this repository
-
get_description
()¶ Retrieve the description for this repository.
Returns: String with the description of the repository as set by the user.
-
get_graph_walker
(heads=None)¶ Retrieve a graph walker.
A graph walker is used by a remote repository (or proxy) to find out which objects are present in this repository.
Parameters: heads – Repository heads to use (optional) Returns: A graph walker object
-
get_named_file
(path)¶ Get a file from the control dir with a specific name.
Although the filename should be interpreted as a filename relative to the control dir in a disk-based Repo, the object returned need not be pointing to a file in that location.
Parameters: path – The path to the file, relative to the control dir. Returns: An open file object, or None if the file does not exist.
-
get_object
(sha)¶ Retrieve the object with the specified SHA.
Parameters: sha – SHA to retrieve Returns: A ShaFile object Raises: KeyError – when the object can not be found
-
get_parents
(sha, commit=None)¶ Retrieve the parents of a specific commit.
If the specific commit is a graftpoint, the graft parents will be returned instead.
Parameters: - sha – SHA of the commit for which to retrieve the parents
- commit – Optional commit matching the sha
Returns: List of parents
-
get_peeled
(ref)¶ Get the peeled value of a ref.
Parameters: ref – The refname 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.
-
get_refs
()¶ Get dictionary with all refs.
Returns: A dict
mapping ref names to SHA1s
-
get_shallow
()¶ Get the set of shallow commits.
Returns: Set of shallow commits.
-
get_walker
(include=None, *args, **kwargs)¶ Obtain a walker for this repository.
Parameters: - include – Iterable of SHAs of commits to include along with their ancestors. Defaults to [HEAD]
- exclude – Iterable of SHAs of commits to exclude along with their ancestors, overriding includes.
- order – ORDER_* constant specifying the order of results. Anything other than ORDER_DATE may result in O(n) memory usage.
- reverse – If True, reverse the order of output, requiring O(n) memory.
- max_entries – The maximum number of entries to yield, or None for no limit.
- paths – Iterable of file or subtree paths to show entries for.
- rename_detector – diff.RenameDetector object for detecting renames.
- follow – If True, follow path across renames/copies. Forces a default rename_detector.
- since – Timestamp to list commits after.
- until – Timestamp to list commits before.
- queue_cls – A class to use for a queue of commits, supporting the iterator protocol. The constructor takes a single argument, the Walker.
Returns: A Walker object
-
head
()¶ Return the SHA1 pointed at by HEAD.
-
open_index
()¶ Open the index for this repository.
Raises: NoIndexPresent – If no index is present Returns: The matching Index
-
set_description
(description)¶ Set the description for this repository.
Parameters: description – Text to set as description for this repository.
-
update_shallow
(new_shallow, new_unshallow)¶ Update the list of shallow objects.
Parameters: - new_shallow – Newly shallow objects
- new_unshallow – Newly no longer shallow objects
-
exception
dulwich.repo.
InvalidUserIdentity
(identity)¶ Bases:
exceptions.Exception
User identity is not of the format ‘user <email>’
-
class
dulwich.repo.
MemoryRepo
¶ Bases:
dulwich.repo.BaseRepo
Repo that stores refs, objects, and named files in memory.
MemoryRepos are always bare: they have no working tree and no index, since those have a stronger dependency on the filesystem.
-
get_config
()¶ Retrieve the config object.
Returns: ConfigFile object.
-
get_description
()¶ Retrieve the description for this repository.
Returns: String with the description of the repository as set by the user.
-
get_named_file
(path, basedir=None)¶ Get a file from the control dir with a specific name.
Although the filename should be interpreted as a filename relative to the control dir in a disk-baked Repo, the object returned need not be pointing to a file in that location.
Parameters: path – The path to the file, relative to the control dir. Returns: An open file object, or None if the file does not exist.
-
classmethod
init_bare
(objects, refs)¶ Create a new bare repository in memory.
Parameters: - objects – Objects for the new repository, as iterable
- refs – Refs as dictionary, mapping names to object SHA1s
-
open_index
()¶ Fail to open index for this repo, since it is bare.
Raises: NoIndexPresent – Raised when no index is present
-
set_description
(description)¶ Set the description for this repository.
Parameters: description – Text to set as description for this repository.
-
-
class
dulwich.repo.
Repo
(root)¶ Bases:
dulwich.repo.BaseRepo
A git repository backed by local disk.
To open an existing repository, call the contructor with the path of the repository.
To create a new repository, use the Repo.init class method.
-
clone
(target_path, mkdir=True, bare=False, origin='origin', checkout=None)¶ Clone this repository.
Parameters: - target_path – Target path
- mkdir – Create the target directory
- bare – Whether to create a bare repository
- origin – Base name for refs in target repository cloned from this repository
Returns: Created repository as Repo
-
close
()¶ Close any files opened by this repository.
-
commondir
()¶ Return the path of the common directory.
For a main working tree, it is identical to controldir().
For a linked working tree, it is the control directory of the main working tree.
-
controldir
()¶ Return the path of the control directory.
-
classmethod
create
(path, mkdir=False)¶ Create a new bare repository.
path
should already exist and be an empty directory.Parameters: path – Path to create bare repository in Returns: a Repo instance
-
classmethod
discover
(start='.')¶ Iterate parent directories to discover a repository
Return a Repo object for the first parent directory that looks like a Git repository.
Parameters: start – The directory to start discovery from (defaults to ‘.’)
-
get_blob_normalizer
()¶ Return a BlobNormalizer object
-
get_config
()¶ Retrieve the config object.
Returns: ConfigFile object for the .git/config
file.
-
get_description
()¶ Retrieve the description of this repository.
Returns: A string describing the repository or None.
-
get_named_file
(path, basedir=None)¶ Get a file from the control dir with a specific name.
Although the filename should be interpreted as a filename relative to the control dir in a disk-based Repo, the object returned need not be pointing to a file in that location.
Parameters: - path – The path to the file, relative to the control dir.
- basedir – Optional argument that specifies an alternative to the control dir.
Returns: An open file object, or None if the file does not exist.
-
has_index
()¶ Check if an index is present.
-
index_path
()¶ Return path to the index file.
-
classmethod
init
(path, mkdir=False)¶ Create a new repository.
Parameters: - path – Path in which to create the repository
- mkdir – Whether to create the directory
Returns: Repo instance
-
classmethod
init_bare
(path, mkdir=False)¶ Create a new bare repository.
path
should already exist and be an empty directory.Parameters: path – Path to create bare repository in Returns: a Repo instance
-
open_index
()¶ Open the index for this repository.
Raises: NoIndexPresent – If no index is present Returns: The matching Index
-
reset_index
(tree=None)¶ Reset the index back to a specific tree.
Parameters: tree – Tree SHA to reset to, None for current HEAD tree.
-
set_description
(description)¶ Set the description for this repository.
Parameters: description – Text to set as description for this repository.
-
stage
(fs_paths)¶ Stage a set of paths.
Parameters: fs_paths – List of paths, relative to the repository path
-
-
dulwich.repo.
check_user_identity
(identity)¶ Verify that a user identity is formatted correctly.
Parameters: identity – User identity bytestring Raises: InvalidUserIdentity – Raised when identity is invalid
-
dulwich.repo.
get_user_identity
(config, kind=None)¶ Determine the identity to use for new commits.
-
dulwich.repo.
parse_graftpoints
(graftpoints)¶ Convert a list of graftpoints into a dict
Parameters: graftpoints – Iterator of graftpoint lines - Each line is formatted as:
- <commit sha1> <parent sha1> [<parent sha1>]*
- Resulting dictionary is:
- <commit sha1>: [<parent sha1>*]
-
dulwich.repo.
read_gitfile
(f)¶ Read a
.git
file.The first line of the file should start with “gitdir: “
Parameters: f – File-like object to read from Returns: A path
-
dulwich.repo.
serialize_graftpoints
(graftpoints)¶ Convert a dictionary of grafts into string
- The graft dictionary is:
- <commit sha1>: [<parent sha1>*]
- Each line is formatted as:
- <commit sha1> <parent sha1> [<parent sha1>]*