【问题标题】:How to find the number of new commits(git) during the TFS Build如何在 TFS 构建期间查找新提交的数量(git)
【发布时间】:2019-02-13 09:26:35
【问题描述】:

我已按照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)

像这样,

但是,我无法找到一种方法来获取构建定义中新提交的数量

更新 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 变得困难

【问题讨论】:

    标签: git tfs tfsbuild


    【解决方案1】:

    我猜你在找git rev-list

    假设您执行以下步骤:

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

    此时你比 master 提前了两次提交,所以这样做

    git rev-list HEAD ^master
    

    意思是:“列出那些在我的历史中而不是在主人的历史中的提交”。

    在这种情况下打印

    4985ead3183df8388cf8e4
    f3de9ae73e1fb06c23506c
    

    (因为按时间倒序列出它们很有意义)。

    然而这种方法只有在比较没有分歧的分支时才有意义。否则,您将只能获得您的 HEAD 和最后一个共同祖先之间的提交次数,这并不意味着 master 分支自从您当前的 HEAD 分歧以来没有任何新的提交。

    【讨论】:

    • 感谢您的回复,如果我只使用我的历史记录而不是主历史记录中的提交,您的解决方案就可以工作。请查看我的 update 1 我的 TFS 是默认签出具有最新提交 ID 的分支,那么在这种情况下如何获取以前的提交 ID?
    • 所以,您的 TFS 知道它将预先部署的提交 sha,对吗?在这种情况下,您可以在部署脚本中添加一行以捕获先前部署的哈希 (git rev-parse --abbrev-ref HEAD),然后在这两者之间运行我的建议。只要你继续部署主分支,你应该这样做,两个部署不应该分歧
    • 改用git rev-parse HEAD。我习惯使用分支或标签,所以--abbrev-ref 不适合您的用例。请注意,您将最新提交作为第一个参数传递,前一个提交(使用 abbrev-ref 捕获)作为第二个以 ^ 为前缀的提交。否则,旧部署中没有任何新部署没有的提交
    猜你喜欢
    • 2021-03-06
    • 1970-01-01
    • 2013-12-20
    • 2014-11-20
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多