0

我正面临以下问题。我们有一个 Gated Check-In 设置,这意味着更改不会直接签入,而是会创建一个 Shelveset 并针对该搁置运行构建。仅当构建成功时,才会签入更改。

现在我们将构建定义设置为仅映射构建所需的少量内容,因为我们希望将其运行所需的时间保持在最低限度。现在的问题是,如果您在更改中包含任何未映射的内容,则构建将在GetSources任务中失败,因为它无法取消搁置并给出文件夹映射错误。

为了更好地理解,想象以下结构:
- MyRepository
-- Sources
--- MyCodeFiles
-- Documents
--- SomeDocuments

所以在 BuildDefinition 中我们只映射Sources目录,因为它包含我们需要构建的文件。您现在必须确保永远不要在Sources之外包含任何更改,例如在Documents中,否则构建将立即失败。

我已经搜索并找到了 unshelve 命令的描述:https ://docs.microsoft.com/en-us/vsts/tfvc/unshelve-command?view=vsts

根据这个描述,应该可以指定itemSpec

Identifies the file or folder revisions to unshelve into the current workspace

所以看起来 unshelve 命令实际上会支持“部分”取消搁置。但是,我没有看到任何关于如何通过 vNext 构建实现这一目标的方法,因为我找不到任何有关GetSources任务如何工作的信息。

有什么我错过的,还是当前的实现根本无法实现?

4

1 回答 1

1

恐怕你没有错过任何东西,这在当前的实现中是不可能的。这里有更详细的讨论:

https://github.com/Microsoft/vsts-agent/issues/1087

于 2018-05-17T22:22:02.740 回答