Почему? Почему ПОЧЕМУ TFS не работает постоянно?
Вы бы подумали, что эта функция была бы тщательно протестирована.
То, что я должен сделать, это получить конкретную версию, а затем проверить оба перезаписать файлы с возможностью записи + перезаписать все файлы.
Моя локальная установка испорчена или вы тоже так делаете?
Ответы:
TFS переопределила, что делает «Get Latest». С точки зрения TFS, Получить последние означает получить последнюю версию файлов, но игнорировать те, которые, по мнению сервера, уже находятся в вашей рабочей области. Что для меня и для всех остальных на планете неправильно.
Смотрите эту ссылку: http://blogs.microsoft.co.il/blogs/srlteam/archive/2009/04/13/how-get-latest-version-really-works.aspx
Единственный способ заставить его делать то, что вы хотите, - это получить определенную версию, а затем установить оба флажка «Перезаписать ...».
источник
Иногда
Get specific version
даже установка обоих флажков не даст вам последний файл. Вы, вероятно, внесли изменения в файл и хотите отменить эти изменения, повторно получив последнюю версию. Ну ... вот для чего,Undo pending changes
а не для целиGet specific version
.Если сомневаешься:
И это мой любимый, который я только что обнаружил:
следите в
Output
окне за сообщениями, такими как это:Предупреждение. Невозможно обновить R: \ TFS-PROJECTS \ www.example.com \ ExampleMVC \ Example MVC \ Example MVC.csproj, так как у вас есть ожидающее редактирование.
Это критическое сообщение появляется в окне вывода. Других уведомлений нет! Ничего в ожидающих изменениях и никакое другое диалоговое сообщение, сообщающее, что файл, который вы только что явно запросили, не был получен! И да - вы решаете это, просто запустив
Undo pending changes
и получив файл.источник
Undo pending changes
) работал на меня.TFS, как и некоторые другие поставщики системы управления версиями, такие как Perforce, делают это, поскольку система знает, какая последняя версия была у вас успешно получена, поэтому последние изменения превращаются в «получить изменения после x». Если вы играете по его правилам и действительно проверяете вещи перед их редактированием, вы не путаете вопросы, а «get last» действительно делает то, что говорит.
Как вы уже видели, вы можете заставить его переоценить все, что имеет гораздо большую пропускную способность, но ведет себя ближе к тому, как раньше использовал SourceSafe.
источник
Трудно ответить на утверждение без примеров того, как оно не работает, но важно понимать, что TFVC (в режиме «Рабочая область сервера», который был механизмом до TFS 2012) не проверяет состояние вашей локальной файловой системы . TFVC Server Workspaces - это система типа «checkout-edit-checkin», в которой это задуманно, намеренное решение, принятое для значительного уменьшения количества файловых операций ввода-вывода, необходимых для определения состояния вашего рабочего пространства. Вместо этого информация о рабочей области сохраняется на сервере.
Это позволяет TFVC Server Workspaces очень эффективно масштабироваться до очень больших кодовых баз. Если вы используете кодовую базу в несколько гигабайт (например, Visual Studio или дерево исходных кодов Windows), тогда вашему клиенту не нужно сканировать вашу локальную файловую систему, чтобы найти файлы, которые могли измениться, потому что у вас есть контракт с TFS. будет явно проверять файл, когда вы хотите его редактировать.
Предполагается, что вы не помечаете файл как доступный только для записи и изменяете его без предварительной явной проверки. Если вы пойдете по этому пути, то сервер не будет знать, что вы внесли изменения в ваш файл, и выполнение операции «Получить последнюю версию» не обновит локальное рабочее пространство, поскольку вы не сообщили серверу, что сделали меняется.
Если вы делаете подрывать этот механизм , то вы можете использовать
tfpt reconcile
команду , чтобы изучить локальное рабочее пространство для изменений , которые вы сделали на месте.Если вы обнаружите, что используете «Get Specific Version» и выбираете опции «force» и «overwrite», то вполне вероятно, что вы привыкли обходить все принудительные меры, которые TFS реализовал, чтобы не причинить вам вреда, и вы должны, вероятно, рассмотреть локальные рабочие области TFVC.
Локальные рабочие пространства TFVC предоставляют систему управления версиями типа edit-merge-commit, что означает, что вам не нужно явно извлекать файлы перед их редактированием, и они не доступны только для чтения на диске. Вместо этого вам просто нужно отредактировать файл, и ваш клиент просканирует файловую систему, заметит изменение и представит его как ожидающее изменение.
Локальные рабочие пространства TFVC рекомендуются для небольших проектов, не требующих детального контроля разрешений, поскольку они обеспечивают гораздо более приятный рабочий процесс. Вы не обязаны быть в сети, и вам не нужно явно проверять файлы перед их редактированием.
Локальные рабочие пространства TFVC по умолчанию используются в TFS 2012, и если они не включены для вас, вам следует обратиться к администратору сервера. (Организации с очень большими кодовыми базами или строгими требованиями аудита могут отключить локальные рабочие области TFVC.)
В превосходной книге Эрика Синка « Управление версиями на примере» описаны различия между системами checkout-edit-checkin и edit-merge-commit и тем, когда одна из них более подходящая, чем другая.
Книга Professional Team Foundation Server 2013 также содержит отличную информацию о различиях между рабочими пространствами TFVC Server и локальными рабочими пространствами TFVC. Документация MSDN и блоги также предоставляют подробную информацию:
источник
Team Foundation Server (TFS) отслеживает свою локальную копию в скрытом каталоге с именем $ TF. Когда вы запускаете «Получить последнюю версию», TFS просматривает эту папку и видит, у меня последняя копия или нет. Если это произойдет, он не будет загружать последнюю копию. Неважно, если у вас есть оригинальный файл или нет. На самом деле вы могли удалить всю папку (как в моем случае), и TFS не будет извлекать последнюю копию, потому что она не просматривает фактический файл, а скрытый каталог, в котором записываются изменения. Недостаток этого дизайна в том, что все, что сделано вне системы, не будет записано в TFS. Например, вы можете зайти в проводник Windows, удалить папку или файл, и TFS не распознает его. Это будет полностью слепым. По крайней мере, я ожидаю, что Windows не позволит вам удалить этот файл, но это так!
Один из способов принудительного использования последней копии - удалить скрытую папку $ TF вручную. Для этого перейдите в командную строку и перейдите в корневую папку, в которую был извлечен проект, и введите эту команду
Если вы хотите просто проверить скрытую папку, вы можете сделать это с помощью
Примечание: если вы это сделаете, tf будет думать, что у вас нет локальной копии, даже если она есть в файлах, и он снова синхронизирует все.
Внимание: используйте этот метод на свой страх и риск. Пожалуйста, не используйте его на критических работах.
источник
«Получить последнюю версию» по умолчанию загружает только те файлы, которые были изменены на сервере с момента последнего запуска «Получить последнюю версию». TFS отслеживает загруженные файлы, поэтому не тратит время на загрузку той же версии файлов снова. Если вы изменяете файлы за пределами Visual Studio, это может вызвать проблемы согласованности, которые, как вы видите, вы видите.
источник
К сожалению, в TFS 2008 должна быть одна или несколько ошибок, поскольку эта проблема регулярно возникает на компьютерах разработчиков и создает серверы, на которых я тоже работаю.
Я могу сделать Get Latest, я могу видеть в списке истории проекта, что были коммиты после того, как я последний раз делал Get Latest, я не касался файлов на диске каким-либо образом, но после того, как функция «Get Latest» имеет завершено, когда я проверяю вкладку TFS, некоторые файлы все еще говорят, что они не самая последняя версия.
Очевидно, что TFS может определить, что у меня есть старые файлы локально, так как в списке сказано так. Тем не менее, Get Latest не удается это сделать, получить последнюю версию. Если я сделаю то, что вы сделали, используйте версию Get Specific и отметьте два флажка внизу диалогового окна, тогда файлы будут восстановлены.
Мы изменили наши серверы сборки, чтобы вместо них всегда использовать функцию типа Get Specific version, поэтому эта часть теперь работает, но так как наш сервер сборки (TeamCity) также полагается на проверку наличия изменений в файлах, чтобы начать сборку иногда он переходит в режим «ничего не изменилось, здесь ничего не видно, двигайтесь дальше» и ничего не предпринимает, пока мы принудительно не запустим конфигурацию сборки.
Обратите внимание, что я столкнулся с этой проблемой на компьютере, к которому никогда не прикасались, за исключением получения последней версии + сборки, оба вручную, так что нет ничего, что могло бы повлиять на файлы. Просто TFS запутался.
Однажды, когда это произошло, я убедился, что файлы на диске действительно были двоичными, идентичными версии, полученной ранее, поэтому ручное вмешательство с файлами не было сделано.
Кроме того, я не вижу, как TFS может «знать», изменились ли файлы на диске или нет, фактически не просматривая содержимое. Если одна часть TFS может видеть, что файлы действительно не являются последней версией, тогда версия Get Latest должна абсолютно точно иметь самую последнюю версию. Это в связи с комментариями к другим ответам здесь.
источник
Это может произойти из-за того, что вы входите в TFS как один и тот же пользователь, а имя рабочего пространства (по умолчанию основанное на имени компьютера) также совпадает, поэтому TFS считает, что вы находитесь на том же компьютере и в том же рабочем пространстве, поэтому у вас уже есть последняя версия файлы, поэтому он не получит их для вас.
попробуйте переименовать свою машину и создать новую рабочую область как новую машину.
источник
У меня была та же проблема с Visual Studio 2012. Независимо от того, что я сделал, он не получил код из системы контроля версий TFS.
В моем случае причиной было сопоставление папки + подпапки из источника управления отдельно, но с тем же деревом в моем локальном HD.
Решением было удаление сопоставления подпапок с помощью окна «Управление рабочими пространствами».
источник
Большинство проблем, с которыми я столкнулся, когда разработчики жалуются на то, что Get Latest не выполняет то, что ожидали, связаны с тем, что они выполняют Get Latest не из Source Control Explorer, а из Solution Explorer. Обозреватель решений получает только те файлы, которые являются частью решения, и игнорирует все, что может потребоваться файлам в решении и, следовательно, является частью системы контроля версий, в то время как Обозреватель контроля версий сравнивает ваше локальное рабочее пространство с хранилищем на сервере, чтобы определить, какие файлы нужны.
источник
Когда я сталкиваюсь с этой проблемой, не получая последнюю версию и несовпадение версий, я сначала делаю «Получить определенную версию», устанавливаю ее на changeset и вставляю 1. Это затем удалит все файлы из вашей локальной рабочей области (для этого проекта, папки, файл, и т.д.), и он также будет иметь обновление TFS, чтобы он знал, что теперь у вас нет загрузки версии. Затем вы можете сделать «Получить последние» и альт, у вас будет на самом деле последний
источник
Это может произойти, когда вы используете TFS с двух разных компьютеров с одной и той же учетной записью. Если это так, вы должны сравнить, чтобы увидеть измененные файлы и проверить их, затем получить последние, а затем отменить ожидающие изменения, чтобы удалить извлечение.
источник
Это сработало для меня:
1. Выйдите из Visual Studio
2. Откройте командное окно и перейдите к папке: «% localappdata% \ Local \ Microsoft \ Team Foundation \»
3. Перейдите к подпапкам для каждой версии и удалите подпапку «кеш» и его содержимое
4. Перезапустите Visual Studio и подключитесь к TFS.
5. Протестируйте Получить последнюю версию.
источник
просто хочу добавить TFS MSBuild не поддерживает специальные символы на папках то есть "@"
В прошлом я сталкивался с тем, что одна из папок нашего проекта называлась External @ Project1.
мы создали определение сборки TFS для запуска пользовательского файла msbuild, тогда папка рабочей области не получает никакого содержимого из папки External @ Project1 во время получения рабочей области последней версии. Кажется, что tfs get терпит неудачу, но не показывает никакой ошибки.
после проб и ошибок и переименования папки в _Project1. Вуаля, мы получили файлы в папке (_Project1).
источник
Инструмент: Электроинструменты TFS
Источник: http://dennymichael.net/2013/03/19/tfs-scorch/
Команда: tfpt scorch / recursive / удаляет C: \ LocationOfWorkspaceOrFolder
Откроется диалоговое окно, в котором вас попросят удалить или загрузить список файлов. Выберите или отмените выбор файлов соответственно и нажмите ок. Внешний вид в сетке (CheckBox, FileName, FileAction, FilePath)
Причина. TFS будет сравнивать только элементы в рабочей области. Если изменения были внесены за пределы рабочей области, TFS не будет о них знать.
Надеюсь, кто-то найдет это полезным. Я нашел этот пост после удаления нескольких папок в разных местах. Не помню, какие папки я удалил, исключил обычную опцию Force Get / Replace, которую я бы использовал.
источник
В моем случае, получить конкретную версию, даже не установив флажки и отменить все ожидающие изменения.
Проверил рабочие места. Изменить текущее рабочее пространство. Проверьте все пути. Путь решения был неверным и указывал на удаленную папку.
Исправил путь и получить последний работал нормально.
источник
Нажмите правой кнопкой мыши: « Дополнительно»> «Получить конкретную версию» . Выберите «Последняя версия» и теперь, что важно, отметьте две проверки:
Проверки:
перезаписать записываемые файлы, которые не проверены
Перезаписать все файлы, даже если локальная версия соответствует указанной версии
источник