zoukankan      html  css  js  c++  java
  • Python的高级Git库 Gittle

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

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

    Install it

    pip install gittle

    Examples :

    Clone a repository

    1
    2
    3
    4
    5
    6
    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) :

    1
    2
    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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # 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

    1
    2
    3
    4
    5
    6
    7
    8
    # 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

    1
    2
    3
    4
    5
    6
    7
    8
    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

    1
    2
    3
    4
    5
    6
    7
    8
    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

    1
    2
    3
    4
    5
    6
    # 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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    # 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

    1
    2
    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 :

    1
    2
    old_commit = repo.get_previous_commit(commit, n=1)
    print repo.diff(commit, old_commit)

    Explore commit files using :

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    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

    1
    2
    3
    4
    5
    6
    7
    from gittle import GitServer
      
    # Read only
    GitServer('/', 'localhost').serve_forever()
      
    # Read/Write
    GitServer('/', 'localhost', perm='rw').serve_forever()
  • 相关阅读:
    冲刺周期会议三
    冲刺周期会议二
    冲刺周期会议一
    日常会议
    总结会议及站立会议(六)
    站立会议(五)
    站立会议(四)
    【自习任我行】
    软件小创意
    团队项目题目拟定
  • 原文地址:https://www.cnblogs.com/hushaojun/p/4903260.html
Copyright © 2011-2022 走看看