Ошибка TF31002 при клонировании всей истории из коллекции TFVC Azure DevOps в Git с помощью инструмента GIT-TFS

Я пытаюсь перенести проект из Azure DevOps TFVC в Azure DevOps Git со всей историей изменений, а не только за последние 180 дней. На всякий случай я перенес изменения за последние 180 дней с помощью инструмента, включенного в Azure DevOps. Итак, теперь у меня есть 2 репозитория в этом проекте:

  • Коллекция TFVC с {имя-коллекции}
  • Репозиторий Git с другим именем.

Я спросил здесь, и я застрял в "Клонировании" репозиторий в локальную папку »шаг. Я установил и загрузил Git последней версии инструмента GIT-TFS.

У меня есть личная и профессиональная учетная запись в Azure DevOps с {email-account}. Проект, который я хочу перенести, находится в Личном кабинете. Я запускаю эту команду после эта официальная справка:

git tfs clone -u {email-account} -p {personal-account-password} https://{devops-username}.visualstudio.com/{collection-name}/ $/{folder-name}/ . --branches=none

Я получаю {collection-name} и {folder-name} из Visual Studio 2017 Pro, когда пытаюсь подключиться к удаленной коллекции. У меня только эта версия VS. После выполнения команды я получаю такой вывод:

Initialized empty Git repository in C:/DATA/Git/.git/

TF31002: Unable to connect to this Team Foundation Server: https://{devops-username}.visualstudio.com/{collection-name}.
Team Foundation Server Url: https://{devops-username}.visualstudio.com/{collection-name}.

Possible reasons for failure include:
- The name, port number, or protocol for the Team Foundation Server is incorrect.
- The Team Foundation Server is offline.
- The password has expired or is incorrect.

Technical information (for administrator):
The remote server returned an error: (404) Not Found.
The remote server returned an error: (404) Not Found.
All the logs could be found in the log file: C:\Users\{user}\AppData\Local\git-tfs\git-tfs_log.txt

И если это поможет, вот содержимое файла журнала:

2019-03-04 11:42:17.4562 [Debug] Trying to get HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DevDiv\vs\Servicing\14.0
2019-03-04 11:42:17.4816 [Debug] Visual Studio 2015 detected...
2019-03-04 11:42:17.6387 [Debug] git command: Starting process: git rev-parse --show-prefix
2019-03-04 11:42:17.6744 [Debug] git stderr: fatal: not a git repository (or any of the parent directories): .git
2019-03-04 11:42:17.6744 [Debug] git command time: [00:00:00.0396901] rev-parse --show-prefix
2019-03-04 11:42:17.7083 [Debug] Command run:git tfs clone -u {email-account} -p {personal-account-password} https://{devops-username}.visualstudio.com/{collection-name} $/{folder-name} . --branches=none
2019-03-04 11:42:17.7083 [Debug] No authors file used.
2019-03-04 11:42:17.7083 [Debug] git-tfs version 0.29.0.0 (TFS client library 14.0.0.0 (MS)) (64-bit)
2019-03-04 11:42:17.7379 [Debug] Looking for assembly StructureMap.resources, Version=2.6.1.0, Culture=en-US, PublicKeyToken=e60ad81abae3c223 ...
2019-03-04 11:42:17.7379 [Debug] Trying to get HKEY_LOCAL_MACHINE\Software\WOW6432Node\Microsoft\VisualStudio\14.0|InstallDir
2019-03-04 11:42:17.7379 [Debug] Trying to get HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\14.0|InstallDir
2019-03-04 11:42:17.7379 [Debug] Trying to get HKEY_CURRENT_USER\Software\WOW6432Node\Microsoft\WDExpress\14.0_Config|InstallDir
2019-03-04 11:42:17.7379 [Debug] Trying to get HKEY_CURRENT_USER\Software\Microsoft\WDExpress\14.0_Config|InstallDir
2019-03-04 11:42:17.7379 [Debug] Looking for assembly StructureMap.resources, Version=2.6.1.0, Culture=en, PublicKeyToken=e60ad81abae3c223 ...
2019-03-04 11:42:17.7379 [Debug] Trying to get HKEY_LOCAL_MACHINE\Software\WOW6432Node\Microsoft\VisualStudio\14.0|InstallDir
2019-03-04 11:42:17.7379 [Debug] Trying to get HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\14.0|InstallDir
2019-03-04 11:42:17.7379 [Debug] Trying to get HKEY_CURRENT_USER\Software\WOW6432Node\Microsoft\WDExpress\14.0_Config|InstallDir
2019-03-04 11:42:17.7379 [Debug] Trying to get HKEY_CURRENT_USER\Software\Microsoft\WDExpress\14.0_Config|InstallDir
2019-03-04 11:42:17.7379 [Debug] git command: Starting process: git init
2019-03-04 11:42:17.8112 [Info] Initialized empty Git repository in C:/DATA/Git/.git/

2019-03-04 11:42:17.8252 [Debug] git command time: [00:00:00.0767692] init
2019-03-04 11:42:17.8481 [Debug] No .gitignore file specified...
2019-03-04 11:42:18.9405 [Debug] System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> Microsoft.TeamFoundation.TeamFoundationServiceUnavailableException: TF31002: Unable to connect to this Team Foundation Server: https://{devops-username}.visualstudio.com/{collection-name}.
Team Foundation Server Url: https://{devops-username}.visualstudio.com/{collection-name}.

