将一些项目从一个用户账户移动到另一个账户

3

我将换公司,但我会继续在同样的项目上工作。 我有一些使用Azure DevOps和Git的项目,还有一个使用TFVC的项目。 我使用Visual Studio集成的这些源代码控制工具,从未使用过控制台命令。

我想要“复制”部分项目(而不是所有项目)的所有更改的源代码到另一个帐户中。 如果可能的话,我还想将TFVC迁移到Git。 应该如何做?

2个回答

3

TFVC

TFVC 很难从一个服务器迁移到另一个服务器。虽然有一些工具可以帮助,但是 TFVC->TFVC 很难做到正确。由于在 TFVC 中可以做一些 Git 不可能实现的操作,因此无法复制所有历史记录和所有分支。不过,一般情况下,传输主分支和一些历史记录就足够了。

有了这个警告,幸运的是,TFVC->Git 更容易。从您当前的 Azure DevOps 账户中选择导入存储库选项:

enter image description here

您可以指定单个要导入的分支,并保留最多 180 天的历史记录。对于大多数项目来说,这已经足够了。使用这种方法,无法导入多个分支,因此如果您有未完成的任务,则需要将其集成到单个分支中。

enter image description here

这将把您的 TFVC 分支转换为 Git 存储库。您可以多次执行此操作,以导入不同的分支和来自不同 TFVC 存储库的内容,直到您所有的工作都在 Git 中。

Git

有多种方法可以将 Git 存储库从一个系统移动到另一个系统,但是由于您正在使用 Azure DevOps,因此可以使用相同的导入存储库选项,让 Azure Repos 将数据从旧帐户直接导入新帐户。

首先,您需要创建一个新目标帐户(或使用现有的个人帐户,如果有的话)。然后使用相同的导入存储库选项,但这次是从您的新帐户开始。

enter image description here

输入要移动的存储库的克隆 URL,并提供您的 Git 凭据或个人访问令牌:

enter image description here

这将自动将所有代码、分支、标签等拉入您的目标帐户和一个新的 Git 存储库中。按照您拥有的 Git 存储库执行此操作序列。


命令行方式

您也可以使用命令行执行相同的步骤:

Git

要克隆用于迁移的存储库,请使用全新的克隆,并指定 --mirror 选项:

git clone https://dev.azure.com/{Org}/{Project}/_git/{Repo} --mirror

然后将所有内容推送到一个新的、空的Git存储库中,该存储库位于新帐户下:

git push --mirror https://dev.azure.com/{NewOrg}/{NewProject}/_git/{NewRepo}

TFVC

对于TFVC,您可以使用工具将TFVC分支导入到git仓库中,并可选择性地保留历史记录。 git tfs允许您执行此类导入操作:

git tfs clone http://your-tfs-server:8080/tfs/your-collection $/your-tfvc-repo

这个过程需要一些时间将您的更改集导入到本地 git repo 中。之后,您可以将生成的 Git 存储库推送到新目标 Azure DevOps 项目:

git remote add target https://dev.azure.com/{NewOrg}/{NewProject}/_git/{NewRepo}
git push --all target

谢谢,我已经使用这个工具从TFVC迁移到Git,但我想获取旧的更改。 - Jon
如果您想要获取早期的更改,命令行是唯一的选择。认真考虑一下这会给您带来什么。您始终可以将tfvc repo保持为只读状态。 - jessehouwing
另外,如果您需要更多历史记录,则必须在开始使用具有180天历史记录的存储库之前添加该历史记录现在。由于Git的性质,您无法稍后添加历史记录。 - jessehouwing

2
首先,使用git-tfs工具将TFVC代码迁移到Git。
当您的所有代码都在Git中时,您可以轻松地将代码移动到另一个项目:
1)将存储库克隆到本地文件夹。
2)转到TFS / Azure DevOps并创建新的Git存储库。
3)将本地存储库推送到TFS / Azure DevOps存储库。
最好的方法是使用命令行:
1) git clone old-repo-url 2)从TFS / Azure DevOps门户创建新存储库。
3) git remote add origin new-repo-url git push -u origin --all

我正在尝试运行git-tfs工具。我下载了最新版本,并执行了以下命令:git-tfs.exe clone -u {devops-old-account-email} -p {devops-old-account-pass} https://{devops-old-account}.visualstudio.com/{project-name}/ $/{new-git-projec-name} . --branches=none我遵循了这个帮助文档)。我收到了这个错误:指定的git存储库目录不为空。我不知道该怎么做。 - Jon
我已更改git-tfs命令:git-tfs.exe clone -u {devops-user-email} -p {devops-password} https://{devops-user}.visualstudio.com/{project-name}/_versionControl/$/{tfvc-repository-name}/ https://{devops-user}.visualstudio.com/{project-name}/_git/{new-git-repository-name} . –branches=none。现在,错误消息是:指定的git存储库目录不为空。这很奇怪,因为新存储库没有任何文件,因为它尚未初始化。 - Jon
您能否创建一个新文件夹并尝试在其中运行命令? - Shayki Abramczyk
1
我明白了,在这个问题的评论中:https://stackoverflow.com/questions/54981796/tf31002-error-when-cloning-all-history-from-azure-devops-tfvc-collection-to-git - Jon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接