根据文件路径、commit id、 批量获取patch

本文介绍了一种通过Python脚本自动化批量生成Git仓库中特定commit的patch文件的方法。该脚本从指定文件中读取路径和commit ID,然后利用Git命令在相应的工作目录下生成并移动patch文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  根据已知文件路径,和commit ID,遍历仓库,获取patch。文件路径和commit id以如下文件格式给出:

system / core / ecf5fd58a8f50362ce9e8d4245a33d56f29f142b
frameworks / base / e739d9ca5469ed30129d0fa228e3d0f2878671ac
frameworks / av / 119a012b2a9a186655da4bef3ed4ed8dd9b94c26
frameworks / av / 1e9801783770917728b7edbdeff3d0ec09c621ac

  思路:以行的方式读取文件,获取字符串后分别解析出路径和commit id ;  通过python os库操作shell命令,切换文件目录,使用git format -patch生成patch


完整code如下:

#!/usr/bin/python
# coding:utf-8


import os

# 分割字符串
def deal_string(string):
    str_list = []
    for i in string.split("/"):
        str_list.append(i.strip())
    return str_list


# 生成patch
def product_patch(str_list):
    length = str_list.__len__()
    directory = "/tmp/patches/2016_09/"     # patch打包路径
    code_dir = "/work/android/"  # code 路径
    commit_id = str_list[length-1]
    for i in range(length-1):                      # len-1前为路径,len-1commit id
        directory = directory + str_list[i] + "/"
        code_dir = code_dir + str_list[i] + "/"

    if os.path.exists(directory) is False:
        os.makedirs(directory)                     # 生成patch目录

    os.chdir(code_dir)                # 切换到code工作区
    command = 'git format-patch ' + commit_id + ' -1 '   # 生成patch
    os.system(command)
    os.system('mv *.patch ' + directory)            # 移动patch


if __name__ == '__main__':
    filename = '2016_09.txt'
    open_file = open(filename, 'r')
    for line in open_file:
        line_list = deal_string(line)
        product_patch(line_list)
    open_file.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hui-1018

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值