diff --git a/pygitlog/mdoperation.py b/pygitlog/mdoperation.py
index c51d7bd..de875de 100644
--- a/pygitlog/mdoperation.py
+++ b/pygitlog/mdoperation.py
@@ -1,53 +1,24 @@
##markdown操作函数
from pygitlog.gitoperation import *
from pygitlog.bdanalysis import *
-
-def mkdir(path):
- # 去除首位空格
- path=path.strip()
- # 去除尾部 \ 符号
- path=path.rstrip("\\")
- # 判断路径是否存在
- isExists=os.path.exists(path)
- # 判断结果
- if not isExists:
- os.makedirs(path)
+from pygitlog.fsoperation import *
#初始化kernel log summary的markdown文件
def initmd(version1,version2,source):
dir = os.getcwd() + "/output/"
mkdir(dir)
filename = dir + source + version1 + "_" + version2 + ".md"
- with open(filename,mode="w") as file:
- file.write("# kernel log summary\n")
- file.write("## " + source + " from " + version1 + " to " + version2 + "\n")
- file.write("|number | hash | time | editor | email | body | type | keywords | diff-files | \n")
- file.write("| :---- | :---- | :---- | :---- | :---- | :--- | :---- | :------- | :--------- | \n")
- os.chmod(filename,448)
- return filename
-
-##实现body的展开功能(attr为summary)
-def format(str1,str2):
- list = "" + str1 + "
"
- list = list + str2.replace('\n','
')+" "
- return list
-
-##实现文件差别的展开功能(首行summary)
-def format_diff(str):
- a = 0
- if str.count('\n') > 1:
- for line in str.split('\n'):
- if a == 0:
- #防止首行为空,其实没必要
- if line != '':
- list = "" + line + "
"
- a = 1
- else:
- list = list + line + '
'
- return list + " "
+ if os.path.exists(filename):
+ os.chmod(filename,448)
+ return filename
else:
- return str.replace('\n','')
-
+ with open(filename,mode="w") as file:
+ file.write("# kernel log summary\n")
+ file.write("## " + source + " from " + version1 + " to " + version2 + "\n")
+ file.write("|number | hash | time | editor | email | body | type | keywords | diff-files | \n")
+ file.write("| :---- | :---- | :---- | :---- | :---- | :--- | :---- | :------- | :--------- | \n")
+ os.chmod(filename,448)
+ return filename
#参考格式
#| 2af9b20dbb39 | Sat Oct 28 08:15:07 2023 -1000 | Linus Torvalds | torvalds@linux-foundation.org
@@ -68,6 +39,7 @@ def add_commit_info(filename,hash,hash_list):
file.write("| " + get_commit_keyword(get_commit_abbr(hash),hash) + "
")
file.write("| " + format_diff(get_commit_diff_files(hash)) + " |\n")
+#add_commit_info多线程版本
def add_commit_info_threads(lock,filename,hash,hash_list):
lock.acquire()
count = hash_list.index(hash)
@@ -83,4 +55,39 @@ def add_commit_info_threads(lock,filename,hash,hash_list):
file.write("| " + get_commit_type(get_commit_body(hash)) + "
")
file.write("| " + get_commit_keyword(get_commit_abbr(hash),hash) + "
")
file.write("| " + format_diff(get_commit_diff_files(hash)) + " |\n")
- lock.release()
\ No newline at end of file
+ lock.release()
+
+#获取文档第一行在对应hash_list的位置,-1为无实际内容
+def get_first_commit_count(file_name,hash_list):
+ with open(file_name,mode="r") as file:
+ lines = file.readlines() # 读取所有行
+ if len(lines) < 5:
+ return -1 ##无实际内容
+ else:
+ first_line = lines[5] # 取日志相关的首行
+ a = 0
+ for word in first_line.split("|"):
+ a = a + 1
+ if a == 3:
+ word = word.replace(" ","")
+ return hash_list.index(word)
+
+#获取文档最后一行在对应hash_list的位置
+def get_last_commit_count(file_name,hash_list):
+ with open(file_name,mode="r") as file:
+ lines = file.readlines() # 读取所有行
+ last_line = lines[-1] # 取最后一行
+ a = 0
+ for word in last_line.split("|"):
+ a = a + 1
+ if a == 3:
+ word = word.replace(" ","")
+ return hash_list.index(word)
+
+#获取实际要操作的hash_list
+#假如源文件有实际内容,避免最后一行为不完整行,对源文件进行最后一行删除处理
+def get_operation_hash_list(index,hash_list,file_name):
+ operation_hash_list = hash_list[index:-1]
+ if index != 0:
+ delete_lines(file_name,0,1)
+ return operation_hash_list
\ No newline at end of file