我将换公司,但我会继续在同样的项目上工作。 我有一些使用Azure DevOps和Git的项目,还有一个使用TFVC的项目。 我使用Visual Studio集成的这些源代码控制工具,从未使用过控制台命令。
我想要“复制”部分项目(而不是所有项目)的所有更改的源代码到另一个帐户中。 如果可能的话,我还想将TFVC迁移到Git。 应该如何做?
我将换公司,但我会继续在同样的项目上工作。 我有一些使用Azure DevOps和Git的项目,还有一个使用TFVC的项目。 我使用Visual Studio集成的这些源代码控制工具,从未使用过控制台命令。
我想要“复制”部分项目(而不是所有项目)的所有更改的源代码到另一个帐户中。 如果可能的话,我还想将TFVC迁移到Git。 应该如何做?
TFVC 很难从一个服务器迁移到另一个服务器。虽然有一些工具可以帮助,但是 TFVC->TFVC 很难做到正确。由于在 TFVC 中可以做一些 Git 不可能实现的操作,因此无法复制所有历史记录和所有分支。不过,一般情况下,传输主分支和一些历史记录就足够了。
有了这个警告,幸运的是,TFVC->Git 更容易。从您当前的 Azure DevOps 账户中选择导入存储库选项:
您可以指定单个要导入的分支,并保留最多 180 天的历史记录。对于大多数项目来说,这已经足够了。使用这种方法,无法导入多个分支,因此如果您有未完成的任务,则需要将其集成到单个分支中。
这将把您的 TFVC 分支转换为 Git 存储库。您可以多次执行此操作,以导入不同的分支和来自不同 TFVC 存储库的内容,直到您所有的工作都在 Git 中。
有多种方法可以将 Git 存储库从一个系统移动到另一个系统,但是由于您正在使用 Azure DevOps,因此可以使用相同的导入存储库选项,让 Azure Repos 将数据从旧帐户直接导入新帐户。
首先,您需要创建一个新目标帐户(或使用现有的个人帐户,如果有的话)。然后使用相同的导入存储库选项,但这次是从您的新帐户开始。
输入要移动的存储库的克隆 URL,并提供您的 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分支导入到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
git clone old-repo-url
2)从TFS / Azure DevOps门户创建新存储库。 git remote add origin new-repo-url
git push -u origin --all
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存储库目录不为空。我不知道该怎么做。 - Jongit-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