2015-10-07 69 views
2

我正在配置TeamCity服務器,我需要知道如何識別在單次推送中提交的所有文件。確定推進中的所有提交

例:

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

我需要組中的所有這些文件,以1建立這種 「推」 命令。有一個git命令來做到這一點?

謝謝。

+0

如果你'混帳fetch'然後'git merge',git將顯示所有在該合併中更改的文件的列表(對於所有提交的提交合並)。這有幫助嗎? – Lee

+0

你需要知道已更改文件的總集合嗎?或者當有多個這樣的提交時,具體哪些文件被每次提交更改? – Wolf

+0

@Wolf,我需要知道已更改文件的全部集合。 – Beetlejuice

回答

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

您可以使用

$ 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` 
+0

不幸的是我沒有提交範圍。 – Beetlejuice

+0

你有什麼信息?這是推後鉤嗎? –

+0

不,它會在另一個服務器Teamcity服務器上運行。 – Beetlejuice

相關問題