热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

一个自动合并代码的简单脚本-在开发过程中,经常需要将其他分支(如master)的代码,合并到当前开发的功能分支中。而一个需求的开发,通常会涉及不同的代码仓库。在这些仓库上,会创建同

在开发过程中,经常需要将其他分支(如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()

推荐阅读
  • 十大经典排序算法动图演示+Python实现
    本文介绍了十大经典排序算法的原理、演示和Python实现。排序算法分为内部排序和外部排序,常见的内部排序算法有插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。文章还解释了时间复杂度和稳定性的概念,并提供了相关的名词解释。 ... [详细]
  • Problemexplanation: ... [详细]
  • 链接牛客OJ:合并两个排序的链表九度OJ:http:ac.jobdu.comproblem.php?pid1519GitHub代码:017 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • 本文介绍了如何使用python从列表中删除所有的零,并将结果以列表形式输出,同时提供了示例格式。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 本文介绍了在Python张量流中使用make_merged_spec()方法合并设备规格对象的方法和语法,以及参数和返回值的说明,并提供了一个示例代码。 ... [详细]
  • 花瓣|目标值_Compose 动画边学边做夏日彩虹
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Compose动画边学边做-夏日彩虹相关的知识,希望对你有一定的参考价值。引言Comp ... [详细]
  • 颜色迁移(reinhard VS welsh)
    不要谈什么天分,运气,你需要的是一个截稿日,以及一个不交稿就能打爆你狗头的人,然后你就会被自己的才华吓到。------ ... [详细]
  • 初始化初始化本地空版本库,仓库,英文名repositorymkdirtest&&cdtestgitinit克隆项目到本地gitclone远程同 ... [详细]
  • 先记住几个专用名词,如下:Workspace:工作区IndexStage:暂存区Repository:仓库区(或本地仓库)Remote:远程仓库一、新建代码库#在当前目录新建一个G ... [详细]
author-avatar
温蚊童鞋_612
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有