[#ch09-git-and-other-scms]
== Git 与其他系统

现实并不总是尽如人意。
通常，你不能立刻就把接触到的每一个项目都切换到 Git。
有时候你被困在使用其他 VCS 的项目中，却希望使用 Git。
在本章的第一部分我们将会了解到，怎样在你的那些托管在不同系统的项目上使用 Git 客户端。

在某些时候，你可能想要将已有项目转换到 Git。
本章的第二部分涵盖了从几个特定系统将你的项目迁移至 Git 的方法，即使没有预先构建好的导入工具，我们也有办法手动导入。

=== 作为客户端的 Git

(((Git as a client)))
Git 为开发者提供了如此优秀的体验，许多人已经找到了在他们的工作站上使用 Git 的方法，即使他们团队其余的人使用的是完全不同的 VCS。
有许多这种可用的适配器，它们被叫做 ``桥接''。
下面我们将要介绍几个很可能会在实际中用到的桥接。

include::book/09-git-and-other-scms/sections/client-svn.asc[]

include::book/09-git-and-other-scms/sections/client-hg.asc[]

include::book/09-git-and-other-scms/sections/client-p4.asc[]

include::book/09-git-and-other-scms/sections/client-tfs.asc[]

[[r_migrating]]
=== 迁移到 Git

(((Migrating to Git)))
如果你现在有一个正在使用其他 VCS 的代码库，但是你已经决定开始使用 Git，必须通过某种方式将你的项目迁移至 Git。
这一部分会介绍一些通用系统的导入器，然后演示如何开发你自己定制的导入器。
你将会学习如何从几个大型专业应用的 SCM 系统中导入数据，不仅因为它们是大多数想要转换的用户正在使用的系统，也因为获取针对它们的高质量工具很容易。

include::book/09-git-and-other-scms/sections/import-svn.asc[]

include::book/09-git-and-other-scms/sections/import-hg.asc[]

include::book/09-git-and-other-scms/sections/import-p4.asc[]

include::book/09-git-and-other-scms/sections/import-tfs.asc[]

include::book/09-git-and-other-scms/sections/import-custom.asc[]

=== 总结

你会觉得将 Git 作为其他版本控制系统的客户端，或者在数据无损的情况下将几乎任何一个现有的仓库导入到 Git，都是一件很惬意的事。
在下一章，我们将要讲解 Git 的原始内部数据，如果需要的话你就可以加工每一个字节。
