Я пишу скрипт, который будет запускать сборку только в случае изменения исходного кода. Мне нужно знать, происходит ли изменение с момента запуска сборки. Это работало, потому что папка не удалялась, поэтому было легко определить, было ли изменение, но теперь все удаляется каждый раз, когда выполняется сборка. Я подумал об использовании команды истории TFS TF для запроса последнего набора изменений или последних двух наборов изменений, но возникли проблемы с разбором только номера набора изменений из вывода. Я также рассмотрел использование команды changeet. Есть ли какой-либо параметр командной строки, который я могу использовать для ответа на вопрос, произошло ли изменение с даты или номера набора изменений?Использование истории TFS TF для определения последнего набора изменений
ответ
Как упоминал Андрей, TFS имеет встроенную встроенную функциональность интеграции. Однако, да, с тех пор, как определенная точка, это дата или набор изменений, легко запросить набор изменений. Вы хотите, чтобы взглянуть на историю между этой ревизией и последнее:
tf history <folder> /version:C<changeset>~T /noprompt /recursive
Если только выходная линия ревизия вы запрашиваются, то, очевидно, не было никаких изменений с этой фиксированием. В противном случае вы увидите дополнительные изменения, по одному на строку.
Да, это говорит мне изменения, в том числе и опрашиваемые. Как я могу разобрать номер на выходе? Есть ли способ проанализировать использование командных команд? –
Существует адаптер, который может интегрировать BuildForge и Microsoft Team Foundation Server. Вот URL, если вы заинтересованы ... http://www-304.ibm.com/partnerworld/gsd/solutiondetails.do?&solution=46360&lc=en
ССТ адаптер Automatra для Rational Build Forge обеспечивает непрерывную интеграцию (CI) и создание отчетов.
Адаптер TFS дополнительно обеспечивает возможности CI как на уровнях источника TFS (Change Set), так и на уровне WorkItem. Отчеты из коробки предоставляют отчет о четких отчетах о материалах (BOM), которые могут быть доставлены потребителю ваших сборок ниже по потоку.
Наконец, как вы должны знать, сила Build Forge - это способность моста строить с развертыванием (и за его пределами). Очевидно, что благодаря этим возможностям непрерывной интеграции вы сможете двигаться вперед с непрерывной доставкой, которую, я думаю, вы хотите достичь.
Отрывок из моего командного файла для сборки.
set _aPath="f:\TFS\a"
set _TFPath="c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE"
...
pushd %_aPath%
%_TFPath%\TF.exe history . /r /noprompt /stopafter:1 /Version:W > temp
FOR /f "tokens=1" %%a in ('findstr /R "^[0-9][0-9]*" temp') do set _BuildVersion=10.3.0.%%a
del temp
popd
использует временный файл, но работает хорошо.
Обратите внимание, что вам не нужен промежуточный файл, например: 'tf vc info d: \ w \ code04 \ Server.sln | findstr/R "Последнее изменение: [^ \ r \ n] + r \ n" ' –
скрипт PowerShell Мой, который называется GetVcsRevision.ps1
и находится в подпапках VCS Root:
param (
[string]$PathToTF='C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\TF.exe'
,[Parameter(Mandatory=$true)][string]$Login
,[Parameter(Mandatory=$true)][string]$Password
)
$result = &$PathToTF @("history","/stopafter:1","/recursive","..\*","/login:""$Login"",""$Password""") 2>&1 3>&1
if ($result.GetType().Name -eq "Object[]")
{
<# $result format is:
Changeset User Date Comment
--------- ----------------- ---------- ----------------------------------------
26038 user 24.06.2014 Sample commit comment
$result[2] is:
26038 user 24.06.2014 Sample commit comment
$result[2].Split(" ")[0] is:
26038
#>
$result[2].Split(" ")[0]
}
else
{
"0"
}
Он посылает последний номер, чтобы из набора изменений трубы. Если что-то пойдет не так, то это число 0
.
Вы можете сделать функцию из этого скрипта и вызвать его в сценарии сборки.
К последнему номеру без набора изменений локальной рабочей области, пожалуйста, используйте следующую команду:
tf history /collection:"http://server:8080/tfs/Collection" "$/Project" /recursive /stopafter:1 /noprompt /login:domain\user,password
Я так сильно вас люблю. – Yogurtu
Моя команда одна линия:
for /f "usebackq tokens=*" %%a in (`tf history . /recursive /noprompt /stopafter:1 /version:T ^| powershell -Command "$input | ? { $_ -imatch '^(\d+)\s+' } | %% { $matches[0].Trim() } | Select-Object -First 1"`) do set TIP_CHANGESET=%%a
после выполнения TIP_CHANGESET окр. переменная содержит набор изменений чата
- 1. Использование TFS API для откат набора изменений
- 2. TFS - получить диапазон набора изменений
- 3. Team Foundation Server - TF Получить с номером набора изменений
- 4. Откат TFS до набора изменений
- 5. Извлечение TFS Изменение набора изменений в excel
- 6. Ошибка TF: Нет изменений для проверки
- 7. Как откат родительского набора изменений от дочерней ветви в TFS?
- 8. TFS. Номер набора изменений. «Получить версию»
- 9. TFS получить номер набора изменений от метки
- 10. tfs получить файлы между диапазоном набора изменений
- 11. Слияние набора изменений родительского родителя в TFS
- 12. Откажитесь от набора изменений в tfs
- 13. создавать последние источники с помощью набора изменений в tfs
- 14. Использование набора изменений для другого решения
- 15. Откат набора изменений из командной строки только в TFS?
- 16. Build Solution на TFS с использованием определенного набора изменений
- 17. Откат всего решения/проекта для конкретного набора изменений в TFS?
- 18. Получение TFS для установки набора изменений в версии сборки
- 19. TFS - отображать все обзоры кода для диапазона набора изменений
- 20. Как контролировать приоритет набора изменений в tfs для автоматических патчей?
- 21. git-tf с отдельными репозиториями
- 22. Использование Git-tf для проекта iOS
- 23. Кэширование учетных данных TFS для git-tf
- 24. TFS - аннотировать - просмотреть изменения до последнего изменения
- 25. TFS 2010 - слияние наборов изменений
- 26. TFS Просмотр истории для specificc User
- 27. Как найти текстовые изменения в истории TFS 2005?
- 28. TFS: сравнение наборов изменений
- 29. Отображение истории изменений из таблицы истории
- 30. Как очистить «измененное» состояние в TFS для расписания сборки или изменить время набора изменений?
Во-первых, Team Build имеет функцию, которая делает это уже. Вы используете что-то еще? Во-вторых, это _any_ изменение в репозитории, достаточное для запуска сборки, или вам нужно выяснить, есть ли изменение в каком-то конкретном каталоге или каталогах? – Andrew
Да, я использую другую систему, специально создаю. Мы используем адаптер TFS для сборки CI, но мы хотим только запустить сборку, если есть обновление. Поскольку сборка является специфичной для отрасли, я только хочу знать, есть ли изменения в этой ветке/папке. –
Ответ от Guanghui Qin, работает очень хорошо, очень быстро, и вам не нужно рабочее пространство для него. – Yogurtu