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()
  • 相关阅读:
    Java实现 LeetCode 802 找到最终的安全状态 (DFS)
    Java实现 LeetCode 802 找到最终的安全状态 (DFS)
    Java实现 LeetCode 802 找到最终的安全状态 (DFS)
    Java实现 LeetCode 804 唯一摩尔斯密码词 (暴力)
    Java实现 LeetCode 803 打砖块 (DFS)
    Java实现 LeetCode 804 唯一摩尔斯密码词 (暴力)
    Java实现 LeetCode 803 打砖块 (DFS)
    Java实现 LeetCode 804 唯一摩尔斯密码词 (暴力)
    英文标点
    post sharp 与log4net 结合使用,含执行源码 转拷
  • 原文地址:https://www.cnblogs.com/hushaojun/p/4903260.html
Copyright © 2011-2022 走看看