自动在修改点前后添加原因注释

【问题背景】需要了解git diff 文件中@@等修饰符的作用

【解决方案】参考链接 http://www.gnu.org/software/diffutils/manual/diffutils.html#Detailed-Unified

【同步产出】适用于某些项目的自动化添加diff信息

【脚本源码】有些(不会用git blame)的客户的项目需要在每笔提交前后添加注释行,标注这行代码是为什么添加,我觉得很脑残,写了个自动化的

import re
CASES_TABLE=[
    r"(@@.+)(.+\d{1,3},)(\d{1,3})(.+)",
    r"(.*)wayoung(.*)",
    r"^\+",
    r"^\+\+\+"
]
 
diffNameSrc="1.diff"
diffNameDist="2.diff"
MeilingSaid={
    
    
    "predix":"+somebody add here for reason 1 begin",
    "appendix":"+somebody add here for reason 1 end",
}
MyFileIn=[]
with open (diffNameSrc)as diffile:
    for line in diffile:
        MyFileIn.append(line.strip('\n'))
        pass
    pass
MyGap=[]
for index in range(0,len(MyFileIn)):
    item = MyFileIn[index]
    if (len(re.findall(CASES_TABLE[2], item))!=0):
        if (len(re.findall(CASES_TABLE[3], item))!=0):
            pass
        else:
            MyGap.append(index)
            pass
        pass
    pass
def PreEditAtNum(MyListIn):
    AtNumberList = GetAtNumbers(MyListIn)
    BatList=ModifyTotalAtNum(ListIn=MyFileIn)
    for i in range(0, len(AtNumberList)):
        MyListIn[AtNumberList[i]]=BatList[i]
        pass
    return MyListIn
def WashListTo2List(ListIn):
    ListOut_begin = []
    ListOut_end = []
    for i in range(0,len(ListIn)):
        try:
            if (ListIn[i]+1 != ListIn[i+1]):
                ListOut_end.append(ListIn[i])
                pass
        except:
            ListOut_end.append(ListIn[i])
        try:
            if (ListIn[i]-1 != ListIn[i-1]):
                ListOut_begin.append(ListIn[i])
                pass
        except:
            ListOut_end.append(ListIn[i])
        pass
    return (ListOut_begin,ListOut_end)
def GetAtNumbers(ListIn, re_para=CASES_TABLE[0]):
    OutList=[]
    for i in range(0,len(ListIn)):
        if (len(re.findall(re_para,ListIn[i])) != 0):
            OutList.append(i)
            pass
        pass
    return OutList
    pass
def ModifyTotalAtNum(ListIn, re_para=CASES_TABLE[0]):
    ListOut=[]
    for line in ListIn:
        temp = re.findall(CASES_TABLE[0],line)
        # add modified line num
        if (len(temp) != 0):
            modify_num = int(temp[0][2])
            modify_num += 2
            e=str(modify_num)
            print(e)
            temp = re.sub(CASES_TABLE[0],r"\1\2"+"wayoung"+e+r"\4",line)
            line2 = re.sub(CASES_TABLE[1],r"\1\2",str(temp))
            ListOut.append(line2)
            pass
        pass
    return ListOut
    pass
AtNumberList = GetAtNumbers(MyFileIn)
(predix_position_List,appendix_position_List)=WashListTo2List(MyGap)
MyFileIn=PreEditAtNum(MyFileIn)
with open(diffNameDist,"w")as fileout:
    for i in range(0,len(MyFileIn)):
        if i in predix_position_List:
            print(MeilingSaid["predix"],file=fileout)
            print(MeilingSaid["predix"])
            pass
        print(MyFileIn[i],file=fileout)
        print(MyFileIn[i])
        if i in appendix_position_List:
            print(MeilingSaid["appendix"],file=fileout)
            print(MeilingSaid["appendix"])
        pass

猜你喜欢

转载自blog.csdn.net/qq_27577263/article/details/129590473