dulwich.refs module¶
Ref handling.
-
class
dulwich.refs.DictRefsContainer(refs, logger=None)¶ Bases:
dulwich.refs.RefsContainerRefsContainer backed by a simple dict.
This container does not support symbolic or packed references and is not threadsafe.
-
add_if_new(name, ref, committer=None, timestamp=None, timezone=None, message=None)¶ Add a new reference only if it does not already exist.
Parameters: - name – Ref name
- ref – Ref value
- message – Message for reflog
-
allkeys()¶ All refs present in this container.
-
get_packed_refs()¶ Get contents of the packed-refs file.
Returns: Dictionary mapping ref names to SHA1s Note: Will return an empty dictionary when no packed-refs file is present.
-
get_peeled(name)¶ Return the cached peeled value of a ref, if available.
Parameters: name – Name of the ref to peel Returns: The peeled value of the ref. If the ref is known not point to a tag, this will be the SHA the ref refers to. If the ref may point to a tag, but no cached information is available, None is returned.
-
read_loose_ref(name)¶ Read a loose reference and return its contents.
Parameters: name – the refname to read Returns: The contents of the ref file, or None if it does not exist.
-
remove_if_equals(name, old_ref, committer=None, timestamp=None, timezone=None, message=None)¶ Remove a refname only if it currently equals old_ref.
This method does not follow symbolic references, even if applicable for the subclass. It can be used to perform an atomic compare-and-delete operation.
Parameters: - name – The refname to delete.
- old_ref – The old sha the refname must refer to, or None to delete unconditionally.
- message – Message for reflog
Returns: True if the delete was successful, False otherwise.
-
set_if_equals(name, old_ref, new_ref, committer=None, timestamp=None, timezone=None, message=None)¶ Set a refname to new_ref only if it currently equals old_ref.
This method follows all symbolic references if applicable for the subclass, and can be used to perform an atomic compare-and-swap operation.
Parameters: - name – The refname to set.
- old_ref – The old sha the refname must refer to, or None to set unconditionally.
- new_ref – The new sha the refname will refer to.
- message – Message for reflog
Returns: True if the set was successful, False otherwise.
-
set_symbolic_ref(name, other, committer=None, timestamp=None, timezone=None, message=None)¶ Make a ref point at another ref.
Parameters: - name – Name of the ref to set
- other – Name of the ref to point at
- message – Optional message
-
-
class
dulwich.refs.DiskRefsContainer(path, worktree_path=None, logger=None)¶ Bases:
dulwich.refs.RefsContainerRefs container that reads refs from disk.
-
add_if_new(name, ref, committer=None, timestamp=None, timezone=None, message=None)¶ Add a new reference only if it does not already exist.
This method follows symrefs, and only ensures that the last ref in the chain does not exist.
Parameters: - name – The refname to set.
- ref – The new sha the refname will refer to.
- message – Optional message for reflog
Returns: True if the add was successful, False otherwise.
-
allkeys()¶ All refs present in this container.
-
get_packed_refs()¶ Get contents of the packed-refs file.
Returns: Dictionary mapping ref names to SHA1s Note: Will return an empty dictionary when no packed-refs file is present.
-
get_peeled(name)¶ Return the cached peeled value of a ref, if available.
Parameters: name – Name of the ref to peel Returns: The peeled value of the ref. If the ref is known not point to a tag, this will be the SHA the ref refers to. If the ref may point to a tag, but no cached information is available, None is returned.
-
read_loose_ref(name)¶ Read a reference file and return its contents.
If the reference file a symbolic reference, only read the first line of the file. Otherwise, only read the first 40 bytes.
Parameters: name – the refname to read, relative to refpath Returns: The contents of the ref file, or None if the file does not exist. Raises: IOError – if any other error occurs
-
refpath(name)¶ Return the disk path of a ref.
-
remove_if_equals(name, old_ref, committer=None, timestamp=None, timezone=None, message=None)¶ Remove a refname only if it currently equals old_ref.
This method does not follow symbolic references. It can be used to perform an atomic compare-and-delete operation.
Parameters: - name – The refname to delete.
- old_ref – The old sha the refname must refer to, or None to delete unconditionally.
- message – Optional message
Returns: True if the delete was successful, False otherwise.
-
set_if_equals(name, old_ref, new_ref, committer=None, timestamp=None, timezone=None, message=None)¶ Set a refname to new_ref only if it currently equals old_ref.
This method follows all symbolic references, and can be used to perform an atomic compare-and-swap operation.
Parameters: - name – The refname to set.
- old_ref – The old sha the refname must refer to, or None to set unconditionally.
- new_ref – The new sha the refname will refer to.
- message – Set message for reflog
Returns: True if the set was successful, False otherwise.
-
set_symbolic_ref(name, other, committer=None, timestamp=None, timezone=None, message=None)¶ Make a ref point at another ref.
Parameters: - name – Name of the ref to set
- other – Name of the ref to point at
- message – Optional message to describe the change
-
subkeys(base)¶ Refs present in this container under a base.
Parameters: base – The base to return refs under. Returns: A set of valid refs in this container under the base; the base prefix is stripped from the ref names returned.
-
-
class
dulwich.refs.InfoRefsContainer(f)¶ Bases:
dulwich.refs.RefsContainerRefs container that reads refs from a info/refs file.
-
allkeys()¶ All refs present in this container.
-
get_packed_refs()¶ Get contents of the packed-refs file.
Returns: Dictionary mapping ref names to SHA1s Note: Will return an empty dictionary when no packed-refs file is present.
-
get_peeled(name)¶ Return the cached peeled value of a ref, if available.
Parameters: name – Name of the ref to peel Returns: The peeled value of the ref. If the ref is known not point to a tag, this will be the SHA the ref refers to. If the ref may point to a tag, but no cached information is available, None is returned.
-
read_loose_ref(name)¶ Read a loose reference and return its contents.
Parameters: name – the refname to read Returns: The contents of the ref file, or None if it does not exist.
-
-
class
dulwich.refs.RefsContainer(logger=None)¶ Bases:
objectA container for refs.
-
add_if_new(name, ref)¶ Add a new reference only if it does not already exist.
Parameters: - name – Ref name
- ref – Ref value
- message – Message for reflog
-
allkeys()¶ All refs present in this container.
-
as_dict(base=None)¶ Return the contents of this container as a dictionary.
-
follow(name)¶ Follow a reference name.
Returns: a tuple of (refnames, sha), wheres refnames are the names of references in the chain
-
get_packed_refs()¶ Get contents of the packed-refs file.
Returns: Dictionary mapping ref names to SHA1s Note: Will return an empty dictionary when no packed-refs file is present.
-
get_peeled(name)¶ Return the cached peeled value of a ref, if available.
Parameters: name – Name of the ref to peel Returns: The peeled value of the ref. If the ref is known not point to a tag, this will be the SHA the ref refers to. If the ref may point to a tag, but no cached information is available, None is returned.
-
get_symrefs()¶ Get a dict with all symrefs in this container.
Returns: Dictionary mapping source ref to target ref
-
import_refs(base, other, committer=None, timestamp=None, timezone=None, message=None, prune=False)¶
-
keys(base=None)¶ Refs present in this container.
Parameters: base – An optional base to return refs under. Returns: An unsorted set of valid refs in this container, including packed refs.
-
read_loose_ref(name)¶ Read a loose reference and return its contents.
Parameters: name – the refname to read Returns: The contents of the ref file, or None if it does not exist.
-
read_ref(refname)¶ Read a reference without following any references.
Parameters: refname – The name of the reference Returns: The contents of the ref file, or None if it does not exist.
-
remove_if_equals(name, old_ref, committer=None, timestamp=None, timezone=None, message=None)¶ Remove a refname only if it currently equals old_ref.
This method does not follow symbolic references, even if applicable for the subclass. It can be used to perform an atomic compare-and-delete operation.
Parameters: - name – The refname to delete.
- old_ref – The old sha the refname must refer to, or None to delete unconditionally.
- message – Message for reflog
Returns: True if the delete was successful, False otherwise.
-
set_if_equals(name, old_ref, new_ref, committer=None, timestamp=None, timezone=None, message=None)¶ Set a refname to new_ref only if it currently equals old_ref.
This method follows all symbolic references if applicable for the subclass, and can be used to perform an atomic compare-and-swap operation.
Parameters: - name – The refname to set.
- old_ref – The old sha the refname must refer to, or None to set unconditionally.
- new_ref – The new sha the refname will refer to.
- message – Message for reflog
Returns: True if the set was successful, False otherwise.
-
set_symbolic_ref(name, other, committer=None, timestamp=None, timezone=None, message=None)¶ Make a ref point at another ref.
Parameters: - name – Name of the ref to set
- other – Name of the ref to point at
- message – Optional message
-
subkeys(base)¶ Refs present in this container under a base.
Parameters: base – The base to return refs under. Returns: A set of valid refs in this container under the base; the base prefix is stripped from the ref names returned.
-
-
dulwich.refs.check_ref_format(refname)¶ Check if a refname is correctly formatted.
Implements all the same rules as git-check-ref-format[1].
[1] http://www.kernel.org/pub/software/scm/git/docs/git-check-ref-format.html
Parameters: refname – The refname to check Returns: True if refname is valid, False otherwise
-
dulwich.refs.is_local_branch(x)¶
-
dulwich.refs.parse_symref_value(contents)¶ Parse a symref value.
Parameters: contents – Contents to parse Returns: Destination
-
dulwich.refs.read_info_refs(f)¶
-
dulwich.refs.read_packed_refs(f)¶ Read a packed refs file.
Parameters: f – file-like object to read from Returns: Iterator over tuples with SHA1s and ref names.
-
dulwich.refs.read_packed_refs_with_peeled(f)¶ Read a packed refs file including peeled refs.
Assumes the “# pack-refs with: peeled” line was already read. Yields tuples with ref names, SHA1s, and peeled SHA1s (or None).
Parameters: f – file-like object to read from, seek’ed to the second line
-
dulwich.refs.strip_peeled_refs(refs)¶ Remove all peeled refs
-
dulwich.refs.write_info_refs(refs, store)¶ Generate info refs.
-
dulwich.refs.write_packed_refs(f, packed_refs, peeled_refs=None)¶ Write a packed refs file.
Parameters: - f – empty file-like object to write to
- packed_refs – dict of refname to sha of packed refs to write
- peeled_refs – dict of refname to peeled value of sha