📂git
🔖git
2018-08-22 17:37阅读: 1609评论: 0推荐: 0

一键git push脚本(python版)

#!/usr/bin/env python

import os
import subprocess
import sys
import time

gitconfig = {
    'cwd': './blog/public',
    'git': {
        'github': ['git@github.com:akkuman/akkuman.github.io.git', 'master'],
        'coding': ['git@git.coding.net:Akkuman/Akkuman.git', 'coding-pages'],
    }
}

def main():
    global gitconfig

    # change working directory
    os.chdir(gitconfig.get('cwd', '.'))

    # check if git init
    if '.git' not in os.listdir():
        subprocess.check_call(['git', 'init'])

    # check if remote in config, if not, add the remote
    git_remotes = subprocess.check_output(['git', 'remote', '-v'])
    git_remotes_str = bytes.decode(git_remotes).strip()
    git_remotes_list = [line.split()[0] for line in git_remotes_str.split('\n')]
    for k,v in gitconfig['git'].items():
        if k not in git_remotes_list:
            subprocess.check_call(['git', 'remote', 'add', k, v[0]])

    # add . & commit with message
    subprocess.check_call(['git', 'add', '.'])
    commit_message = 'Site updated: %s' % time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
    if len(sys.argv) == 2:
        commit_message = sys.argv[1]
    subprocess.call(['git', 'commit', '-m', commit_message])
    
    # push to every remote repo
    for k,v in gitconfig['git'].items():
        subprocess.check_call(['git', 'push', k, 'master:%s' % v[1]])

if __name__ == '__main__':
    if len(sys.argv) == 2:
        if sys.argv[1] == '-h':
            print('Usage:\n\t%s [commit_message]' % sys.argv[0])
    main()

本文作者:Akkuman

本文链接:https://www.cnblogs.com/Akkuman/p/9519200.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Akkuman  阅读(1609)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.