| Server IP : 217.160.0.251 / Your IP : 216.73.216.236 Web Server : Apache System : Linux info 3.0 #1337 SMP Tue Jan 01 00:00:00 CEST 2000 all GNU/Linux User : u94981163 ( 8991765) PHP Version : 7.3.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /kunden/kunden/usr/lib/python3/dist-packages/docs/tutorial/ |
Upload File : |
.. _tutorial-tag:
Tagging
=======
This tutorial will demonstrate how to add a tag to a commit via dulwich.
First let's initialize the repository:
>>> from dulwich.repo import Repo
>>> _repo = Repo("myrepo", mkdir=True)
Next we build the commit object and add it to the object store:
>>> from dulwich.objects import Blob, Tree, Commit, parse_timezone
>>> permissions = 0100644
>>> author = "John Smith"
>>> blob = Blob.from_string("empty")
>>> tree = Tree()
>>> tree.add(tag, permissions, blob.id)
>>> commit = Commit()
>>> commit.tree = tree.id
>>> commit.author = commit.committer = author
>>> commit.commit_time = commit.author_time = int(time())
>>> tz = parse_timezone('-0200')[0]
>>> commit.commit_timezone = commit.author_timezone = tz
>>> commit.encoding = "UTF-8"
>>> commit.message = 'Tagging repo: ' + message
Add objects to the repo store instance:
>>> object_store = _repo.object_store
>>> object_store.add_object(blob)
>>> object_store.add_object(tree)
>>> object_store.add_object(commit)
>>> master_branch = 'master'
>>> _repo.refs['refs/heads/' + master_branch] = commit.id
Finally, add the tag top the repo:
>>> _repo['refs/tags/' + commit] = commit.id
Alternatively, we can use the tag object if we'd like to annotate the tag:
>>> from dulwich.objects import Blob, Tree, Commit, parse_timezone, Tag
>>> tag_message = "Tag Annotation"
>>> tag = Tag()
>>> tag.tagger = author
>>> tag.message = message
>>> tag.name = "v0.1"
>>> tag.object = (Commit, commit.id)
>>> tag.tag_time = commit.author_time
>>> tag.tag_timezone = tz
>>> object_store.add_object(tag)
>>> _repo['refs/tags/' + tag] = tag.id