识别推送中的所有提交

时间:2015-10-07 16:38:32

标签: git teamcity

我正在配置一个TeamCity服务器,我需要知道如何识别一次推送中提交的所有文件。

例:

  • 用户提交1:
    • file1.c中
    • file2.c中
  • 用户提交2:
    • file1.c中
    • fileX.c
    • fileY.c

我需要将所有这些文件分组,以便为​​此“推送”命令生成1个构建。有一个git命令可以做到这一点吗?

感谢。

2 个答案:

答案 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`