References¶
-
Repository.references¶
-
class
pygit2.repository.References(repository)¶ -
__contains__(name)¶
-
__getitem__(name)¶
-
__iter__()¶
-
create(name, target, force=False)¶
-
delete(name)¶
-
get(key)¶
-
objects¶
-
Example:
>>> all_refs = list(repo.references)
>>> master_ref = repo.lookup_reference("refs/heads/master")
>>> commit = master_ref.peel() # or repo[master_ref.target]
# Create a reference
>>> ref = repo.references.create('refs/tags/version1', LAST_COMMIT)
# Delete a reference
>>> repo.references.delete('refs/tags/version1')
Functions¶
-
pygit2.reference_is_valid_name(refname) → bool¶ Check if the passed string is a valid reference name.
Check if the passed string is a valid reference name.
Example:
>>> from pygit2 import reference_is_valid_name >>> reference_is_valid_name("refs/heads/master") True >>> reference_is_valid_name("HEAD") True >>> reference_is_valid_name("refs/heads/..") False
The Reference type¶
-
class
pygit2.Reference¶ Reference.
-
Reference.name¶ The full name of the reference.
-
Reference.raw_name¶ The full name of the reference (Bytes).
-
Reference.shorthand¶ The shorthand “human-readable” name of the reference.
-
Reference.raw_shorthand¶ The shorthand “human-readable” name of the reference (Bytes).
-
Reference.target¶ The reference target: If direct the value will be an Oid object, if it is symbolic it will be an string with the full name of the target reference.
-
Reference.type¶ Type, either GIT_REF_OID or GIT_REF_SYMBOLIC.
-
Reference.__eq__(Reference)¶ x.__eq__(y) <==> x==y
-
Reference.__ne__(Reference)¶ x.__ne__(y) <==> x!=y
-
Reference.set_target(target[, message])¶ Set the target of this reference.
Update the reference using the given signature and message. These will be used to fill the reflog entry which will be created as a result of this update.
Parameters:
- target
- The new target for this reference
- message
- Message to use for the reflog.
-
Reference.delete()¶ Delete this reference. It will no longer be valid!
-
Reference.rename(new_name)¶ Rename the reference.
-
Reference.resolve() → Reference¶ Resolve a symbolic reference and return a direct reference.
-
Reference.peel(type=None) → object¶ Retrieve an object of the given type by recursive peeling.
If no type is provided, the first non-tag object will be returned.
-
Reference.log() → RefLogIter¶ Retrieves the current reference log.
Example:
>>> branch = repository.lookup_reference("refs/heads/master") >>> branch.target = another_commit.id >>> committer = Signature('Cecil Committer', 'cecil@committers.tld') >>> branch.log_append(another_commit.id, committer, "changed branch target using pygit2")
This creates a reflog entry in
git reflog masterwhich looks like:7296b92 master@{10}: changed branch target using pygit2
In order to make an entry in
git reflog, ie. the reflog forHEAD, you have to get the Reference object forHEADand calllog_appendon that.
The HEAD¶
Example. These two lines are equivalent:
>>> head = repo.lookup_reference('HEAD').resolve()
>>> head = repo.head
-
Repository.head¶ Current head reference of the repository.
-
Repository.head_is_detached¶ A repository’s HEAD is detached when it points directly to a commit instead of a branch.
-
Repository.head_is_unborn¶ An unborn branch is one named from HEAD but which doesn’t exist in the refs namespace, because it doesn’t have any commit to point to.
Branches¶
-
Repository.branches¶
Branches inherit from References, and additionally provide specialized accessors for some unique features.
-
class
pygit2.repository.Branches(repository, flag=3, commit=None)¶ -
__contains__(name)¶
-
__getitem__(name)¶
-
__iter__()¶
-
create(name, commit, force=False)¶
-
delete(name)¶
-
get(key)¶
-
with_commit(commit)¶
-
Example:
>>> # Listing all branches
>>> branches_list = list(repo.branches)
>>> # Local only
>>> local_branches = list(repo.branches.local)
>>> # Remote only
>>> remote_branches = list(repo.branches.remote)
>>> # Get a branch
>>> branch = repo.branches['master']
>>> other_branch = repo.branches['does-not-exist'] # Will raise a KeyError
>>> other_branch = repo.branches.get('does-not-exist') # Returns None
>>> remote_branch = repo.branches.remote['upstream/feature']
>>> # Create a local branch
>>> new_branch = repo.branches.local.create('new-branch')
>>> And delete it
>>> repo.branches.delete('new-branch')
The Branch type¶
-
Branch.branch_name¶ The name of the local or remote branch.
-
Branch.remote_name¶ The name of the remote set to be the upstream of this branch.
-
Branch.upstream¶ The branch’s upstream branch or None if this branch does not have an upstream set. Set to None to unset the upstream configuration.
-
Branch.upstream_name¶ The name of the reference set to be the upstream of this one
-
Branch.rename(name, force=False)¶ Move/rename an existing local branch reference. The new branch name will be checked for validity. Returns the new branch.
-
Branch.delete()¶ Delete this branch. It will no longer be valid!
-
Branch.is_head()¶ True if HEAD points at the branch, False otherwise.
-
Branch.is_checked_out()¶ True if branch is checked out by any repo connected to the current one, False otherwise.
The reference log¶
Example:
>>> head = repo.references.get('refs/heads/master') # Returns None if not found
>>> # Almost equivalent to
>>> head = repo.references['refs/heads/master'] # Raises KeyError if not found
>>> for entry in head.log():
... print(entry.message)
Notes¶
-
Repository.notes()¶
-
Repository.create_note(message, author, committer, annotated_id[, ref, force]) → Oid¶ Create a new note for an object, return its SHA-ID.If no ref is given ‘refs/notes/commits’ will be used.
-
Repository.lookup_note(annotated_id[, ref]) → Note¶ Lookup a note for an annotated object in a repository.