将代码从 TFS 移至 Azure DevOps Repo,而不丢失 TFS 历史记录

Zig*_*ler 2 tfs azure-devops

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

\n

我们正在尝试将代码从 TFS 获取到 Azure DevOps 中

\n

以下是 TFS 详细信息

\n
TFS Server: companyTFS\n\nTFS Project Collection: TechTeam. \n\nTFS Project name: Main.\n\nTFS Branch : Dev\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

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

\n

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

\n

当我给出以下命令时

\n
git tfs clone http://companyTFS:8080/TechTeam/Main $/Main/Dev/Registration/FeeDetails . \xe2\x80\x93ignore-branches \xe2\x80\x93debug\n
Run Code Online (Sandbox Code Playgroud)\n

我遇到了异常。

\n
TF31002: Unable to connect to this Team Foundation Server: http://companyTFS:8080/TechTeam/Main.\nTeam Foundation Server Url: http://companyTFS:8080/TechTeam/Main.\n\nPossible reasons for failure include:\n- The name, port number, or protocol for the Team Foundation Server is incorrect.\n- The Team Foundation Server is offline.\n- The password has expired or is incorrect.\n\nTechnical information (for administrator):\nThe remote server returned an error: (404) Not Found.\nThe remote server returned an error: (404) Not Found.\n
Run Code Online (Sandbox Code Playgroud)\n

我也尝试过这个但没有成功。

\n

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

\n

我想知道我的 TFS 服务器是否可以与外部组件进行握手。

\n

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

\n

Zig*_*ler 5

最后,经过近 4 天的时间,我能够将代码连同历史记录一起从 TFS 移至 Azure DevOps。请参阅下面我所做的所有步骤。

\n

安装巧克力:

\n

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

\n

内容:

\n
@echo off\nSET DIR=%~dp0%\n\n%systemroot%\\System32\\WindowsPowerShell\\v1.0\\powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "& \'%DIR%install.ps1\' %*"\nSET PATH=%PATH%;%ALLUSERSPROFILE%\\chocolatey\\bin\n
Run Code Online (Sandbox Code Playgroud)\n

文件名: install.ps1

\n

内容:从此处复制粘贴内容https://chocolatey.org/install.ps1

\n

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

\n

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

\n

安装 git tfs:

\n

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

\n
choco install gittfs\n
Run Code Online (Sandbox Code Playgroud)\n

就我而言,它安装到 C:\\Tools\\gittfs。

\n

打开环境变量并确保将以下内容(在我的例子中)添加到 PATH 变量中。

\n

C:\\工具\\gittfs

\n

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

\n

将代码从 TFS 移至 Azure DevOps:

\n
Azure DevOps Project Name: Experiment\nAzure DevOps Repo Name: MyRepo\nAzure DevOps Repo Name: Master and DEV\n
Run Code Online (Sandbox Code Playgroud)\n

首先,我将此存储库克隆到本地。确保我已将所有远程分支转移到本地分支。

\n

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

\n

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

\n
git tfs clone http://companyTFS:8080/TechTeam $/Main/Dev/Registration/FeeDetails . \xe2\x80\x93debug\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

在同一命令提示符下,

\n

给出以下命令以确保您的工作分支是什么

\n
git branch \n
Run Code Online (Sandbox Code Playgroud)\n

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

\n
git checkout -b TempBranch\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

以下命令将把您的远程 Azure DevOps Repo 设置为您想要定位的 Repo

\n
git remote add origin https://xxx@dev.azure.com/xxx/Experiment/_git/MyRepo\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n
git push --set-upstream origin TempBranch\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

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

\n

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

\n

一一给出以下命令。

\n
git add .\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n
git status\n
Run Code Online (Sandbox Code Playgroud)\n

在本地提交所有更改

\n
git commit -m "[commit message goes here]"\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

代码将位于实验项目 MyRepo repo TempBranch 分支中

\n