142.md 3.1 KB
Newer Older
Lab机器人's avatar
readme  
Lab机器人 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
# Migrating from Perforce Helix

> 原文:[https://docs.gitlab.com/ee/user/project/import/perforce.html](https://docs.gitlab.com/ee/user/project/import/perforce.html)

*   [Perforce vs Git](#perforce-vs-git)
*   [Why migrate](#why-migrate)
*   [How to migrate](#how-to-migrate)

# Migrating from Perforce Helix[](#migrating-from-perforce-helix "Permalink")

[Perforce Helix](https://www.perforce.com/)提供了一套工具,其中还包括类似于 Git 的集中式专有版本控制系统.

## Perforce vs Git[](#perforce-vs-git "Permalink")

以下列表说明了 Perforce Helix 和 Git 之间的主要区别:

1.  通常,最大的区别是与 Git 的轻量级分支相比,Perforce 分支是重量级的. 当您在 Perforce 中创建分支时,它会在其专有数据库中为分支中的每个文件创建一个集成记录,无论实际更改了多少. 而 Git 是采用不同的体系结构实现的,因此,单个 SHA 可以充当更改后整个存储库状态的指针,这使得分支非常容易. 这就是功能分支工作流如此容易被 Git 采纳的原因.
2.  而且,在 Git 中,分支之间的上下文切换要容易得多. 如果您的经理说"您需要停止使用该新功能并修复此安全漏洞",那么您可以在 Git 中轻松地做到这一点.
3.  在本地计算机上拥有项目及其历史的完整副本意味着每笔交易都非常快,而 Git 则提供了该副本. 您可以单独进行分支/合并和试验,然后在与所有人共享新的有趣内容之前清理混乱.
4.  Git 还使代码审核变得简单,因为您可以共享更改而无需将更改合并到主版本中,而 Perforce 必须在服务器上实现 Shelving 功能,以便其他人可以在合并之前查看更改.

## Why migrate[](#why-migrate "Permalink")

从用户和管理员的角度来看,Perforce Helix 可能难以管理. 迁移到 Git / GitLab 有:

*   **没有许可费用** ,Git 是 GPL,而 Perforce Helix 是专有的.
*   **学习曲线更短** ,Git 有一个庞大的社区和大量的入门指南.
*   **与现代工具集成** ,迁移到 Git 和 GitLab,您可以拥有一个开源的端到端软件开发平台,该平台具有内置的版本控制,问题跟踪,代码审查,CI / CD 等.

## How to migrate[](#how-to-migrate "Permalink")

Git 包含一个内置机制( `git p4` ),用于从 Perforce 中提取代码并将其从 Git 提交回 Perforce.

以下是一些入门指南:

*   [`git-p4` manual page](https://mirrors.edge.kernel.org/pub/software/scm/git/docs/git-p4.html)
*   [`git-p4` example usage](https://git.wiki.kernel.org/index.php/Git-p4_Usage)
*   [Git book migration guide](https://git-scm.com/book/en/v2/Git-and-Other-Systems-Migrating-to-Git#_perforce_import)

请注意, `git p4``git filter-branch`在创建小型高效 Git 包文件方面不是很好. 因此,在第一次将存储库发送到 GitLab 服务器之前,花一些时间和 CPU 适当地重新打包存储库可能是个好主意. 请参阅[此 StackOverflow 问题](https://stackoverflow.com/questions/28720151/git-gc-aggressive-vs-git-repack/) .