Почему TFS не получает последние обновления?

Почему Почему ПОЧЕМУ не работает TFS с постоянной работой?

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

Что мне нужно сделать, получить конкретную версию, а затем проверить как перезаписывать файлы с возможностью записи, либо перезаписать все файлы.

Является ли моя локальная настройка испорченной или вы тоже это делаете?

Ответ 1

TFS переопределило то, что делает "Get Latest". В терминах TFS Get Latest означает получение последней версии файлов, но игнорируйте те, которые, по мнению сервера, уже находятся в вашем рабочем пространстве. Который мне и почти всем остальным на планете ошибочен.

Смотрите эту ссылку: http://blogs.microsoft.co.il/blogs/srlteam/archive/2009/04/13/how-get-latest-version-really-works.aspx

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

Ответ 2

Иногда Get specific version , даже проверяя оба флажка, вы не получите последний файл. Вероятно, вы внесли изменения в файл и хотите отменить эти изменения, переустановив последнюю версию. Ну... что то, что Undo pending changes для целей, а не для Get specific version.

Если есть сомнения:

  • отменить ожидающую проверку файла (ов)
  • выполните сравнение, чтобы убедиться, что ваш файл соответствует ожидаемой версии
  • запустить рекурсивный "сравнить" по всему вашему проекту, чтобы увидеть, что еще не так.
  • следить за окном ожидающих изменений, и иногда вам может потребоваться проверить "взять версию сервера" для устранения несовместимого ожидающего изменения

И этот мой любимый, который я только что обнаружил:

  • Следите в окне Output для сообщений, таких как:

    Предупреждение - Невозможно обновить R:\TFS-PROJECTS\www.example.com\ExampleMVC\Пример MVC\Пример MVC.csproj, поскольку у вас есть ожидающее редактирования.

Это сообщение критическое появляется в окне вывода. Никаких других уведомлений! Ничего в ожидающих изменениях и никакое другое диалоговое сообщение, сообщающее вам, что файл, который вы только что запросили, не был получен! И да - вы разрешаете это, просто запустив Undo pending changes и получив файл.

Ответ 3

TFS, как и некоторые другие поставщики управления версиями, такие как Perforce, делают это, поскольку система знает, что последняя версия, которую вы успешно получили, так что получите последние изменения в "получить изменения с x". Если вы играете по своим правилам и на самом деле проверяете вещи перед их редактированием, вы не путаете вопросы, а "получите последние" действительно поступаете так, как говорится.

Как вы видели, вы можете заставить его переоценить все, что имеет гораздо большую пропускную способность, но ведет себя ближе к тому, как используется SourceSafe.

Ответ 4

Трудно ответить на утверждение без примеров того, как оно не работает, но важно понимать, что TFVC (в режиме "Рабочая область сервера", который был механизмом до TFS 2012) не проверяет состояние вашей локальной файловой системы. TFVC Server Workspaces - это система типа "checkout-edit-checkin", в которой это задуманно, намеренное решение, принятое для значительного уменьшения количества файловых операций ввода-вывода, необходимых для определения состояния вашего рабочего пространства. Вместо этого информация о рабочей области сохраняется на сервере.

