git merge官方源代码到本地服务器

使用场景:

  手头上有一份RK的android SDK包,里面有详细的git修改记录,并且已经把该SDK包推送到本地服务器上去了,git的代码路径还是保留和RK官方一致,当然RK的SDK包也是和google官方的保持一致

现在RK的SDK包有了更新,要merge到本地服务器,并且保留修改记录

1. 新增文件夹的情况,比如这次RK更新多了external/bluetooth_rtk/bluedroid这个路径

    首先把external/bluetooth_rtk/bluedroid scp到本地服务器对应的路径,然后在本地新建external/bluetooth_rtk文件夹,用命令:

     git clone ssh://venus/home/git/android/lollipop/platform/external/bluetooth_rtk/bluedroid.git 克隆一份到本地,新建和本地服务器一样的分支git branch ll-rk3288-5.1;

   接着git checkout ll-rk3288-5.1; git push origin HEAD:ll-rk3288-5.1 即可提交代码,最后修改.repo/manifest.xml文件新增该分支即可,这样即可保留bluetooth_rtk原来的修改记    录


2. 合并代码的情况,external/sepolicy/目录有代码更新,那么先在RK官方源代码包路径external/sepolicy下用git remote -v查看远程路径:

 

lsc@lsc:~/newDisk3/RKSDK/rk3288-box/external/sepolicy$ git remote -v
rk	ssh://[email protected]/repo/platform/external/sepolicy (fetch)
rk	ssh://[email protected]/repo/platform/external/sepolicy (push)

然后在本地仓库 git remote add test ssh://[email protected]/repo/platform/external/sepolicy添加远程分支,我这里起的名字是test

接着git fetch test获取所有分支,选择需要合并的分支,比如我这里的分支是remotes/rk/rk32/mid/5.1/develop,用:

git merge remotes/rk/rk32/mid/5.1/develop即可合并,最后git push origin HEAD:ll-rk3288-5.1提交代码即可


3. 存在问题:

我觉得这样的方法效率太低了,比如Android代码有几百个git分支,不知道那个分支代码是有更新的,现在使用比对工具比对常用的代码路径来更新的

后来想过用repo forall 来更新的,比如repo forall -c "$  REPO_PROJECT"可以获得所有git路径,只要稍加修改就能符合要求了,但是需要合并的RK SDK包的git分支不是同一个,有些目录分支是不一样的。

再个就是需要在线更新,本来我本地已经有一份最新的SDK包了,但是用git remote add test 本地路径  这个方法是不行的,或许用以下几个变量结合能达到效果,但懒得试了

Options

l         -c:后面所带的参数着是shell指令

l         -p:shell指令输出之前列出项目名称

l         -v:列出执行shell指令输出的错误信息

 additional environment variables:

l         REPO_PROJECT:指定项目的名称

l         REPO_PATH:指定项目在工作区的相对路径

l         REPO_REMOTE:指定项目远程仓库的名称

l         REPO_LREV:指定项目最后一次提交服务器仓库对应的哈希值

l         REPO_RREV:指定项目在克隆时的指定分支,manifest里的revision属性


我想应该有更好的办法吧,只是我没有找到,否则RK原厂是怎么合并google官方源代码的呢?


你可能感兴趣的:(framework)