TFS Get Specific Version, Type Label удаляет все файлы, которые не включены в текущую метку - PullRequest
2 голосов
/ 10 марта 2011

У нас есть ситуация, когда сделать метку из 4 файлов (допустим, что весь проект состоит из 10 файлов, поэтому еще 6 файлов не помещаются в нашу новую метку).

Когда выполняется действие Получить определенную версию, а для Типа версии пометить Метку и после этого выбрать нашу новую метку, все файлы из локальной папки, которые не включены в новую метку (в нашем примере еще 6 файлов), удаляются !!! Это очень странная ситуация, поэтому не могли бы вы объяснить сценарий, в котором я хочу получить конкретную версию файлов, помеченных новой меткой, но сохранить существующую версию для всех остальных файлов и сохранить их в локальной папке, поэтому я хочу просто обновить файлы которые находятся в моем новом ярлыке и ничего не делают с файлами, которые не в ярлыке ???

Я полагаю, что в TFS есть некоторые настройки, которые, вероятно, могут помешать удалению этих файлов!

TnX заранее!

Неманья

1 Ответ

6 голосов
/ 10 марта 2011

Это работает как задумано.Будьте очень осторожны с метками в TFS, они немного отличаются от меток, которые вы могли бы использовать в других типах контроля версий.В TFS метки очень изменчивы и могут легко перемещаться только в один файл.Они мощные, но опасные.

Как уже упоминалось, вы можете сделать ярлык для отдельных файлов, и все будет в порядке.Однако, когда вы делаете определенный ярлык для папки, вы просите TFS восстановить все в этой папке до той же версии, которая указана на ярлыке.Если файл в этой папке не помечен, он не будет соответствовать ни одной метке версии и будет удален.

Помните, что один файл / версия в TFS может иметь несколько меток, поэтомуОдин из способов обойти это - пометить все файлы в этом каталоге новой меткой, а затем переместить эту новую метку в ту же ревизию, что и другая метка.

Рассмотрим три файла в $/Project/Folder ...два помечены LABEL_A, а один вообще не помечен.Вы бы сделали что-то вроде этого.

tf label /server:http://tfs:8080 LABEL_B $/Project/Folder /recursive

Это пометит все файлы с помощью LABEL_B.Теперь вам нужно переместить LABEL_B к правильной версии LABEL_A файлов:

tf label /server:http://tfs:8080 LABEL_B $/Project/Folder /recursive /version:LLABEL_A

Обратите внимание, что равно двум L's после /version: ...это говорит TFS переместить эту метку из одной версии файла в другую версию.

Как только это будет сделано, получите конкретную информацию, основанную на LABEL_B, и у вас все получится.

...