# diff import sys from tqdm import tqdm # 変更行から文字を検索し、その行を抜き出す def search_lines(repo, hexsha_after, hexsha_before, commit_no): s = repo.git.diff(hexsha_after + ".." + hexsha_before) # diffログを"s"に入れる lines = s.splitlines() # 行ごと(改行判定(split)もして)リスト化 search_flag = "False" search = [] for line in lines: # 行ごとにまわす if line.startswith("+") or line.startswith("-"): # もしも行の先頭が"+"or"-""の時... # if "@" in line: # もしも"@"が含まれていた時... search.append(line) search_flag = "True" if search_flag: print("\n--- " + str(commit_no+1) + " commit .. " + str(commit_no) + " commit ---\n") for list in search: #ログで見やすく改行するためのfor文 print(list) def run(repo): sys.stdout = open('./log/diff.log',"w+", encoding="utf_8_sig") # 標準出力をdiff.logに変更 sum_commits = repo.git.rev_list('--count', 'HEAD') # コミットの総数 commit_count = 0 hexsha_after = "HEAD" # 差分取得用のハッシュ値(親) with tqdm(total=int(sum_commits), desc='diff.log') as pbar: # プログレスバーの設定 for commit in repo.iter_commits(): commit_no = int(sum_commits) - commit_count if commit_count != 0: # print(repo.git.diff(hexsha + ".." + commit.hexsha)) # ファイルの差分を取得 search_lines(repo, hexsha_after, commit.hexsha, commit_no) # 変更行から文字を検索し、その行を抜き出す hexsha_after = commit.hexsha commit_count += 1 pbar.update(1) # プログレスバーの進捗率を更新 search_lines(repo, hexsha_after, "4b825dc642cb6eb9a060e54bf8d69288fbee4904", 0) # 最初のコミットの差分 sys.stdout = sys.__stdout__ # 標準出力をコンソールにもどす