一个自动合并代码的简单脚本

1,119 阅读1分钟

在开发过程中,经常需要将其他分支(如master)的代码,合并到当前开发的功能分支中。

而一个需求的开发,通常会涉及不同的代码仓库。在这些仓库上,会创建同名的功能分支。

如果涉及的代码仓库较多,或频繁合并代码,操作就显得很繁琐。为了更高效的摸鱼,于是写了一个python脚本,用于自动合并代码。

假设D:\rui\work\路径下,存在a-repob-repo两个本地代码仓库。在a-repob-repofeature分支上,正在进行需求开发。这时,需要分别将a-repob-repomaster分支,合并到feature分支。

# 引入第三方库 GitPython
from git import Repo

# 工作路径
WORK_PATH = r'D:\rui\work\\'

# 仓库列表
REPO_NAME_LIST = [
    'a-repo',
    'b-repo'
]

# 将 FROM_BRANCH 合并进 TO_BRANCH
FROM_BRANCH = 'master'
TO_BRANCH = 'feature'


def main():
    print('开始啦 0v0\n')

    # 遍历仓库列表,分别执行合并操作
    for repo_name in REPO_NAME_LIST:
        # 创建版本库对象
        repo_path = WORK_PATH + repo_name
        repo = Repo(repo_path)

        # 若当前分支存在未提交的修改,则中止操作
        if repo.is_dirty():
            print('{0}:  请先提交当前分支的修改'.format(repo_name))
            exit()

        print('start >>>   ' + repo_name)
        # 执行merge操作
        __merge(repo, FROM_BRANCH, TO_BRANCH)
        print('end   <<<   ' + repo_name + '\n')

    print('成功啦 ^0^')


def __merge(repo, from_branch, to_branch):
    git = repo.git
    # 切换到源分支,并同步远程仓库的代码
    git.checkout(from_branch)
    git.pull()

    # 切换到目标分支,并同步远程仓库的代码
    git.checkout(to_branch)
    git.pull()

    # 将源分支的代码合并到目标分支,并将目标分支的最新代码推送到远程仓库
    git.merge(from_branch)
    git.push()


if __name__ == '__main__':
    main()