Python的高級(jí)Git庫(kù) Gittle
Gittle是一個(gè)高級(jí)純python git 庫(kù)。構(gòu)建在dulwich之上,提供了大部分的低層機(jī)制。
Install it
pip install gittle
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)
With authentication (see Authentication section for more information) :
auth = GittleAuth(pkey=key) Gittle.clone(repo_url, repo_path, auth=auth)
Or clone bare repository (no working directory) :
repo = Gittle.clone(repo_url, repo_path, bare=True)
Init repository from a path
repo = Gittle.init(path)
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')
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")
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()
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()
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")
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)
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()))
Get list of modified files (in current working directory)
repo.modified_files
Count number of commits
repo.commit_count
Get information for commits
List commits :
# Get 20 first commits repo.commit_info(start=0, end=20)
With a given commit :
commit = "a2105a0d528bf770021de874baf72ce36f6c3ccc"
Diff with another commit :
old_commit = repo.get_previous_commit(commit, n=1) print repo.diff(commit, old_commit)
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")
Create a GIT server
from gittle import GitServer
# Read only
GitServer('/', 'localhost').serve_forever()
# Read/Write
GitServer('/', 'localhost', perm='rw').serve_forever()
相關(guān)文章
Caffe卷積神經(jīng)網(wǎng)絡(luò)solver及其配置詳解
這篇文章主要為大家介紹了Caffe卷積神經(jīng)網(wǎng)絡(luò)solver及其配置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
Python?Pandas多種添加行列數(shù)據(jù)方法總結(jié)
在進(jìn)行數(shù)據(jù)分析時(shí)經(jīng)常需要按照一定條件創(chuàng)建新的數(shù)據(jù)列,然后進(jìn)行進(jìn)一步分析,下面這篇文章主要給大家介紹了關(guān)于Python?Pandas多種添加行列數(shù)據(jù)方法的相關(guān)資料,需要的朋友可以參考下2022-07-07
Python Matplotlib數(shù)據(jù)可視化模塊使用詳解
matplotlib是基建立在python之上,適用于創(chuàng)建靜態(tài),動(dòng)畫(huà)和交互式可視化,通常與數(shù)據(jù)分析模塊pandas搭配使用,用于數(shù)據(jù)的分析和展示,適用于主流的操作系統(tǒng),如Linux、Win、Mac2022-11-11
Python 正則表達(dá)式入門(mén)(初級(jí)篇)
本文主要為沒(méi)有使用正則表達(dá)式經(jīng)驗(yàn)的新手入門(mén)所寫(xiě)。由淺入深介紹了Python 正則表達(dá)式,有需要的朋友可以看下2016-12-12
python?判斷字符串當(dāng)中是否包含字符(str.contain)
這篇文章主要介紹了python?判斷字符串當(dāng)中是否包含字符(str.contain),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06

