Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15535135
  • 博文数量: 2005
  • 博客积分: 11986
  • 博客等级: 上将
  • 技术积分: 22535
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-17 13:56
文章分类

全部博文(2005)

文章存档

2014年(2)

2013年(2)

2012年(16)

2011年(66)

2010年(368)

2009年(743)

2008年(491)

2007年(317)

分类: 嵌入式

2011-02-07 19:48:09

repo init -u git://10.0.67.68/android/platform/manifest.git --repo-url=git://10.0.67.68/android/tools/repo.git

在.repo/manifest.xml加入kernel



还需要加入具体的revision号(也可以是hash id或者是固定的tags号revision="refs/tags/android-2.2_r1.3")

或者

否则repo sync时将会提示如下错误
Fetching projects: 100% (171/171), done.
Syncing work tree: 66% (113/171) error: revision master in kernel/common not found



Creating an Android Mirror
1. Prerequisites/Assumptions
install repo git

2.Setting up a Git Server
a.sudo apt-get install git-daemon
b.change iptables, git-daemon use tcp port 9481
sudo /sbin/iptables -A INPUT -p tcp -m tcp --dport 9481 -j ACCEPT
c.config /etc/sv/git-daemon/run, to export git trees in "/opt/coderepo"
====================================================
#!/bin/sh
exec 2>&1
echo 'git-daemon starting.'
exec git-daemon --verbose --export-all --base-path=/opt/coderepo /opt/coderepo
====================================================

restart git-daemon: sudo /etc/init.d/git-daemon retart

d.git-dameon log file: /var/log/git-daemon/current
3. Using Git Behind a Firewall
install corkscrew
create a new file called "git-proxy.sh" with following contents and replace and
==================================================
#!/bin/sh
exec /usr/bin/corkscew $*
==================================================
chmod a+x git-proxy.sh
git config --global core.gitproxy '/git-proxy.sh'

to configure git to only use the proxy for specific URLs
git config --global core.gitproxy '"/git-proxy.sh" for kernel.org' 'for kernel.org$'
4. Create the mirror.
mkdir /opt/coderepo/myandroid
cd /opt/coderepo/myandroid
repo init -u git://android.git.kernel.org/platform/manifest.git --mirror
repo sync
5.change manifest.git config, if not , can not push code change
cd /opt/coderepo/myandroid/platform/manifest.git
edit config file, add following lines
[daemon]
uploadpack=true
uploadarch=true
receivepack=true
因为我按照如上方法完成之后git push时仍然出现如下问题
Counting objects: 5, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 312 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
error: unpack failed: unpack-objects abnormal exit
To git://10.0.67.68/android/platform/manifest.git
! [remote rejected] master -> master (n/a (unpacker error))
error: failed to push some refs to 'git://10.0.67.68/android/platform/manifest.git'
那么最简答的解决办法就是将上面的设置去掉恢复到android默认的所有内容
然后修改权限让其他组用户可以写你的git仓库
luther@gliethttp:/vobs/git_repos/android-pub-mirror$ sudo chmod o+w -R platform/manifest.git
这样之后就可以正常的git push了[luther.gliethttp]

6. change manifest.git
其实直接git clone git://10.0.67.68/android/platform/manifest.git然后git push即可[luther.gliethttp]
a.clone manifest.git
cd ~
git clone git://android.git.kernel.org/platform/manifest.git

b.Edit the file "~/manifest.git/default.xml"


- fetch="git://android.git.kernel.org/"
+ fetch="git:///myandroid/"
review="review.source.android.com" />
remote="korg" />

c. commit and push this change.
git commit -a
git push git:///myandroid/platform/manifest.git
7. The setup of the mirror is now complete. make a test
cd ~
mkdir testmirror
repo init -u git:///myandroid/platform/manifest.git
repo sync

8.References




repo mirror允许上传:
repo forall -c 'git config receive.denyNonFastForwards True'
repo forall -c 'git config daemon.uploadpack true'
repo forall -c 'git config daemon.uploadarch true'
repo forall -c 'git config daemon.receivepack true'

阅读(11494) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~