[Python] - 批處理git conflict文件

git merge時,如果兩個版本有衝突,衝突文件中會有:

<<<<<<< HEAD

....

=======

....

>>>>>>> branch_name

如果衝突文件很多,一個一個手動修改很麻煩,寫了一個Python腳本,自動批處理。

import re
import io

FileList = open("status.txt", "r")
Files = FileList.readlines()

#clear file content
def clear_file(filename):
    with io.open(filename, 'r+', encoding='utf-8') as f:
        f.seek(0)
        f.truncate()

for FileName in Files:
    #extract file name without space
    FileName = FileName[18:-1]

	if FileName:
		#read file content
		oldFile = open(FileName, "r")
		lines = oldFile.readlines()

		#clear file content
		clear_file(FileName)

		oldFile.close()

		#open file again
		newFile = open(FileName, "w")

		#main task
		bInHead = False
		for line in lines:
			if re.search("<<<<<<<", line, re.IGNORECASE) != None:
				bInHead = True
				continue
			elif re.search("=======", line, re.IGNORECASE) != None:
				bInHead = False
				continue
			elif re.search(">>>>>>>", line, re.IGNORECASE) != None:
				continue
			elif bInHead:
				continue
			else:
				newFile.write(line)

		#close file
		newFile.close()

status.txt中存放的是git status的結果,格式類似於:

      both modified:    project\file\path

      .....

這個腳本只會處理both modified的情況,其他如deleted by us、deleted by them、added by us、added by them等情況需要先處理掉。應該是可以統一用腳本一起處理掉的,後面再完善。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章