TFS Get Specific Version, Type Label удалить все файлы, которые не включены в текущую метку

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

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

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

TnX заранее!

Неманья


person Nemanja Vujacic    schedule 10.03.2011    source источник
comment
Похоже, вы выполняете «Получить определенную версию» в родительской папке, вместо этого щелкните файлы, которые помечены, а затем выполните «Получить определенную версию».   -  person Jehan33    schedule 10.03.2011
comment
Точно, можно ли получить конкретную версию проекта (родительскую папку) и не заботиться о том, какие файлы помещены в метку, которую вы хотите получить? Например, если у меня есть 50 файлов в разных подпапках, могу ли я просто щелкнуть родительскую папку и получить все эти файлы, сохранив существующие локальные файлы, которые не были изменены?   -  person Nemanja Vujacic    schedule 10.03.2011
comment
Хотите знать, как вы создаете этикетку. В опции «Применить метку» вы можете выбрать папку или файл для метки, но не можете выбрать несколько и применить метку. Если у вас есть 50 файлов в разных подпапках, то вы либо применяете метку к родительской папке, которая состоит из разных вложенных папок, либо выбираете одну вложенную папку / файл и создаете метку, затем редактируете метку и добавляете или удаляете файлы / папки по мере необходимости. Как ты это делаешь?   -  person Jehan33    schedule 10.03.2011
comment
Если вы используете щелчок правой кнопкой мыши по файлу или папке, тогда вы можете применить метку только к одному элементу, но когда я хочу применить ее к нескольким файлам одновременно, чем переходите в окно «Ярлык» (Файл- ›Управление исходным кодом-› Метка- › Найдите метку и дважды щелкните выбранную метку), где находится кнопка «Добавить элемент», которую я использую для добавления нескольких файлов.   -  person Nemanja Vujacic    schedule 11.03.2011
comment
Только что это случилось со мной ... очень раздражает! Я использую Pandora Recovery, чтобы попытаться восстановить файлы, потому что у меня нет другой резервной копии.   -  person mellamokb    schedule 18.06.2014


Ответы (1)


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

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

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

Рассмотрим три файла в _1 _... два помечены знаком 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 после _8 _..., это указывает TFS переместить эту метку из одной версии файла в другую.

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

person Robaticus    schedule 10.03.2011
comment
Спасибо за подробный ответ! Не могли бы вы еще раз объяснить вторую команду? Означает ли это, что он применит LABEL_B к версии файла, помеченной LABEL_A? Я полагаю, что первая команда применяет LABEL_B к последним версиям всех файлов, но что я могу сделать в тех случаях, когда хочу пометить какую-то другую (старую) версию файла (если у меня были проверки, которые еще не хочу маркировать, т. Е. это не для производственной версии, но я делаю этикетку для производственной версии)? Давайте рассмотрим ситуацию, когда у каждого файла есть 3 разных набора изменений, и я хочу использовать разные версии для каждого. - person Nemanja Vujacic; 11.03.2011
comment
@Nemanja - вам нужно будет как можно точнее указать свой путь и команды версии. Если вы хотите применить (или переместить) метку к определенной версии набора изменений файла, используйте /version:C999999, где 9 заменяются номером вашего набора изменений. Имея дело с маркировкой файлов, я всегда стараюсь сначала применить ее к самому широкому набору файлов, а затем при необходимости перенести эту метку на другие версии файлов. - person Robaticus; 11.03.2011