【问题标题】:Need help to find a strategy for repo (tool)需要帮助找到回购策略(工具)
【发布时间】:2013-04-13 09:39:57
【问题描述】:

我正在为多媒体机顶盒制作 froyo 图像。原图自带定制的mplayer,对SoC有硬件支持。 Android 多媒体框架(音频/视频)完全被绕过,所有的播放都是用这个 mplayer 完成的。更糟糕的是,mplayer 是用 OSS 而不是 ALSA 编译的。我的中期目标是,在android平台上集成alsa和dmix支持,编译支持alsa的mplayer,让android和mplayer可以同时播放。

与此同时,我想更改原始图像上的小东西(主要是 UI、UX)。所以我想有两个分支。一张用于原始和略微改进的图像,另一张用于更大的 alsa 更改。 alsa 分支将有一些其他的 git 存储库而不是原始存储库,例如 alsa 的东西。此外,一些 git 项目可能需要有自己的 alsa 实现分支(用于 alsa 输出的 mplayer、用于共享内存的仿生等)。 所以,要在原始分支和alsa分支之间切换,我不得不切换一些git仓库的分支,并且会有一些仓库是alsa分支专有的。

我可以通过 repo 实现这一点吗?这只是用 repo 启动 alsa 主题分支的问题吗?

能否请您描述一下,您将如何为此设置 android 平台?任何提示表示赞赏。

干杯, 亨里克

附:为这种场景定义两种不同的产品是否有意义?

附言我已经在 android-porting google 群里问过这个问题:https://groups.google.com/forum/?fromgroups=#!topic/android-porting/K0JmK9HFAVw

【问题讨论】:

    标签: android git branch repository


    【解决方案1】:

    在我看来,这听起来像是同一产品上的功能实现,而不是不同的产品。

    如果所有必要的 git 都在所有分支上,您只需将受影响的 git 指向您的 ALSA 功能的正确分支。这可以做到,例如通过在.repo 目录中添加local_manifest.xml,如下所示:

    <?xml version="1.0" encoding="UTF-8"?>
    <manifest>
    <remove-project name="platform/blah"/>
    <project path="blah"
        name="platform/blah"
        revision="alsa-feature-branch"/>
    </manifest>
    

    然后,您将重新同步您的存储库并在您需要进行更改的 git 中启动主题分支。

    一旦功能完成(或者甚至直接在主分支上进行功能开发),还可以将更改合并回您的主分支,并在您的产品 makefile 或system.prop 文件中有一个标志来决定是否会使用该功能。

    【讨论】:

    • 所以,如果我想在 ALSA 分支上工作,我必须复制 local_manifest 并运行 repo sync。如果我不想切换回主分支,我将不得不重命名 local_manifest,以便 repo 找不到它并再次运行 repo sync?这是工作流程吗?对我来说似乎有点复杂;)
    • 您是否希望经常来回切换?在这种情况下,您可以同步 2 个 repo 副本,并且只更改其中一个中的清单。这就是我通常做的事情。
    • 是的,因为我可能想把master分支的改动合并到ALSA分支中。我可以将清单存储库分支成一个主清单和一个 ALSA 清单。在本地,我将拥有两个完整的项目副本。一份给大师,一份给 ALSA。这就是你的建议吗?
    • 如果有多个 git 分支出来,我会这样做。我初始化/同步两个存储库并更改其中一个的清单。如果我需要对我的功能分支的主分支进行一些更改,我可以做一个git merge --no-ff
    • 好吧,我没想过有两个 repos,但这似乎是一个可行的解决方案。谢谢迈克尔。
    猜你喜欢
    • 1970-01-01
    • 2023-02-08
    • 1970-01-01
    • 1970-01-01
    • 2012-07-04
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多