我正在配置一个TeamCity服务器,我需要知道如何识别一次推送中提交的所有文件。
例:
我需要将所有这些文件分组,以便为此“推送”命令生成1个构建。有一个git命令可以做到这一点吗?
感谢。
答案 0 :(得分:2)
您可以显示git日志并使用结果:
列出最后一次提交:
git log --name-status -p -1
result:
commit d1bc9d55024e4e3e6acc087ba223bd7951b555fa
Author: unknown <johndoe>
Date: Wed Oct 7 16:20:27 2015 -0300
task1000 commit message here...
M file1.c
M file2.c
现在,在消息中列出所有提交“task1000”的提交:
git log --name-status --grep="task1000"
result:
commit d1bc9d55024e4e3e6acc087ba223bd7951b555fa
Author: unknown <johndoe>
Date: Wed Oct 7 16:20:27 2015 -0300
task1000 commit message here...
M file1.c
M file2.c
commit 998a74eaa752f6c98c32ec9a412b219afb7cc891
Author: unknown <johndoe>
Date: Wed Oct 7 16:19:56 2015 -0300
task1000 more one commit for this task..
M file1.c
M fileX.c
M fileY.c
现在你必须使用这个结果。
您需要关注服务器中的每个提交。
答案 1 :(得分:1)
您可以使用
$ git diff --name-only <your commit range>
例如,
$ git diff --name-only HEAD~3..HEAD
config/sidekiq.yml
deploy/before_migrate.rb
deploy/before_restart.rb
您可以在post-receive
挂钩(said in the docs)中使用它,如下所示:
#!/usr/bin/env ruby
$oldrev = ARGV[1]
$newrev = ARGV[2]
`git diff --name-only #{$oldrev}..#{$newrev} > listing.txt`