我尝试只打包在过去2分钟内使用内置的Team Foundation Server(TFS)构建功能从同一TFS服务器上的git存储库中更改的文件。
我编写了一个PowerShell脚本来删除LastWriteTime超过2分钟的所有旧文件:
# Get the current working directory
$currentDirectory = Get-Location
# Append the target directory to the current working directory
$targetDirectory = Join-Path $currentDirectory "CFM Reporting Project\SSRS\Reports"
# Get all files in the target directory and its subdirectories
Get-ChildItem -Recurse $targetDirectory |
Where-Object {$_.LastWriteTime -lt (Get-Date).AddMinutes(-2)} |
Remove-Item -Recurse -Force
# List all in target directory and its subdirectories
Get-ChildItem -Recurse $targetDirectory | Format-List -Property FullName,CreationTime,LastWriteTime,CheckinDate -Force
我已经确保构建定义将Clean选项设置为false。
但是,在生成时,不会删除任何文件,因为它们的LastWriteTimes都是生成开始的日期时间:
下面是显示文件的更多日志,因为上面的屏幕截图只显示文件夹:
我用这些资源来指导和探索思想:
- get-a-set-of-files-that-have-been-modified-after-a-certain-date
- tfs-2017-how-build-deliver-only-changed-files
- deploy-only-changed-files-in-tfs-deployment-2012
额外信息
- 部署包由报表存储库组成,而不是Visual Studio解决方案文件
- Microsoft Visual Studio团队基础服务器版本16.131.28601.4
- PowerShell版本1.2.3
有谁能给我一些建议,告诉我如何只打包最近2分钟内发生更改的报告,特别是在LastWriteTime无法正常工作的情况下。
1条答案
按热度按时间tzdcorbm1#
由于您将clean选项设置为false,管道将递增地 checkout 存储库的更改。
从您的屏幕截图有关的日期的文件,它显示的变化时间在文件夹的水平,而不是子文件。
当文件夹中的子文件发生变化时,文件夹的日期也会随之更新。
例如:
子文件:
文件夹:
要仅打包最近2分钟内发生更改的报表,可以检查文件夹子文件的日期,然后打包相关文件。