Possible reasons for failure include:
- The name, port number, or protocol for the Team Foundation Server is incorrect.
- The Team Foundation Server is offline.
- The password has expired or is incorrect.

Technical information (for administrator):
The remote server returned an error: (404) Not Found. ---> System.Net.WebException: The remote server returned an error: (404) Not Found.
   at System.Net.HttpWebRequest.GetResponse()
   at Microsoft.TeamFoundation.Client.Channels.TfsHttpWebRequest.SendRequestAndGetResponse(HttpWebRequest webRequest, WebException& webException)
   --- End of inner exception stack trace ---
   at Microsoft.TeamFoundation.Client.TfsConnection.EnsureProviderConnected()
   at Microsoft.TeamFoundation.Client.TfsConnection.EnsureAuthenticated()
   at GitTfs.VsCommon.TfsHelperBase.EnsureAuthenticated()
   at GitTfs.Core.GitTfsRemote.EnsureTfsAuthenticated()
   at GitTfs.Core.GitRepository.CreateTfsRemote(RemoteInfo remote, String autocrlf, String ignorecase)
   at GitTfs.Commands.Init.Run(String tfsUrl, String tfsRepositoryPath)
   at GitTfs.Commands.Init.Run(String tfsUrl, String tfsRepositoryPath, String gitRepositoryPath)
   at GitTfs.Commands.Clone.Run(String tfsUrl, String tfsRepositoryPath, String gitRepositoryPath)
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
   at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at GitTfs.Util.GitTfsCommandRunner.Run(GitTfsCommand command, IList`1 args)
   at GitTfs.GitTfs.Main(GitTfsCommand command, IList`1 unparsedArgs)
   at GitTfs.GitTfs.Run(IList`1 args)
   at GitTfs.Program.Main(String[] args)
2019-03-04 11:42:18.9635 [Error] TF31002: Unable to connect to this Team Foundation Server: https://{devops-username}.visualstudio.com/{collection-name}.
Team Foundation Server Url: https://{devops-username}.visualstudio.com/{collection-name}.

Possible reasons for failure include:
- The name, port number, or protocol for the Team Foundation Server is incorrect.
- The Team Foundation Server is offline.
- The password has expired or is incorrect.

Technical information (for administrator):
The remote server returned an error: (404) Not Found.
2019-03-04 11:42:18.9635 [Error] The remote server returned an error: (404) Not Found.
2019-03-04 11:42:18.9734 [Warn] All the logs could be found in the log file: C:\Users\{user}\AppData\Local\git-tfs\git-tfs_log.txt

person Jon    schedule 04.03.2019    source источник
comment
Я не помню, изменил ли Azure что-то с раннего возраста поддержки git или вам все еще следует использовать github.com/git-tfs/git-tfs/blob/master/doc/ Я также надеюсь, что название вашей коллекции установлено на DefaultCollection . И вы также можете попробовать не указывать логин и пароль, и откроется всплывающее окно для ввода ваших учетных данных, и это должно сделать это ...   -  person Philippe    schedule 04.03.2019
comment
Спасибо, вы дали мне ключ. Я не знаю, почему название коллекции проекта, которое я вижу в DevOps или VS, отличается от DefaultCollection. Задав имя этой коллекции, я сделал несколько успешных миграций. Сначала включите альтернативные учетные данные для аутентификации и используйте шаблон пароля -u username -p, но мне пришлось войти в систему во всплывающем окне. После этого началась загрузка истории. В другом тесте я отключил альтернативные учетные данные для аутентификации, и без указания параметров -u и -p и без всплывающего окна загрузка началась. Учетные данные где-то сохранялись в первый раз?   -  person Jon    schedule 05.03.2019


Ответы (1)


Чтобы клонировать репозиторий TFVC в Azure DevOps, вам необходимо:

  • Включите альтернативные учетные данные. Перейдите в «Мой профиль» -> «Безопасность» -> Ввести данные и «Включить альтернативные учетные данные».
  • используйте команду, следующую за этим шаблоном (где 'yourLogin' и 'yourPassword' были определены на предыдущем шаге) git tfs clone https://dev.azure.com/{organization} $/project/folder --username=yourLogin --password=yourPassword

введите здесь описание изображения

Чтобы добиться успеха, visualstudio.com необходимо (для аутентификации), чтобы вы использовали версию TFS2012 dll TFS. В противном случае вы увидите сообщение:

TF400813: Resource not available for anonymous access. Client authentication required

Чтобы убедиться, что git-tfs использует эту версию, используйте команду git tfs --version, и вы должны увидеть текст TFS client library 11.0.0.0, например:

git-tfs version 0.17.2.0 (TFS client library 11.0.0.0 (MS)) (64-bit)

person Shayki Abramczyk    schedule 04.03.2019
comment
вы можете заставить git-tfs использовать конкретную версию сборок tfs (см. github.com/git-tfs/git-tfs/blob /), задав переменную среды (но для этого потребуется установить эту версию Visual Studio. - person Philippe; 04.03.2019
comment
Мне удалось перенести всю историю, используя DefaultCollection в имени коллекции (вместо имени, которое я могу прочитать в проекте DevOps): git tfs clone -u {email-account} -p {personal-account-password} https: // {DevOps- имя пользователя} .visualstudio.com / DefaultCollection $ / {имя-папки} /. --branches = нет - person Jon; 05.03.2019