Pārlūkot izejas kodu

Add example for using memoryrepo.

Jelmer Vernooij 6 gadi atpakaļ
vecāks
revīzija
f73261458e
1 mainītis faili ar 33 papildinājumiem un 0 dzēšanām
  1. 33 0
      examples/memoryrepo.py

+ 33 - 0
examples/memoryrepo.py

@@ -0,0 +1,33 @@
+#!/usr/bin/python
+# This script creates a clone of a remote repository in local memory,
+# then adds a single file and pushes the result back.
+#
+# Example usage:
+#  python examples/memoryrepo.py git+ssh://github.com/jelmer/testrepo
+
+import stat
+import sys
+
+from dulwich import porcelain
+from dulwich.objects import Blob
+from dulwich.repo import MemoryRepo
+
+local_repo = MemoryRepo()
+local_repo.refs.set_symbolic_ref(b'HEAD', b'refs/heads/master')
+print(local_repo.refs.as_dict())
+
+porcelain.fetch(local_repo, sys.argv[1])
+local_repo['refs/heads/master'] = local_repo['refs/remotes/origin/master']
+
+last_tree = local_repo[local_repo['HEAD'].tree]
+new_blob = Blob.from_string(b'Some contents')
+local_repo.object_store.add_object(new_blob)
+last_tree.add(b'test', stat.S_IFREG, new_blob.id)
+local_repo.object_store.add_object(last_tree)
+
+local_repo.do_commit(
+    message=b'Add a file called \'test\'',
+    ref=b'refs/heads/master',
+    tree=last_tree.id)
+
+porcelain.push(local_repo, sys.argv[1], 'master')