代码之家  ›  专栏  ›  技术社区  ›  Jayendran

如何在TFS构建期间找到新提交的数量(git)

  •  0
  • Jayendran  · 技术社区  · 6 年前

    我关注过这个 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个新的提交。

    2项承诺

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

    $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
    

    1 回复  |  直到 6 年前
        1
  •  1
  •   ffflabs    6 年前

    我猜你在找 git rev-list

    假设您执行以下步骤:

    • 你是主人
    • 创建修补程序分支: git checkout -b hotfix_1
    • f3de9ae73e1fb06c23506c
    • 修改并再次提交。最新哈希为 4985ead3183df8388cf8e4

    在这一点上,你比师父提前了两次,所以你要这样做

    git rev-list HEAD ^master
    

    意思是:“列出那些在我的历史上,而不是在硕士的历史上的承诺”。

    在这种情况下

    4985ead3183df8388cf8e4
    f3de9ae73e1fb06c23506c
    

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

    然而 master 自从您当前的主管出现分歧以来,分支没有任何新的提交。