【问题标题】:What is Repo and Why does Google use it?什么是 Repo,Google 为什么使用它?
【发布时间】:2010-03-15 21:24:08
【问题描述】:

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

【问题讨论】:

    标签: android git repo


    【解决方案1】:

    正如 android 网页中提到的,repo 不会取代 git。它只是git 之上的一个工具,可以帮助您管理多个 git 存储库。

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

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

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

    使用 repo,您​​可以拥有更多功能,而不仅仅是在特定时间结帐。欲了解更多信息,请访问http://source.android.com/source/using-repo.html

    【讨论】:

      【解决方案2】:

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

      要使用 Android 代码,您 将需要同时使用 Git 和 Repo。

      Git 是一个开源版本控制系统,旨在 处理非常大的项目 分布在多个 存储库。在上下文中 Android,我们本地使用 Git 诸如本地分支的操作​​, 提交、差异和编辑。

      Repo 是我们在 Git 之上构建的工具。回购帮助我们管理 许多 Git 存储库, 上传到我们的修订控制 系统,并自动化部分 Android 开发工作流程。回购是 不是为了取代 Git,只是为了让 使用 Git 更容易 Android 的上下文。回购命令 是一个可执行的 Python 脚本 你可以把任何地方放在你的路径中。

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

      【讨论】:

      • source.android.com/source/developing.html :截至本发布日期的更正网址
      • @eibrahim 你能详细说明一下吗? (我有兴趣在我自己的项目中使用 Repo,希望听到反馈...)
      • 我不是这方面的专家。我加入了一个正在使用它的项目。学习曲线陡峭,事物的连接方式非常违反直觉,似乎过度设计。也许这是我们使用它的方式,但我真的不喜欢它,似乎其他开发人员也分享我的观点。如果你有多个 repos,我会推荐普通的 git 和子模块。抱歉没有太具体,但就像我说的那样,我不是专家 - 只是一个心怀不满的用户/开发人员。
      • 我明确确认 eibrahim 的意见。 repo 给已经非常复杂的git 增加了一定程度的复杂性。此外,repo 中没有实现许多基本命令(如logrebase),如果您想正常工作,则必须在repo 上方编写自己的脚本(与本地更改同步很复杂) gitrepo 这是二战)。另一个例子:repo 会将下面的 git 置于分离状态,这会使它们更难管理。
      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        转到:

        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 经常中断。但它很强大,只需重新启动命令,它就会再次恢复同步 - 那些已经更新的将不会被重新应用,所以它会跳过它们并继续其余的。

        【讨论】:

        • 它是用 Python 编写的,而不是 bash。你的“ps”也表明了这一点。
        【解决方案5】:

        repo sync 有各种有用的选项:

        -f 从断开连接中恢复

        -c 只是上传你要求的分支

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

        【讨论】:

          猜你喜欢
          • 2011-10-31
          • 2015-09-01
          • 2010-11-03
          • 1970-01-01
          • 2011-06-18
          • 2017-01-10
          • 2011-02-21
          相关资源
          最近更新 更多