Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Pythonic Git for Humans

License

Unknown and 2 other licenses found

Licenses found

Unknown
COPYING
Apache-2.0
LICENSE_Apache2.0
GPL-2.0
LICENSE_GPLv2
NotificationsYou must be signed in to change notification settings

FriendCode/gittle

Gittle is a high-level pure-python git library.It builds upon dulwich which provides most of the low-level machinery

Install it

pip install gittle

Examples :

Clone a repository

fromgittleimportGittlerepo_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 objectsrepo.commits# Get list of branchesrepo.branches# Get list of modified files (in current working directory)repo.modified_files# Get diff between latest commitsrepo.diff('HEAD','HEAD~1')

Commit

# Stage single filerepo.stage('file.txt')# Stage multiple filesrepo.stage(['other1.txt','other2.txt'])# Do the commitrepo.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 keykey_file=open('/Users/Me/keys/rsa/private_rsa')repo.auth(pkey=key_file)# Do pullrepo.pull()

Push

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

Authentication for remote operations

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

Branch

# Create branch off masterrepo.create_branch('dev','master')# Checkout the branchrepo.switch_branch('dev')# Create an empty branch (like 'git checkout --orphan')repo.create_orphan_branch('NewBranchName')# Print a list of branchesprint(repo.branches)# Remove a branchrepo.remove_branch('dev')# Print a list of branchesprint(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 commitsrepo.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)printrepo.diff(commit,old_commit)

Explore commit files using :

commit="a2105a0d528bf770021de874baf72ce36f6c3ccc"# Files treeprintrepo.commit_tree(commit)# List files in a subpathprintrepo.commit_ls(commit,"testdir")# Read a fileprintrepo.commit_file(commit,"testdir/test.txt")

Create a GIT server

fromgittleimportGitServer# Read onlyGitServer('/','localhost').serve_forever()# Read/WriteGitServer('/','localhost',perm='rw').serve_forever()

Why implement Git in Python ?

NEED FOR AWESOMENESS :

  • Git is Awesome
  • Python is Awesome
  • Automating Git isn't so Awesome

TO SOLVE MY OWN PROBLEMS AT FRIENDCODE :

  • Automate git repo management (push/pull, commit, etc ...)
  • Scriptable and usable from Python
  • Easy to use & good interoperability in a SOA environment

USE IT FOR :

  • Local
    • Common git operations (add, rm, mv, commit, log)
    • Branch operations (creating, switching, deleting)
  • Remote
    • Fetching
    • Pushing
    • Pulling (needs merging)
  • Merging
    • [-] Fast forward
    • [-] Recursive
    • [-] Merge branches
  • Diff
    • Filter binary files

Building and uploading to PyPi

python setup.py sdist bdist_egg upload

About

Pythonic Git for Humans

Resources

License

Unknown and 2 other licenses found

Licenses found

Unknown
COPYING
Apache-2.0
LICENSE_Apache2.0
GPL-2.0
LICENSE_GPLv2

Stars

Watchers

Forks

Packages

No packages published

Contributors18


[8]ページ先頭

©2009-2025 Movatter.jp