如何管理下戴来的git到自己的server上 (EX:TI download的code自己需要修改并管理)


  1. 只针对单一一个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


  1. 针对一整个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



留言