Соответствие файла исключает шаблон, работающий в задаче «Копирование файлов», но не в задаче «Удалить файлы» - PullRequest
0 голосов
/ 31 декабря 2018

Как часть моей сборки TFS 2018, я хочу переместить файлы, используя задачи «Копировать файлы» и «Удалить файлы» вместе.Я использую одинаковые шаблоны сопоставления файлов в обеих этих задачах, но, похоже, у меня другое поведение.

Сценарий: Моя сборка TFS копирует артефакты сборки в сетевую папку \\some\path\Beta,В моей сборке этот путь сохраняется как переменная $(NetworkPath).Корневая папка этих артефактов - это номер версии, который, конечно, меняется в каждой сборке.Я хочу очистить эту папку, добавив $(NetworkPath)\PreviousVersions, который содержит все предыдущие версии, так что единственной версией, показанной в бета-версии, является самая последняя сборка.

Моя попытка: Я добавил задачу «Копировать файлы» (сначала) и задачу «Удалить файлы» (во-вторых) в мою сборку.Моя идея - скопировать все в $(NetworkPath) в $(NetworkPath)\PreviousVersions (исключая содержимое $(NetworkPath)\PreviousVersions), прежде чем я сделаю вторую копию, чтобы поместить новую версию в $(NetworkPath).

В определениях задачисходная папка обеих задач - $(NetworkPath), а шаблоны соответствия файлов , которые я определил в поле Содержание для обеих задач:

**\**
!PreviousVersions\**

Целевая папка вЗадача «Копировать файлы», естественно, $(NetworkFolder)\PreviousVersion.

Результаты: При этих путях поиска задача «Копирование файлов» работает правильно - она ​​копирует все, что находится в $(NetworkPath), но нев $(NetworkPath)\PreviousVersions и помещает его в $(NetworkPath)\PreviousVersions.Однако последующая задача «Удалить файлы» удаляет все из $(NetworkPath), включая всю папку $(NetworkPath)\PreviousVersions.Я ожидал, что он будет удалять только файлы и папки в $(NetworkPath), но не в $(NetworkPath)\PreviousVersions.

Что мне здесь не хватает?

1 Ответ

0 голосов
/ 31 декабря 2018

Вот шаблоны обходного файла, которые я нашел для достижения желаемого поведения:

  1. Для задачи «Копировать файлы»: *.*.*.*\**

  2. Для задачи «Удалить файлы»: *.*.*.*

Очевидно, что здесь используется тот факт, что файлы, которые я хотел переместить, имеют корневую папку с номером версии в качестве имени (т.е.2.5.0.11), поэтому это решение не применимо ко многим людям.

Тем не менее, вот некоторые вещи, которые помогли мне сузить мою проблему и решение:

  • globtester - это удобный маленький тестер миниматч-паттернов.

  • При работе с этими двумя задачами установка debug = true на панели очередей сборки даст вам более полезные журналы о том, что на самом деле делают шаблоны соответствия.

Для большинства сценариев приведенный выше комментарий Дэниела Манна применим, и я буду обсуждать такое изменение в будущем.

...