Мы используем пакетный файл для генерации кода, и он автоматически проверяет сгенерированные файлы с Team Foundation Server (TFS), чтобы он мог восстановить их. Большинство этих файлов не изменены, но генератор не знает об этом заранее.
Команда "tfs undo" отменяет извлечение, но выдает запрос, если некоторые из них были изменены (что мы не хотим делать). Мы также не хотим сразу проверять сгенерированные файлы.
Есть ли команда (или серия команд) для отмены извлечения всех неизмененных файлов без запроса пользователя?
tfs
version-control
tfvc
Роберт Вагнер
источник
источник
ADD
изменения без запроса (см . Ответ Рэя ).Ответы:
Ознакомьтесь с командой «Отменить без изменений» в Team Foundation Server Power Tools Август 2011 г.
Спасибо Мэтту Флоренсу за обновление ссылки.
Спасибо Рэй Вега за актуальный синтаксис .
источник
Установите Team Foundation Server Power Tools и запустите следующее из командной строки, используя tfpt.exe в корне каталога рабочей области вашего проекта:
c:\myProject> tfpt uu . /noget /recursive
Включение
/noget
настоятельно рекомендуется, поскольку оно предотвращает принудительное получение последних версий всех файлов вашего проекта, что в зависимости от общего количества может занять очень много времени.источник
cd
туда, где находится каталог вашего рабочего пространства (например, мойc:\myProject
), либо явным образом включите его послеuu
(заменив период.
на него)Спасибо, @mike & @ray,
Я хочу сделать это проще.
В VS в меню «Сервис» нажмите «Внешние инструменты».
Нажмите Добавить.
Введите название.
Команда: tfpt.exe
Аргументы: уу. / noget / recursive
Начальный каталог: [вы можете выбрать из кнопки со стрелкой].
Две новые команды добавлены в меню Инструменты.
Используйте их при необходимости.
Наслаждаться,
Офир
источник
Visual Studio будет знать, есть ли у извлеченного файла изменения или их нет.
ВНИМАНИЕ: Этот метод также удаляет новые файлы, то есть файлы, которые еще не зарегистрированы в TFS. Если вы хотите сохранить эти файлы, просто исключите их из набора файлов, которые вы «отменяете».
источник
Be aware that this method also removes added files that are not yet checked in from TFS.
... да, это довольно немедленный дисквалификатор.Обновлен этот вопрос с ответом при работе только с TFS2017 и VS2017 / VS2019 .
Для TFS 2017 не существует мощных инструментов, и старые не могут хорошо работать вместе с ним, но, очевидно, большая часть функциональности перенесена в сам VS2017 или плагины (см. Ниже).
Visual Studio 2017/2019 Расширение
Некоторые действия, такие как отмена неизмененных файлов, перемещены в
расширение для VS2017
расширение для VS2019
Расположение кнопки «Отменить без изменений»:
Известная ошибка
Вы должны открыть «Source Control Explorer» (и оставить его открытым), чтобы «Undo Unchanged» отображался в меню «Action» в представлении «Pending Changes». сообщили здесь .
Расширение интеграции оболочки Windows
Кроме того, вы по-прежнему можете настроить интеграцию оболочки Windows с помощью отдельного установщика, который больше не связан с TFS Power Tools.
Интеграция с оболочкой Windows не работает точно так же, как раньше с powertools, но самые важные действия сработали для меня.
источник
Если вы просто вернете все файлы обратно, которые вы извлекли, TFS будет достаточно умен, чтобы выяснить, какие из них изменились, и включить их только в набор изменений, записанный на сервере.
TFS делает это путем сравнения MD5-хэшей содержимого файлов до и после регистрации.
Все это предполагает, что ваш процесс генерации просто обновляет тот же набор файлов, т.е. у вас никогда не будет случая, когда файл, который был создан в предыдущем поколении, не нужен в следующем поколении (то есть вы хотели бы ожидать удаления для этого файла) или что файлы меняют имя.
Если вашему процессу потенциально может потребоваться удаление файлов, лучше всего посмотреть на команду Team Foundation Power Tools ( tfpt ) и использовать онлайн-команду tfpt, которая будет проверять только файлы, которые были изменены, и будет достаточно умной, чтобы Pend удаляет для любых файлов, которые больше не нужны или изменили имя и Pend добавляет.
Удачи,
Мартин.
источник
Помните, что отмена TFS не вернет значение «Дата изменения» файловой системы. Это очень неприятно, особенно если вы используете такие инструменты, как robocopy, для синхронизации удаленных компьютеров. Даже после отмены извлечения, если вы сохранили файл и обновили значение «Дата изменения», это обновленное значение будет сохраняться даже после отмены извлечения.
источник
Есть пара моментов, касающихся опции uu для tfpt (рекомендуется в большинстве других ответов), которые сначала мне не были понятны. Во-первых, это справка командной строки, доступ к которой можно получить командой
tfpt uu /?
Теперь позвольте мне разбить команду, которая рекомендуется в других ответах.
tfpt uu
указывает, что мы хотим использовать команду «Отменить без изменений»..
указывает (я предполагаю), что текущий рабочий каталог должен использоваться как спецификация файла./noget
гарантирует, что 'get последней версии' не вызывается до удаления неизмененных файлов./recursive
гарантирует, что будет учитываться не только спецификация файла, но и все рекурсивные дочерние папки и файлы. Кажется, это зависит от спецификаций файлов - если ничего не указано, обрабатывается все рабочее пространство.Так что здесь есть пара моментов, которые нужно отметить относительно команды сверху ...
Я обнаружил, что следующая команда работает лучше всего для меня - она будет обрабатывать все рабочее пространство.
tfpt uu /noget
Обратите внимание, что он все еще зависит от рабочего каталога в том, что tfpt использует его, чтобы определить, какое рабочее пространство должно быть обработано. Но пока вы указываете путь к файлу или папке в рабочей области, вы можете идти.
источник
Я вижу подход Рэй ЛайонФанга выше. Не могу комментировать, так как у меня нет представителя. Хотя мне нравится этот подход, так как в Инструменты и т. Д. Не требуется никаких изменений ........
....... есть проблема с этим подходом в том, что при нажатии "No To All" сохраняются несколько файлов, которые не были изменены. Кажется, что-то происходит, как отмена неизмененных файлов до тех пор, пока не попадет первый файл, который действительно был изменен, а затем проигнорирует оставшиеся неизмененные файлы, если это имеет смысл. Я видел этот эффект только время от времени.
Потенциальный обходной путь - следовать вышеуказанному процессу, но вместо нажатия «Нет для всех» нажмите «Нет» для каждого файла. Поскольку это может занять некоторое время в зависимости от количества файлов, с которыми вы работаете, обычно я удерживаю нажатой клавишу «ALT + N», и она просто ускоряет все файлы, удаляя ВСЕ неизмененные файлы.
источник
Насколько я понял, в TFS, если вы извлекаете командный проект, весь проект извлекается, и у вас нет контроля над тем, какие файлы отключены. Если вы хотите запретить проверку определенных файлов, вы можете заблокировать их.
На работе мы все ненавидим TFS.
источник