美文网首页
AOSP之REPO操作

AOSP之REPO操作

作者: 赵海洋 | 来源:发表于2018-02-08 13:59 被阅读0次

    参考:

    常用命令

    abandon        Permanently abandon a development branch
    branch         View current topic branches
    branches       View current topic branches
    checkout       Checkout a branch for development
    cherry-pick    Cherry-pick a change.
    diff           Show changes between commit and working tree
    diffmanifests  Manifest diff utility
    download       Download and checkout a change
    grep           Print lines matching a pattern
    info           Get info on the manifest branch, current branch or unmerged branches
    init           Initialize repo in the current directory
    list           List projects and their associated directories
    overview       Display overview of unmerged project branches
    prune          Prune (delete) already merged topics
    rebase         Rebase local branches on upstream branch
    smartsync      Update working tree to the latest known good revision
    stage          Stage file(s) for commit
    start          Start a new branch for development
    status         Show the working tree status
    sync           Update working tree to the latest revision
    upload         Upload changes for code review
    

    常用链接

    # 环境变量
    export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
    export REPO_URL='https://gerrit-googlesource.proxy.ustclug.org/git-repo'
    
    # .repo/manifests.git/config
    url = git://mirrors.ustc.edu.cn/aosp/platform/manifest
    
    # .repo/manifest.xml
    fetch="https://aosp.tuna.tsinghua.edu.cn"
    

    单个仓库链接拼装

    比如: manifest里project路径是platform/prebuilts/ninja/windows-x86,则git链接是 https://aosp.tuna.tsinghua.edu.cn/platform/prebuilts/ninja/windows-x86

    替换已有的 AOSP 源代码的 remote(以后从该remote同步代码)

    打包下载的aosp源码里的manifest内容是:

    <remote  name="aosp"
       fetch=".."
       review="https://android-review.googlesource.com/" />
    <default revision="master"
       remote="aosp"
       sync-j="4" />
    

    将 .repo/manifest.xml 这个 remote 的 fetch 链接改掉,diff如下:

      <manifest>
       <remote  name="aosp"
    -           fetch="https://android.googlesource.com"
    +           fetch="https://aosp.tuna.tsinghua.edu.cn"
                review="android-review.googlesource.com" />
       <remote  name="github" 
    

    初使化仓库并指定分支

    repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b emu-2.5-release
    

    与线上aosp同步

    repo sync
    

    如果当前目录只有.repo,则sync后目录下会出现很多代码文件夹。如:art、build、dalvik、developers、device、frameworks、hardware等

    同步时丢弃修改的代码

    如果本地版本库中的源代码有一些改动,执行上述命令后,会出现如下提示

    build/: discarding 1 commits
    dalvik/: discarding 2 commits
    kernel/: discarding 6 commits
    packages/apps/Calendar/: discarding 1 commits
    packages/apps/Contacts/: discarding 2 commits
    packages/apps/Mms/: discarding 1 commits
    packages/apps/Music/: discarding 1 commits
    packages/apps/Phone/: discarding 1 commits
    vendor/embinux/support-tools/: discarding 1 commits 
    

    这时需要使用下面的操作命令:

    1,repo forall -c git reset --hard
    2,repo init -u https://android.googlesource.com/platform/manifest -b android-7.0.0_r1
    3,repo sync
    

    仅从本地checkout出来代码,不从远程fetch

    repo sync --local-only  
    

    分支管理

    查看所有分支

    cd .repo/manifest
    git branch -a
    # 或
    git branch -a | cut -d / -f 3
    

    切换分支

    $ repo init -b android-4.2.2_r1 
    

    repo切换分支后,cat .repo/manifests.git/config 可见以下内容,在branch "default"merge那里,没切换前是merge = refs/heads/master,切换后如下:

    [core]
        repositoryformatversion = 0
        filemode = false
    [filter "lfs"]
        smudge = git-lfs smudge --skip -- %f
    [remote "origin"]
        url = git://mirrors.ustc.edu.cn/aosp/platform/manifest
        fetch = +refs/heads/*:refs/remotes/origin/*
    [branch "default"]
        remote = origin
        merge = refs/heads/android-4.2.2_r1
    
    # 创建自己的新分支
    $ repo start gingerbread-release --all 
    
    # 查看当前的分支
    $ repo branches
    

    切换代码分支

    repo checkout emu-2.6-release
    

    repo branches //查看分支

    repo status //查看文件状态

    Trace

    需要在shell里设置export REPO_TRACE=1,然后就能看到过程中使用的git指令。

    相关文章

      网友评论

          本文标题:AOSP之REPO操作

          本文链接:https://www.haomeiwen.com/subject/pdrttftx.html