Install it
pip install gittle
Examples :
Clone a repository
from gittle import Gittle
repo_path = '/tmp/gittle_bare'
repo_url = 'git://github测试数据/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测试数据mits
# 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测试数据mit(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测试数据mit_count()))
Get list of modified files (in current working directory)
# Stage single file repo.stage('file.txt') # Stage multiple files repo.stage(['other1.txt', 'other2.txt']) # Do the commit repo测试数据mit(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测试数据mit_count()))
Get list of modified files (in current working directory)
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测试数据mit_count()))
Get list of modified files (in current working directory)
# 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测试数据mit_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测试数据mit_tree(commit) # List files in a subpath print repo测试数据mit_ls(commit, "testdir") # Read a file print repo测试数据mit_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()
查看更多关于Python的高级Git库Gittle的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did87861