TFS: как отменить проверку немодифицированных файлов в пакетном файле
мы используем пакетный файл для генерации кода, и он автоматически проверяет сгенерированные файлы из Team Foundation Server (TFS), чтобы он мог их регенерировать. Большинство этих файлов не изменяются, но генератор не знает об этом заранее.
команда "TFS undo" отменяет проверку, но запрашивает, если некоторые были изменены (что мы не хотим делать). Мы также не хотим сразу проверять сгенерированные файлы.
есть ли команда (или серия команд) отменить проверку всех немодифицированных файлов без запроса пользователя?
9 ответов
посмотрите на отменить неизмененную команду Team Foundation Server Power Tools Август 2011
c:\myProject> tfpt uu . /noget /recursive
спасибо Мэтт Флоренс за обновление ссылки.
спасибо Рэй Вега за фактический синтаксис.
установить Team Foundation Server Power Tools и выполните следующее из командной строки с помощью tfpt.exe в корневом каталоге рабочего пространства вашего проекта:
c:\myProject> tfpt uu . /noget /recursive
в том числе /noget
настоятельно рекомендуется, так как это предотвращает принудительное "получить последнюю" из всех файлов вашего проекта, которые в зависимости от общего числа могут занять очень много времени.
спасибо @mike & @ray,
Я хочу сделать это проще.
в VS, в меню Сервис, нажмите "внешние инструменты".
Нажмите Кнопку Добавить.
введите название.
: tfpt.exeАргументы: uu . /noget /рекурсивный
начальный каталог: [вы можете выбрать из кнопки со стрелкой].
в инструменты добавлены две новые команды меню.
использовать их при необходимости.
наслаждайтесь,
Офир
- щелкните правой кнопкой мыши на вашем проекте
- выберите Отменить проверку, затем просто нажмите " ОК " или любое оставшееся подтверждение...
- затем, при отмене проверки, для каждого файла, который имеет реальные изменения в нем, приглашение попросит вас подтвердить проверку для этого файла... просто нажмите "нет всем"
Visual studio будет знать, имеет ли извлеченный файл изменения или нет.
предупреждение: этот метод также удаляет новая файлы, т. е. файлы, которые еще не зарегистрированы в TFS. Если вы хотите сохранить эти файлы, просто исключите их из набора файлов, которые вы "отменяете".
Если вы просто проверяете все файлы снова, которые вы проверили, TFS достаточно умен, чтобы выяснить, какие из них изменяются и включать их только в набор изменений, записанный на сервере.
TFS делает это, сравнивая MD5 хэши содержимого файлов до и после регистрации.
все это предполагает, что ваш процесс генерации просто обновляет один и тот же набор файлов, т. е. у вас никогда не будет случая, когда файл, который был создан в предыдущем генерация не требуется в следующем поколении (т. е. вы хотели бы отправить удаление для этого файла) или изменить имя файлов.
Если ваш процесс потенциально может потребоваться удаление файлов, лучшим вариантом может быть посмотреть на Team Foundation Power Tools (tfpt) и используйте онлайн-команду tfpt, которая будет проверять только файлы, которые изменились, и будет достаточно умна, чтобы pend удаляет любые файлы, которые больше не нужны или изменены имя и pend добавляет.
удачи,
Мартин.
остерегайтесь, что TFS undo не вернет значение "дата изменения" файловой системы. Это очень неприятно, особенно если вы используете такие инструменты, как программы для синхронизации удаленных компьютеров. Даже после отмены проверки, если вы сохранили файл, тем самым обновляя значение "дата изменения", это обновленное значение будет придерживаться даже после отмены проверки.
есть несколько моментов, касающихся опции uu для tfpt (рекомендуется в большинстве других ответов), которые сначала не были мне понятны. Во-первых, это справка командной строки, доступ к которой можно получить с помощью команды tfpt uu /?
отменяет избыточные ожидающие изменения. Если состояние элемента с ожидающие изменения такие же, как на сервере, тогда изменение расстегнуть.
использование: tfpt uu [/changeset:changesetnum] [/рекурсивный] [/noget] [filespec...]
- / changeset сравните рабочее пространство с состояниями элементов в версии набора изменений, указанной вместо последней версии
- filespec... Только проверьте перечисленные спецификации для избыточных изменений
- /рекурсивная проверка указанной спецификации с полной рекурсии
- / noget не запускайте get перед проверкой
параметр /изменений не могут быть использованы в спецификации или /рекурсивный.
теперь позвольте мне разбить команду, которая рекомендуется в других ответах.
tfpt uu . /noget /recursive
-
tfpt uu
указывает, что мы хотим использовать команду отменить неизменным'. -
.
указывает (я думаю), что текущий рабочий каталог должен использоваться в качестве filespec. -
/noget
гарантирует, что "получить последнюю версию" не вызывается перед отменой неизмененных файлов. -
/recursive
гарантирует, что не только filespec будет рассматриваться, но все рекурсивные дочерние папки и файлы. Это, по - видимому, зависит от filespec-если нет ни одного, то обрабатывается вся рабочая область.
таким образом, есть несколько вещей, чтобы отметить здесь о команде сверху...
- это зависит от рабочего каталога.
- он не обрабатывает всю рабочую область.
я обнаружил, что следующая команда лучше всего работает для меня - он будет обрабатывать все рабочее пространство.
tfpt uu /noget
обратите внимание, что он по-прежнему зависит от рабочего каталога в том, что tfpt использует его, чтобы определить, какое пространство должно быть обработано. Но пока вы предоставляете путь к файлу или папке в рабочей области, вы можете идти.
Я вижу приближение Рэя Льонфанга сверху. Не могу комментировать, так как у меня нет репутации. Хотя мне нравится этот подход, так как нет никаких изменений, необходимых для инструментов и т. д........
- щелкните правой кнопкой мыши на вашем проекте
- выберите Отменить проверку, а затем просто нажмите кнопку ОК, или любое подтверждение осталось...
- тогда, в то время как отмена проверка, для каждого файла, который имеет реальные изменения в нем, приглашение будет попросите вас подтвердить чек для этого файл... просто нажмите " нет Все"
- Visual studio будет знать, если извлеченный файл имеет изменения или никто. Имейте в виду, что этот метод также удаляет добавленные файлы, которые не но зарегистрировался в TFS...
.......существует проблема с этим подходом в том, что нажатие "нет всем" сохраняет несколько файлов, которые не изменяются. Кажется, он делает что-то вроде отмены немодифицированных файлов, пока не попадет в первый файл, который фактически изменен, а затем игнорирует остальные немодифицированные файлы, если это имеет смысл. Я видел этот эффект лишь однажды.
потенциальная работа-следовать вышеуказанному процессу, но вместо того, чтобы нажимать "нет всем", нажмите "нет" для каждого файла. Поскольку это может занять некоторое время в зависимости от количества файлов, с которыми вы работаете, то, что я обычно делаю, это удерживать "ALT + N", и он просто ускоряет все файлы при отмене всех немодифицированных файлов.
насколько я понял, в TFS, если вы проверяете командный проект, весь проект проверяется, и у вас нет контроля над тем, какие файлы сбиты. Если вы хотите запретить проверки определенных файлов, вы можете заблокировать их.
на работе мы все ненавидим TFS.