2017-01-13 141 views
0

我正在編寫一個腳本來遍歷某個文件夾及其子文件夾中的所有Git存儲庫並執行git log。 腳本的輸出最終保存到CSV日誌文件中。如何在Git日誌中包含當前文件夾名稱

現在我想包含git-log結果中的當前文件夾名稱,但我找不到git-log文檔中的如何執行此操作。

我現在的git-log命令如下:

git log --branches=master --no-merges --pretty=format:"%H;%an;%ad;%s" --date=format:'%Y-%m-%d %H:%M' 

如何做到這一點任何想法?

+0

也許誤解了問題,但你爲什麼不打印使用您正在使用的腳本語言的文件夾名稱? – jbu

+0

據我所見,沒有佔位符格式字符串有回購名稱/文件夾名稱。 – jbu

+0

'git log foldername/filename'就是你想要的嗎? – ASR

回答

0

我認爲你正在使用錯誤的工具進行任務。當前目錄是環境的屬性,而不是存儲庫的屬性; git log並不關心它。

因此,您應該在腳本中獲取當前目錄並將其以某種方式放入git log的輸出中。

如果你需要有對git log返回的每一行的回購目錄,那麼你可以簡單地擠$(pwd)格式字符串中:

git log --branches=master --no-merges --pretty=format:"%H;%an;%ad;%s;$(pwd)" --date=format:'%Y-%m-%d %H:%M' 

被警告說,如果當前的路徑包含%會產生意外的結果因爲它是由git log解釋的特殊字符。

爲了避免這種情況發生,你可以使用sed將路徑轉化爲格式之前到%字符逃脫

dir=$(pwd | sed s/%/%%/g) 
git log --branches=master --no-merges --pretty=format:"%H;%an;%ad;%s;$dir" --date=format:'%Y-%m-%d %H:%M' 

它仍然會產生問題,如果當前的路徑包含";,因爲它們是特殊字符對於shell和CSV格式。如果需要,您也可以在sed命令中嘗試引用它們。

0

我沒有絕對的把握,如果我理解正確的,但你尋找--dirstat:

這將在提交信息的底部添加了每個已更改目錄的變化的百分比。從手冊頁:

--dirstat[=<param1,param2,...>] 
     Output the distribution of relative amount of changes for each sub-directory. The behavior of --dirstat can be customized by 
     passing it a comma separated list of parameters. The defaults are controlled by the diff.dirstat configuration variable (see git- 
     config(1)). The following parameters are available: 
相關問題