2013-05-21 52 views
3

我的配置管理團隊要求我爲每個文件生成發佈中包含的所有文件以及上次提交的SHA的列表。我試圖找出如何做到這一點,但我沒有太大的成功。我嘗試使用ls-files命令,並得到了什麼看起來有希望的結果(只顯示一個文件爲例):如何在repo中列出所有文件及其提交SHA

serenity:ezdcadmin jarsen$ git ls-files app/views/users/edit.html.erb -s 
100644 e34b0f56f0e2e60393e8bffdbc1abe6e5ef0df54 0 app/views/users/edit.html.erb 

但是當我運行log命令爲同一個文件,沒有commit SHA值相匹配的一個我使用了ls-files命令。

serenity:ezdcadmin jarsen$ git log --oneline app/views/users/edit.html.erb 
9e68c30 Merge differences 
bc8accc bootstrap_buttons & sorting/filtering DONE 
8aaf2c0 Revised user pages. 
0acf2f0 Finished round two of Property pages. 
990b262 Finished User flow - list, add, edit, delete 
5e3069b Adding edit and delete user pages. 

我花了很多時間尋找這個答案,我有點需要找到它並繼續前進。任何幫助你可以給予不勝感激。

回答

2

我會用git日誌堅持:

for i in `git ls-files`; do echo -n "$i "; git log -1 --oneline $i; done | cat 

你的git ls-files -s輸出看到的是,我認爲,哈希,斑ID,而不是提交。

(以上| cat是爲了防止從混帳分頁輸出到終端,如果你打算將輸出重定向到一個文件,不要打擾。)

+0

謝謝安迪,爲這個答案。它給我所有我需要的信息。我只需要對格式化進行一點處理。 – jarsenx

3

在這裏你去,很大程度上基於@AndyRoss工作:

git ls-files | xargs -I file bash -c "git --no-pager log -1 -z --format=%h file; echo \" file\"" 
+0

謝謝科林。你的回答給Andy的答案增加了一些好東西(比如--format參數)。我確信,只要我弄清楚什麼意思,我會成爲一個更好的git用戶。乾杯。 – jarsenx

相關問題