2013-05-21 50 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

相关问题