- 只针对单一一个Git的时後
- 先建立一个空的git repo
$ mkdir /path/to/new_repo
$ cd /path/to/new_repo
$ git --bare init
- 将原本下戴好的git file push到刚刚新建立的git repo
- 将原来下戴的code branch name =topic1 push 到server上命名为master
- 因为有+代表保留了commit message
$ cd /path/to/existing_repo
$ git push ssh://my_host/new_repo +topic1:master
- 针对一整个repo的时後
- repo的运作原理就是用来管理git的script
- 建立自己的repo
- mkdir repositories
- cd repositories
- git init --bare manifest.git
- Create test project
- cd repositories
- git init --bare project1.git
- Edit git daemon
- sudo vim /etc/sv/git-daemon/run
- Modify the last line to:
- exec git-daemon --verbose --enable=receive-pack --export-all --base-path=/home/seker/repositories
- Reboot the machine
- Customize manifest.git
- mkdir MyRepo
- cd MyRepo
- git clone seker@192.168.5.141:repositories/manifest.git
- cd manifest
- vim default.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <manifest>
- <remote name="korg" fetch="git://192.168.5.141/" review="review.source.android.com" />
- <default revision="master" remote="korg" />
- <project path="project1" name="project1" />
- </manifest>
- xml 可以参考https://git-repo.googlecode.com/git-history/v1.6.8.2/docs/manifest-format.txt
- git add --all
- git commit -a -m "add default.xml"
- git push --all
- Customize Project1.git
- cd MyRepo
- git clone seker@192.168.5.141:repositories/project1.git
- cd project1
- echo "Hello Project1" > Hello.txt
- git add --all
- git commit -a -m "add Hello.txt"
- git push --all
- Test Repo Server
- mkdir bin
- curl http://android.git.kernel.org/repo > ~/bin/repo
- chmod a+x ~/bin/repo
- Export ~/bin to system enviroment path.
- mkdir MyProject
- cd MyProject
- repo init -u git://192.168.5.141/manifest.git
- repo sync
接著遇到的问题是如何管理下戴来的整个Repo
我目前的做法是如下(不一定是好的方法 只是一个想法)
- 建立一个参照下戴来的repo格式的位置的repo
- EX: <project path="bionic" name="platform/bionic" /> <project path="bootable/bootloader/legacy" name="platform/bootable/bootloader/legacy" />
- git bare --init platform/bionic.git
- git bare --init bootable/bootloader/legacy.git
- 我用自己写的script去建造所有的git init
- 把所有git建立同样名称的branch (取master_test)
- repo start master_test --all
- 看起来不是每个git一定会建立成功 有些git是detached HEAD
- 进到各个git的位置执行 (我也是自己写script执行)
git push ssh://my_host/new_repo +master_test:master
- 其他local端就可以开始下戴
- repo init -u git://192.168.5.141/manifest.git
- repo sync
留言
張貼留言