Python的高级Git库 Gittle

WBOY
Freigeben: 2016-06-16 08:41:55
Original
2072 Leute haben es durchsucht

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

Install it

<code>pip install gittle</code>
Nach dem Login kopieren

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)
Nach dem Login kopieren

With authentication (see Authentication section for more information) :

auth = GittleAuth(pkey=key)
Gittle.clone(repo_url, repo_path, auth=auth)
Nach dem Login kopieren

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> 
Nach dem Login kopieren

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> 
Nach dem Login kopieren

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')
Nach dem Login kopieren

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")
Nach dem Login kopieren

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()
Nach dem Login kopieren

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()
Nach dem Login kopieren

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")
Nach dem Login kopieren

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)
Nach dem Login kopieren

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()))
Nach dem Login kopieren

Get list of modified files (in current working directory)

<span class="n">repo</span><span class="o">.</span><span class="n">modified_files</span> 
Nach dem Login kopieren

Count number of commits

<span class="n">repo</span><span class="o">.</span><span class="n">commit_count</span> 
Nach dem Login kopieren

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> 
Nach dem Login kopieren

With a given commit :

<span class="n">commit</span> <span class="o">=</span> <span class="s">"a2105a0d528bf770021de874baf72ce36f6c3ccc"</span> 
Nach dem Login kopieren

Diff with another commit :

old_commit = repo.get_previous_commit(commit, n=1)
print repo.diff(commit, old_commit)
Nach dem Login kopieren

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")
Nach dem Login kopieren

Create a GIT server

from gittle import GitServer
 
# Read only
GitServer('/', 'localhost').serve_forever()
 
# Read/Write
GitServer('/', 'localhost', perm='rw').serve_forever()
Nach dem Login kopieren
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!