Python的高级Git库 Gittle

WBOY
Release: 2016-06-16 08:41:55
Original
2100 people have browsed it

Gittle是一个高级纯python git 库。构建在dulwich之上,提供了大部分的低层机制。

Install it

<code>pip install gittle</code>
Copy after login

Examples :

Clone a repository

from gittle import Gittle
 
repo_path = '/tmp/gittle_bare'
repo_url = 'git://github.com/FriendCode/gittle.git'
 
repo = Gittle.clone(repo_url, repo_path)
Copy after login

With authentication (see Authentication section for more information) :

auth = GittleAuth(pkey=key)
Gittle.clone(repo_url, repo_path, auth=auth)
Copy after login

Or clone bare repository (no working directory) :

<span class="n">repo</span> <span class="o">=</span> <span class="n">Gittle</span><span class="o">.</span><span class="n">clone</span><span class="p">(</span><span class="n">repo_url</span><span class="p">,</span> <span class="n">repo_path</span><span class="p">,</span> <span class="n">bare</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> 
Copy after login

Init repository from a path

<span class="n">repo</span> <span class="o">=</span> <span class="n">Gittle</span><span class="o">.</span><span class="n">init</span><span class="p">(</span><span class="n">path</span><span class="p">)</span> 
Copy after login

Get repository information

# Get list of objects
repo.commits
 
# Get list of branches
repo.branches
 
# Get list of modified files (in current working directory)
repo.modified_files
 
# Get diff between latest commits
repo.diff('HEAD', 'HEAD~1')
Copy after login

Commit

# Stage single file
repo.stage('file.txt')
 
# Stage multiple files
repo.stage(['other1.txt', 'other2.txt'])
 
# Do the commit
repo.commit(name="Samy Pesse", email="samy@friendco.de", message="This is a commit")
Copy after login

Pull

repo = Gittle(repo_path, origin_uri=repo_url)
 
# Authentication with RSA private key
key_file = open('/Users/Me/keys/rsa/private_rsa')
repo.auth(pkey=key_file)
 
# Do pull
repo.pull()
Copy after login

Push

repo = Gittle(repo_path, origin_uri=repo_url)
 
# Authentication with RSA private key
key_file = open('/Users/Me/keys/rsa/private_rsa')
repo.auth(pkey=key_file)
 
# Do push
repo.push()
Copy after login

Authentication for remote operations

# With a key
key_file = open('/Users/Me/keys/rsa/private_rsa')
repo.auth(pkey=key_file)
 
# With username and password
repo.auth(username="your_name", password="your_password")
Copy after login

Branch

# Create branch off master
repo.create_branch('dev', 'master')
 
# Checkout the branch
repo.switch_branch('dev')
 
# Create an empty branch (like 'git checkout --orphan')
repo.create_orphan_branch('NewBranchName')
 
# Print a list of branches
print(repo.branches)
 
# Remove a branch
repo.remove_branch('dev')
 
# Print a list of branches
print(repo.branches)
Copy after login

Get file version

versions = repo.get_file_versions('gittle/gittle.py')
print("Found %d versions out of a total of %d commits" % (len(versions), repo.commit_count()))
Copy after login

Get list of modified files (in current working directory)

<span class="n">repo</span><span class="o">.</span><span class="n">modified_files</span> 
Copy after login

Count number of commits

<span class="n">repo</span><span class="o">.</span><span class="n">commit_count</span> 
Copy after login

Get information for commits

List commits :

<span class="c"># Get 20 first commits</span> <span class="n">repo</span><span class="o">.</span><span class="n">commit_info</span><span class="p">(</span><span class="n">start</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="mi">20</span><span class="p">)</span> 
Copy after login

With a given commit :

<span class="n">commit</span> <span class="o">=</span> <span class="s">"a2105a0d528bf770021de874baf72ce36f6c3ccc"</span> 
Copy after login

Diff with another commit :

old_commit = repo.get_previous_commit(commit, n=1)
print repo.diff(commit, old_commit)
Copy after login

Explore commit files using :

commit = "a2105a0d528bf770021de874baf72ce36f6c3ccc"
 
# Files tree
print repo.commit_tree(commit)
 
# List files in a subpath
print repo.commit_ls(commit, "testdir")
 
# Read a file
print repo.commit_file(commit, "testdir/test.txt")
Copy after login

Create a GIT server

from gittle import GitServer
 
# Read only
GitServer('/', 'localhost').serve_forever()
 
# Read/Write
GitServer('/', 'localhost', perm='rw').serve_forever()
Copy after login
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!