Это позволяет рабочим областям TFVC-сервера очень эффективно масштабироваться до очень больших кодовых баз. Если вы работаете в базе кода размером в несколько гигабайт (например, 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 и блоги также предоставляют подробную информацию:

Ответ 5

Team Foundation Server (TFS) отслеживает свою локальную копию в скрытом каталоге с именем $TF.Когда вы выдаете "Получить последнюю версию", TFS просматривает эту папку и видит погоду у меня последняя копия или нет. Если это произойдет, она не будет загружать последнюю копию. Неважно, есть ли у вас исходный файл или нет. Фактически вы могли бы удалить всю папку (как в моем случае), и TFS не будет получать последнюю копию, потому что она не просматривает фактический файл, а скрытую директорию, в которой он записывает изменения. Недостатком этой конструкции является то, что все, что сделано вне системы, не будет записано в TFS. Например, вы можете войти в проводник Windows, удалить папку или файл, и TFS не узнает ее. Он будет полностью слеп. По крайней мере, я бы ожидал, что Windows не позволит вам удалить этот файл, но он делает это!

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

rd/s $tf                    // remove $TF folder and everything inside it

Если вы хотите просто проверить скрытую папку, вы можете сделать это, используя

dir /ah                    // display hidden files and folders

Примечание. Если вы это сделаете, tf подумает, что у вас нет локальной копии, даже если у вас есть ее в файлах, и она снова синхронизирует все.

Внимание: используйте этот метод на свой страх и риск. Пожалуйста, не используйте его для критической работы.

Ответ 6

"Получить последнюю версию" по умолчанию будет загружать только файлы, которые были изменены на сервере с момента последнего запуска "Получить последнюю версию". TFS отслеживает файлы, которые вы загружаете, чтобы не тратить время на повторную загрузку той же версии файлов. Если вы изменяете файлы за пределами Visual Studio, это может вызвать проблемы с консистенцией, которые вы видите, как будто вы видите.

Ответ 7

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

Я могу сделать Get Latest, я могу увидеть в списке истории проекта, что произошли коммиты после того, как я последний раз занимался Get Latest, я никак не коснулся файлов на диске, но после "Get Latest" функция завершилась, когда я проверяю вкладку TFS, некоторые из файлов все еще говорят, что они не являются последней версией.

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

Мы изменили наши серверы сборки, чтобы вместо этого использовать функцию типа Get Specific, поэтому эта часть теперь работает, но поскольку наш сервер сборки (TeamCity) также полагается на проверку, были ли изменения в файлах для того, чтобы пинать от сборки, иногда он уходит в "ничего не изменилось, ничего не видит здесь, двигается вперед" и ничего не делает, пока мы не принудительно запустим конфигурацию сборки.

Обратите внимание, что я столкнулся с этой проблемой на машине, которая никогда не трогалась, за исключением того, что вы получаете последнюю + сборку, как вручную, так и там ничего не мешает. Это просто TFS запутался.

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

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

Ответ 8

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

попробуйте переименовать ваш компьютер и создайте новое рабочее пространство в качестве новой машины.

Ответ 9

Самая глупая вещь, которую я вижу, это то, что "Получить последнюю версию" ничего не делает, даже когда локальный файл был удален по какой-либо причине. Я бы подумал, что проверка того, что локальный файл по крайней мере существует, была довольно очевидной задачей. Но почему это не может просто сравнить отметку времени каждого файла на сервере с тем, как вы последний раз делали get (который может быть где-то локально локализован) озадачивает меня.

Ответ 10

У меня была такая же проблема с Visual Studio 2012. Независимо от того, что я сделал, он не получил код из источника управления TFS.

В моем случае причиной было сопоставление папки + вложенной папки из исходного элемента управления отдельно, но к тому же дереву в моем локальном HD.

В решении было удалено отображение подпапки, используя окно "Управление рабочими пространствами".

Ответ 11

Большинство проблем, которые я видел с разработчиками, жалуются, что Get Latest не делает то, что они ожидают, из-за того, что они выполняют Get Latest из Solution Explorer, а не из Source Control Explorer. Обозреватель решений получает только файлы, которые являются частью решения, и игнорирует все, что может потребоваться для файлов в рамках решения, и, следовательно, часть элемента управления источником, в то время как проводник Source Control сравнивает вашу локальную рабочую область с репозиторием на сервере, чтобы определить, какие файлы необходимы.

Ответ 12

КОГДА я сталкиваюсь с этой проблемой, так как он не получает последние и несоответствия версии. Сначала я делаю "Получить конкретную версию", чтобы установить его в набор изменений и поставить в 1. Это приведет к удалению всех файлов из вашей локальной рабочей области (для этого проекта, папка, файл и т.д.), и он также будет иметь обновление TFS, чтобы он знал, что у вас нет NO VERSION DOWNLOADED. Затем вы можете сделать "Получить последний" и альт, у вас будет последняя версия

Ответ 13

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

Ответ 14

Это сработало для меня:
1. Выйти из Visual Studio
2. Откройте командное окно и перейдите к папке: "% localappdata%\Local\Microsoft\Team Foundation"

3. Перейдите в подпапки для каждой версии и удалите кеш-память подпапки и ее содержимое
4. Перезапустите Visual Studio и подключитесь к TFS.
5. Проверьте получение последней версии.

Ответ 15

просто хочу добавить TFS MSBuild не поддерживает специальные символы в папках i.e. "@"

В прошлом я столкнулся с тем, что одна из наших папок проекта называлась External @Project1

мы создали определение сборки TFS для запуска пользовательского файла msbuild, тогда папка рабочего пространства не получает никакого содержимого в папке External @Project1 во время рабочей области, последней. Кажется, что tfs get не работает, но не показывает никаких ошибок.

после некоторых проб и ошибок и переименования папки в _Project1. Мы получили файлы в папке (_Project1).

Ответ 16

Инструмент: TFS Power Tools

Источник: http://dennymichael.net/2013/03/19/tfs-scorch/

Команда: tfpt scorch/recursive/delete C:\LocationOfWorkspaceOrFolder

Появится диалоговое окно, в котором будет предложено удалить или загрузить список файлов. Выберите или Отмените выбор файлов и нажмите ok. Внешний вид в сетке (CheckBox, FileName, FileAction, FilePath)

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

Надеюсь, кто-то найдет это полезным. Я нашел это сообщение после удаления нескольких папок в разных местах. Не помню, какие папки, которые я удалял, исключил обычный параметр Force Get/Replace, который я бы использовал.

Ответ 17

В моем случае, получить конкретную версию, даже не установив флажки и отменить все ожидающие изменения.

Проверил рабочие места. Редактировать текущее рабочее пространство. Проверьте все пути. Путь решения был неверным и указывал на удаленную папку.

Исправил путь и получить последний работал нормально.

Ответ 18

Нажмите правой кнопкой мыши: "Дополнительно"> "Получить конкретную версию". Выберите "Последняя версия" и теперь, что важно, отметьте две проверки: введите описание изображения здесь

Проверки:
Перезаписать записываемые файлы, которые не проверены Перезаписать все файлы, даже если локальная версия соответствует указанной версии