在不丢失 TFS 历史记录的情况下将代码从 TFS 移入 Azure DevOps Repo

Move code INTO Azure DevOps Repo FROM TFS WITHOUT losing TFS HISTORY

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

我们正在尝试将 代码从 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 服务器是否可以与外部组件进行握手。

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

我终于在花了将近 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

文件名:安装.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

首先,我将这个存储库克隆到我的本地。确保我已将所有远程 b运行ches 放到我的本地。

在我的本地创建了一个名为 TestB运行ch 的新 b运行ch 名称并将其推送到远程。所以现在 MyRepo 有 3 个 b运行ches 和 TestB运行ch 是我的本地工作 b运行ch.

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

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

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

在同一个命令提示符下,

给出下面的命令来确定你的工作 b运行ch

git branch 

下面的命令将创建一个 b运行ch

git checkout -b TempBranch

使用以下命令获取目标 Azure DevOps 存储库的 url。

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

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

下面将在 ADO 的目标存储库中创建名为 TempB运行ch 的新 b运行ch。这里在实验项目和 MyRepo 回购

git push --set-upstream origin TempBranch

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

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

转到您从 TFS code/history 下载的文件夹并创建文件夹结构或更改您想要的方式

下面一一给出命令

git add .

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

git status

在本地提交所有更改

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

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

代码会在实验项目MyRepo repo TempB运行ch b运行ch