对于Android开发,经常会涉及版本管理,如果从官方获取源码,可以在下载代码时直接获得mirror镜像,如果从第三方获取,那么就需要创建自己的仓库。
首先建立reposerver文件放置仓库,在该目录下执行
git init --bare manifest.git
从第三方获得代码在源码目录下有.git版本管理,我们需要将这个git版本对应的仓库放到服务器上。
首先将.repo目录下的manifest.xml拷贝出来并重名为default.xml,然后就可以删除当前的.repo目录以及所有的.git了
find . -name ".git" | xargx rm -rf
default.xml拷贝之后需要做一下改动,主要是fetch地址变更,部分内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote fetch="ssh://cxt@192.168.2.158/home/cxt/repositories/apq8909w/" name="origin" />
<default remote="origin" revision="o-smartwear-8909w-platform"/>
<project name="o-common/device/common" path="LINUX/android/device/common"/>
<project name="o-common/device/generic/arm64" path="LINUX/android/device/generic/arm64"/>
<project name="o-common/device/generic/armv7-a-neon" path="LINUX/android/device/generic/armv7-a-neon"/>
<project name="o-common/device/generic/car" path="LINUX/android/device/generic/car"/>
<project name="o-common/device/generic/common" path="LINUX/android/device/generic/common"/>
新建立一个文件夹git clone ssh://cxt@192.168.2.158/home/cxt/repositories/apq8909w/manifest.git
将这个default.xml提交到服务器
git add .
git commit -m "add default.xml"
git push origin master
服务器批量创建git仓库,这个可以通过脚本实现。
./getnames_and_create_project.py default.xml
服务器建立完成之后就需要在客户端提交代码了
./getnames_and_init_push_git_proj.py default.xml
此脚本会解析default.xml里的name和path,
会先分析本地path是否为空目录,如果是空目录的话则会创建一个“.gitignore”文件,防止空目录提交失。
然后初始化本地path路径的代码,作为git工程提交到服务器端的name指定路径下。执行完之后就可以通过repo下载代码了
repo init -u ssh://cxt@192.168.2.158/home/cxt/repositories/apq8909w/manifest.git
在原来的git仓库下,将代码移植到另外一个仓库,同时保持git commit 信息。
1.在新路径下建立一个空的同名git仓库,
2.在源码路径下的.git/config文件,将url替换为新的仓库路径即可。
url = https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/device/linaro/hikey
url = git@172.16.250.30/home/kotei/cxt/test/device/linaro/hikey
还有一个branch 需要注意,最好统一改成master分支,当前的代码分支也需要在master分支。
[branch "master"]
remote = origin
merge = refs/heads/master