什么是回购以及Google为何使用它?

时间:2010-03-15 21:24:08

标签: android git repository

当我想获得Android源代码时,我知道我必须使用“repo”。回购是什么?为什么他们使用repo而不只是使用GIT?,并且有一个repo的GUI,使我能够暂停/恢复同步,因为每次我偶尔断开连接似乎repo从头开始同步!

5 个答案:

答案 0 :(得分:20)

Repo和git - 它们是什么,它们的用途是什么 - 在source.android.com上解释

  

要使用Android代码,请   将需要使用Git和Repo。

     

Git是一个开源版本控制系统   处理非常大的项目   分布在多个   库。在上下文中   Android,我们使用Git进行本地化   本地分支等业务   提交,差异和编辑。

     

Repo是我们在Git之上构建的工具。回购帮助我们管理   许多Git存储库,确实如此   上传到我们的版本控制   系统,并自动化部分   Android开发工作流程。回购是   并不意味着取代Git,只是为了制造   它更容易与Git一起工作   Android的上下文。 repo命令   是一个可执行的Python脚本   你可以放在路上的任何地方。

据我所知,Repo没有GUI,但是在上面的网站上有很多指导用于控制Repo从命令行做什么。

答案 1 :(得分:18)

如在Android网页中提到的,repo不会替换git。它只是git上的工具,可以帮助您管理多个git存储库。

例如,假设我有一个具有很多功能的大项目,并且我有几个团队正在处理每个功能,我为每个功能创建了一个存储库。例如,假设我的存储库是wifitelephonypower management等。当您的功能具有不同的生命周期时,此操作就有意义。例如,如果我不会在下一个版本中触及wifi功能,但我会修改所有其他功能。因此,在这种情况下,我的项目或产品分布在几个不同的git存储库中。

因此,要获得我的项目的集中照片(我项目的一个特定时刻,例如里程碑),我需要获得每个存储库的修订版(git hash或tag)。请记住,每个功能都有一个存储库。手动我可以做到,但可能非常痛苦。因此,使用repo,您​​可以有一个MANIFEST链接到每个git仓库的所有修订版本(每个功能一个)并且具有我整个项目的特定图片。

简单地说,我可以说这是一种管理分散的集中式多个git存储库的方法。

使用repo,您​​可以获得更多功能,而不仅仅是在特定点结帐。有关详细信息,请转至http://source.android.com/source/using-repo.html

答案 2 :(得分:3)

关于暂停和重启点,在终端窗口进行回购同步时,您可以点击“ctrl + z”暂停回购同步。要重新启动,只需在同一窗口中输入“fg”即可。

答案 3 :(得分:2)

转到:

http://source.android.com/source/git-repo.html

您可以下载repo脚本。它是一个Python脚本,它使用git命令来执行分布式源代码修订。

执行repo sync后,请执行ps -auwf查看流程:

对我来说,我看到了:

\_ python -E /sde3/root/download/android/android/.repo/repo/main.py --rep 
      \_ git fetch korg
            \_ git fetch korg
            \_ git index-pack --stdin -v --fix-thin --keep=fetch-pack 5227 on

是的,repo sync经常中断。但它是健壮的,只需重新启动命令,它将再次恢复同步 - 那些已更新的将不会被重新应用,因此它将跳过它们并继续其余的。

答案 4 :(得分:2)

repo sync有各种有用的选项:

-f从断开连接中恢复

-c只需上传您要求的分支

-j< #CPUS>通过增加命令使用的cpu数量来加速同步