簡體   English   中英

如何修改 git 日志漂亮格式以從其中一個字段中刪除某些字符(如逗號)?

[英]How to modify git log pretty format to strip out certain characters (like commas) from one of the fields?

I have a bash script that creates a CSV file with the git logs for a set of subdirectories across some repos, using git log's --pretty format to put each commit on one line with a few variables from my script as well as some of the內置選項。

我使用的 --pretty 的基本格式如下:

git log --pretty="$PWD,${current_dir},%h,%cs,%cN,%s" 

在 bash 腳本中,整行如下所示:

(git log --no-merges --after="${number_of_days} days ago" --pretty="$PWD,${current_dir},%h,%cs,%cN,%s" -- "$current_dir") >> "$starting_dir"/export.csv

這是 CSV 的示例:

/path/to/parent,./NameOfSubdirectory,bdacd7e,2021-03-24,kclemson,commit message,with,extra,commas,in it
/path/to/parent,./NameOfSubdirectory,45cb4a0,2021-03-24,kclemson,commit message foo
/path/to/parent,./NameOfSubdirectory,9f8294b,2021-03-24,kclemson,commit message bar
/path/to/parent,./NameOfSubdirectory,3e91e92,2021-03-24,kclemson,commit message baz

這在大多數情況下都可以正常工作,但是當在 Excel 中打開 CSV 時,%s 中的逗號當然會破壞格式。 我想讓它做的是用空格替換 %s 中的任何逗號,所以它看起來像這樣:

/path/to/parent,./NameOfSubdirectory,bdacd7e,2021-03-24,kclemson,commit message with extra commas in it
/path/to/parent,./NameOfSubdirectory,45cb4a0,2021-03-24,kclemson,commit message foo
/path/to/parent,./NameOfSubdirectory,9f8294b,2021-03-24,kclemson,commit message bar
/path/to/parent,./NameOfSubdirectory,3e91e92,2021-03-24,kclemson,commit message baz

這樣做的正確方法是什么? 我假設我需要將它傳遞給 sed,但我正在尋求 sed 語法的幫助,以在該字段中交換“”為“”,以及如何在 ZD574D4BB40C84861791A 腳本中執行此操作。

謝謝。

代替,使用主題中不太可能出現的其他分隔符,例如^^^ 先將,替換為空格,然后將^^^替換為,

git log --pretty="$PWD^^^${current_dir}^^^%h^^^%cs^^^%cN^^^%s" | \
    sed -e 's/,/ /g' | sed -e 's/\^^^/,/g'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM