【问题标题】:Move code INTO Azure DevOps Repo FROM TFS WITHOUT losing TFS HISTORY将代码从 TFS 移入 Azure DevOps 存储库,而不会丢失 TFS 历史记录
【发布时间】:2020-10-27 01:19:07
【问题描述】:

在我们整个公司中,我们是第一个尝试这样做的人。

我们正在尝试将 代码从 TFS 导入 Azure DevOps

以下是 TFS 详细信息

TFS Server: companyTFS

TFS Project Collection: TechTeam. 

TFS Project name: Main.

TFS Branch : Dev

现在我正在尝试将代码从 TFS 获取到 Azure DevOps。 我们可以将代码从 TFS 文件夹复制到 Azure DevOps 文件夹,但我们不想丢失 TFS 历史记录。

如下所述,我安装了 Chocolatey 并安装了 gittfs

https://blog.rsuter.com/migrate-a-tfs-repository-to-a-vsts-git-repository

当我给出以下命令时

git tfs clone http://companyTFS:8080/TechTeam/Main $/Main/Dev/Registration/FeeDetails . –ignore-branches –debug

我遇到了异常。

TF31002: Unable to connect to this Team Foundation Server: http://companyTFS:8080/TechTeam/Main.
Team Foundation Server Url: http://companyTFS:8080/TechTeam/Main.

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.

我也试过了,但没用。

https://github.com/microsoft/azure-repos-vscode/issues/320#issuecomment-335573266

我正在尝试了解我的 TFS 服务器是否可以与外部组件进行握手。

如果有人能告诉我我做错了什么,我会很高兴。

【问题讨论】:

  • 我不明白为什么它得到 -1 以及为什么建议关闭它。建议关闭的人是否知道答案或他/她是否需要更多信息。是什么原因?
  • 我没有投反对票,也没有投票结束这个问题。错误消息告诉您 TFS 服务器返回了 404 Not Found 响应。看来你的网址有误。
  • 谢谢格雷格。我找到了解决方案。在我发布解决方案之前进行测试
  • 也许尝试删除 URL 的 /main 段?
  • @GregBurghardt .. 接近那个...

标签: tfs azure-devops


【解决方案1】:

在花费了将近 4 天之后,我终于能够将代码从 TFS 连同历史一起移动到 Azure DevOps 中。请看下面我所做的所有步骤。

安装 Chocolatey:

首先我们需要安装 Chocolatey。为简单起见,我在同一文件夹中的两个文件下面创建了。 文件名:installChocolatey.cmd

内容:

@echo off
SET DIR=%~dp0%

%systemroot%\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "& '%DIR%install.ps1' %*"
SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin

文件名:install.ps1

内容:从这里复制粘贴内容https://chocolatey.org/install.ps1

在管理员模式下打开命令提示符并运行 installChocolatey.cmd 来安装 Chocolatey。

在命令提示符下输入choco -v,看看是否安装正确。

安装 git tfs:

接下来,我们需要安装 git tfs 工具,以便在命令提示符下给出以下命令并按照说明进行操作。

choco install gittfs

在我的例子中,它安装到 C:\Tools\gittfs。

打开环境变量并确保将以下(在我的情况下)添加到 PATH 变量中。

C:\Tools\gittfs

在命令提示符中输入 git tfs -version 以查看它安装的版本。

将代码从 TFS 移动到 Azure DevOps:

Azure DevOps Project Name: Experiment
Azure DevOps Repo Name: MyRepo
Azure DevOps Repo Name: Master and DEV

首先,我将这个 repo 克隆到我的本地。确保我有所有远程分支到我的本地。

在我的本地创建了一个名为 TestBranch 的新分支并将其推送到远程。所以现在 MyRepo 有 3 个分支,TestBranch 是我本地的工作分支。

在命令提示符下,我转到了映射 Azure DevOps 存储库的文件夹。我给出了以下命令来获取带有历史记录的 TFS 代码。

git tfs clone http://companyTFS:8080/TechTeam $/Main/Dev/Registration/FeeDetails . –debug

这需要一些时间,之后您可以看到 TFS 代码已下载到该文件夹​​。

在同一命令提示符下,

给出下面的命令来确定你的工作分支是什么

git branch 

下面的命令将创建一个分支

git checkout -b TempBranch

对于以下命令,获取目标 Azure DevOps 存储库的 url。

以下命令会将您的远程 Azure DevOps 存储库设置为您要定位的存储库

git remote add origin https://xxx@dev.azure.com/xxx/Experiment/_git/MyRepo

下面将在 ADO 的目标存储库中创建名为 TempBranch 的新分支。在 Experiment 项目和 MyRepo 存储库中

git push --set-upstream origin TempBranch

现在,您来自 TFS 的所有代码和历史记录都已进入 Azure DevOps 并进入您的存储库。您可以使用 PULL Request 功能合并到其他分支等等。

现在假设您希望 Azure DevOps 代码结构有所不同。

转到您从 TFS 下载代码/历史记录的文件夹并创建文件夹结构或更改您想要的方式

以下命令一一给出。

git add .

要查看您的所有更改,请输入以下命令

git status

在本地提交所有更改

git commit -m "[commit message goes here]"

将更改从本地推送到远程的命令 git 推送

代码将在 Experiment 项目 MyRepo repo TempBranch 分支中

【讨论】:

  • 我会等待 2 天,看看任何 cmets,然后会接受答案。
  • 太棒了!你可以accept your answer。在这种情况下,其他人可以直接找到有用的解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-03
  • 2012-02-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多