如何在TFS生成过程中查找新的提交数(git)

时间:2018-09-08 05:55:00

标签: git tfs tfsbuild

我已遵循此solution来获取文件,这些文件在上一次提交中已修改。

解决方案将类似于

$files=$(git diff HEAD HEAD~ --name-only)
echo $files
$temp=$files -split ' '
$count=$temp.Length
echo "Total changed $count files"
New-Item -ItemType directory -Path $(Build.ArtifactStagingDirectory)\files
For ($i=0; $i -lt $temp.Length; $i++)
{
  $name=$temp[$i]
  echo "this is $name file"
  if (Test-Path "$(Build.SourcesDirectory)\$name")
    {
      Copy-Item $(Build.SourcesDirectory)\$name $(Build.ArtifactStagingDirectory)\files
    }
}

有了这个,我可以从上一次提交中获取修改后的文件,但就我而言,可能有N个新的提交。

所以我看到了一种通过更改

这样的cmd来实现此目的的方法

2次提交

$files=$(git diff HEAD HEAD~2 --name-only)

3次提交

$files=$(git diff HEAD HEAD~3 --name-only)

类似,

但是,我找不到在Build定义中获取新提交次数的方法

更新1

我的TFS Get Sources总是签出具有最新提交ID的相应分支

2018-09-08T06:05:35.8623084Z ##[command]git checkout --progress --force e88c5a4bf29a539c515ca0e5fea104799426026e
2018-09-08T06:05:36.3681977Z Previous HEAD position was 40ac471... Updated xxxxxxx

这也很难找到旧的提交ID

1 个答案:

答案 0 :(得分:1)

我猜您正在寻找git rev-list

假设您执行以下步骤:

  • 你是主人
  • 您创建一个修补程序分支:git checkout -b hotfix_1
  • 您修改并提交了一些文件,其哈希为f3de9ae73e1fb06c23506c
  • 您修改并再次提交。最新哈希为4985ead3183df8388cf8e4

在这一点上,您要比master提前两次提交,所以这样做

git rev-list HEAD ^master

方法:“列出那些在我的历史记录中而不是在大师的历史记录中的提交。”

在这种情况下可以打印

4985ead3183df8388cf8e4
f3de9ae73e1fb06c23506c

(因为按相反的时间顺序列出它们很有意义)。

但是,该方法仅在比较未分支的分支时才有意义。否则,您将只获得HEAD与最后一个共同祖先之间的提交次数,这并不意味着master分支自您的当前HEAD分支以来就没有任何新提交。