ゼロからrepoサーバを構築する
ここにはrepo+gitサーバ構築と書かれています.クライアントが新しい会社に出勤するわけではありません.会社がAndroid方面の開発を新しくしたためです.Androidを知っている人はいないので、自分でAndroidコード管理ツールを構築するしかありません.gitosis+repoに基づいてAndroidコードを管理します.この環境を構築するのに1週間の時間を浪費する.この文章は他の人のブログも参考にしています!前者の貢献に感謝します.シナリオメーカーが私たちにくれたAndroidソースはgitを持たないので、純粋なAndroidソースです.私は2台のコンピュータAをコードサーバー(192.168.100.182)Bクライアント(192.168.100.181)に使用しています.まず、A側にsudo apt-get install git-core openssh-server openssh-clientインストールgitをインストールする過程で、主にubuntuの中国語サイトからアクセスする問題に遭遇する可能性があります.英語サイトで関連ファイルをダウンロードし、手動でインストールできます.皆さんにリンク先をあげます.http://archive.ubuntu.com/ubuntu/pool/main/2,Aサーバー側でダウンロードしてgitosisをインストールして勝手に1つのディレクトリを創立します例えば:gitosis_setup
gitosisディレクトリに入りgitosisをインストール
注意:python setupの場合.py installに失敗しました.python-setuptoolsをインストールする必要があります.py sudo apt-get install python-setuptools.py
上のmynameはdspと書きましたが、myname@serverと書く[email protected]会社のメールアドレスです.個人の状況によって記入します.gitosisのシステムユーザーを作成(現在のユーザーはwirror 800)
この方法はネット上で比較的によく見られる方法で、作成したのはパスワードを無効にするgitユーザー3で、新しいgitosis管理者はAがサーバーであれば、B(192.168.100.181)は私のコードサーバーがパソコンを管理するので、Aパソコンのユーザーを管理者としないほうがいいです.私はBパソコンのdynaユーザーをgitosis管理者として使います.B端でコマンドssh-keygen-t rsaを使用してpubを生成する.key
Bクライアントは/home/dyna/.ssh/id_rsa.pubの下.scp/your pub_を使用できますpath/id_rsa.pub ${SERVER_IP}:id_rsa.pubまたはUディスクコピーまたはその他の方法.id_をrsa.pubはAのtmpディレクトリにコピーする
(またはgitユーザに切り替えるgitosis-init
クライアントBでgitosis-adminをサーバからクローンする.gitはB端dynaディレクトリの下のtestディレクトリにあります
次のファイルが表示されます.confとkeydir/,gitosis.confはgitosisのプロファイルで、ユーザーと権限を構成し、keydir/はすべてのグループメンバーの公開鍵です.vi gitosis.牙列缺损confファイル、内容:
5、クライアントBでメンバーの公開鍵をシステムに追加します.例えば、私は今ユーザーallenをgitosisシステムに追加します.後でパスワード免除にアクセスします.allenコマンドssh-keygen-t rsa生成keyの過程でenterキーをノックします.パスワードを入力しないでallen生成id_を生成します.rsa.pubはBクライアントgitosis-adminの下にコピーしallenと命名する.pub
修正するconfファイルの一番後ろに次の文字を追加します.
倉庫(appsという名前)writable=apps読み取り可能書き込み可能なアクセス可能なメンバーを追加するにはallenとdyna@dyna-PowerEdge-R720
以下のブログを参考にhttp://blog.csdn.net/wirror800/article/details/5189564Android repo管理サーバの構築サーバA側に/home/git/repositoriesディレクトリが既に存在する場合は、repositoriesを作成する必要はありません.
git-daemonを構築するときにgit-daemon-sysvinitを使っています.git-daemon-runでずっと問題が発生しています.仕事をしない
3.プロファイルのこの場所の前にいくつかの問題が発生して、それから私はまた一歩分析/etc/init.d/git-daemonスクリプトファイル、最後に構成方法を見つけました.プロファイルは/etc/default/git-daemonで編集sudo vi/etc/default/git-daemonを開きます.私が使用しているgit倉庫としてのディレクトリは/home/git/repositoriesです.あなたたちは自分と同じものに変えればいい.
この文章を参考にして構築することができるhttp://blog.csdn.net/fdl19881/article/details/8679469ここでGIT_DAEMON_ENABLE=trueは明らかにtrue値に設定されているGIT_DAEMON_USER=gitこれはあなたがどのユーザーでgit-daemonを実行したいかによって決まります.一般的には安全のために他のユーザーを設定しなければなりません...注意!!設定したこのユーザーは必ずGIT_DAEMON_BASE_PATHには、読む、書く、実行するすべての権限があります!!ls-ld git倉庫ディレクトリを使用してdrwxとして表示できます.git倉庫が自分の個人ディレクトリの下にある場合は/home/use_です.nameの下では、あなたのユーザー名が間違いないように設定されています.GIT_DAEMON_DIRECTORY="/var/cache/git/home/git/repositories"これはディレクトリホワイトリストに設定されていますwhitelist!!設定しないとgit操作時にgit clone、git pushなどのユーザーにno such directoryが現れる.サーバマシンに/var/log/sysyslogに'/home/git/repositories/xxxが表示されます.git’: not in whitelist GIT_DAEMON_OPTIONSは設定パラメータです.アップロードしたい場合、すべてエクスポートします.設定–export-all–enable=upload-pack–enable=upload-archive–enable=receive-pack注意!見つからない場合は/home/git/repositoriesディレクトリの下にあるプロジェクトウェアハウスディレクトリの下にあるtouch git-daemon-export-ok..この名前のファイルを生成すればいいです.git push機能を使用するには、必ず-enable=receive-pack最後のGIT_を開きます.DAEMON_BASE_PATHはルートディレクトリを設定します.例えば私のような設定です.git cloneを使っています.git://your ip or name/test.gitの場合、gitサーバは/home/git/repositories/testを検索します.gitディレクトリです.
以上の設定が完了すると、起動するたびに自分で起動します.sudo service git-daemon start|restart|stop制御も使用できます.sudo/etc/init.d/git-daemon start|restart|stopでもよい.
そしてBクライアントで
を選択します.xmlはこのディレクトリにコピーされ、このファイルはこのAndroidソースとセットになっています.自分で他人の作成を参考にすることはできません.
上のdefault.xmlファイルpush倉庫へ
cat src.txt | ./src.shスクリプト内容
このスクリプトは、/home/git/repositoriesディレクトリの下に関連するgitウェアハウスを構築します.
Bクライアントでディレクトリ/home/dyna/or_android/何も持っていない.gitか.svnのきれいなAndroidソースはcat defaultを使用します.xml | cut -d ‘”’ -f 4 > des.txt
上の無関係文字をUTF-8 Makefileを削除して、サービス側のパスにアップロードするテキストを得るには、次のコマンドcat desを使用します.txt | ./des.sh des.shの内容は以下の通りである.
これでローカルAndroidソースをB側サーバー側の倉庫にプッシュしました.dynaディレクトリでgit-repoをダウンロードします.git git clone https://gerrit.googlesource.com/git-repo git-repo.git上の住所がだめなら.自分でネットでダウンロードできるものを探します.cd git-repo.git修正repo
git-repo.gitディレクトリの下のrepoを/usr/bin sudo cp repo/usr/bin新規ディレクトリmkdir/home/dyna/testテストAndroid cd test repo init-uにコピーgit://192.168.100.182/manifest.gitrepo sync以下は参考ブログです
http://blog.csdn.net/seker_xinjian/article/details/6232475 http://blog.csdn.net/fdl19881/article/details/8679469 http://blog.csdn.net/ice520301/article/details/6142503
mkdir ~/gitosis_setup
cd ~/ gitosis_setup
git clone git://eagain.net/gitosis
git clone https://github.com/res0nat0r/gitosis.git
gitosisディレクトリに入りgitosisをインストール
cd gitosis
sudo python setup.py install
注意:python setupの場合.py installに失敗しました.python-setuptoolsをインストールする必要があります.py sudo apt-get install python-setuptools.py
gitosis
git , gitosis 。 git, :
a@server:~$ git config –global user.name “myname”
a@server:~$ git config –global user.email “myname@server “
上のmynameはdspと書きましたが、myname@serverと書く[email protected]会社のメールアドレスです.個人の状況によって記入します.gitosisのシステムユーザーを作成(現在のユーザーはwirror 800)
sudo adduser --system --shell /bin/sh --gecos 'git SCM user' --group --disabled-password --home /home/git git
この方法はネット上で比較的によく見られる方法で、作成したのはパスワードを無効にするgitユーザー3で、新しいgitosis管理者はAがサーバーであれば、B(192.168.100.181)は私のコードサーバーがパソコンを管理するので、Aパソコンのユーザーを管理者としないほうがいいです.私はBパソコンのdynaユーザーをgitosis管理者として使います.B端でコマンドssh-keygen-t rsaを使用してpubを生成する.key
ssh-keygen -t rsa
Bクライアントは/home/dyna/.ssh/id_rsa.pubの下.scp/your pub_を使用できますpath/id_rsa.pub ${SERVER_IP}:id_rsa.pubまたはUディスクコピーまたはその他の方法.id_をrsa.pubはAのtmpディレクトリにコピーする
cd tmp
sudo chmod 777 id_rsa.pub
sudo -H -u git gitosis-init < id_rsa.pub
(またはgitユーザに切り替えるgitosis-init
sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update
クライアントBでgitosis-adminをサーバからクローンする.gitはB端dynaディレクトリの下のtestディレクトリにあります
git clone git@192.168.100.182:gitosis-admin.git
cd gitosis-admin
次のファイルが表示されます.confとkeydir/,gitosis.confはgitosisのプロファイルで、ユーザーと権限を構成し、keydir/はすべてのグループメンバーの公開鍵です.vi gitosis.牙列缺损confファイル、内容:
[gitosis]
[group gitosis-admin]
members = dyna@dyna-PowerEdge-R720
writable = gitosis-admin
[group gitosis-admin]
members = dyna@dyna-PowerEdge-R720
writable = gitosis-admin
5、クライアントBでメンバーの公開鍵をシステムに追加します.例えば、私は今ユーザーallenをgitosisシステムに追加します.後でパスワード免除にアクセスします.allenコマンドssh-keygen-t rsa生成keyの過程でenterキーをノックします.パスワードを入力しないでallen生成id_を生成します.rsa.pubはBクライアントgitosis-adminの下にコピーしallenと命名する.pub
cd ../gitosis-admin
cp allen.pub keydir/
git add allen.pub
修正するconfファイルの一番後ろに次の文字を追加します.
[group apps]
writable = apps
members = dyna@dyna-PowerEdge-R720 allen
倉庫(appsという名前)writable=apps読み取り可能書き込み可能なアクセス可能なメンバーを追加するにはallenとdyna@dyna-PowerEdge-R720
gitosis.conf
[gitosis]
[group gitosis-admin]
members = dyna@dyna-PowerEdge-R720
writable = gitosis-admin
[group apps]
writable = apps
members = dyna@dyna-PowerEdge-R720 allen
git commit -a -m "Granted new members commit rights to apps"
git push
git clone git@192.168.100.182:apps.git
gitosis
以下のブログを参考にhttp://blog.csdn.net/wirror800/article/details/5189564Android repo管理サーバの構築サーバA側に/home/git/repositoriesディレクトリが既に存在する場合は、repositoriesを作成する必要はありません.
sudo su git
cd /home/git
mkdir repositories
cd repositories
git init --bare manifest.git
git-daemonを構築するときにgit-daemon-sysvinitを使っています.git-daemon-runでずっと問題が発生しています.仕事をしない
sudo apt-get install git-daemon-sysvinit
3.プロファイルのこの場所の前にいくつかの問題が発生して、それから私はまた一歩分析/etc/init.d/git-daemonスクリプトファイル、最後に構成方法を見つけました.プロファイルは/etc/default/git-daemonで編集sudo vi/etc/default/git-daemonを開きます.私が使用しているgit倉庫としてのディレクトリは/home/git/repositoriesです.あなたたちは自分と同じものに変えればいい.
# Defaults for git-daemon initscript
# sourced by /etc/init.d/git-daemon
# installed at /etc/default/git-daemon by the maintainer scripts
#
# This is a POSIX shell fragment
#
GIT_DAEMON_ENABLE=true
GIT_DAEMON_USER=git
GIT_DAEMON_DIRECTORY=/home/git/repositories
# Additional options that are passed to the Daemon.
GIT_DAEMON_OPTIONS="--export-all --enable=upload-pack --enable=upload-archive --enable=receive-pack --informative-errors"
GIT_DAEMON_BASE_PATH=/home/git/repositories
この文章を参考にして構築することができるhttp://blog.csdn.net/fdl19881/article/details/8679469ここでGIT_DAEMON_ENABLE=trueは明らかにtrue値に設定されているGIT_DAEMON_USER=gitこれはあなたがどのユーザーでgit-daemonを実行したいかによって決まります.一般的には安全のために他のユーザーを設定しなければなりません...注意!!設定したこのユーザーは必ずGIT_DAEMON_BASE_PATHには、読む、書く、実行するすべての権限があります!!ls-ld git倉庫ディレクトリを使用してdrwxとして表示できます.git倉庫が自分の個人ディレクトリの下にある場合は/home/use_です.nameの下では、あなたのユーザー名が間違いないように設定されています.GIT_DAEMON_DIRECTORY="/var/cache/git/home/git/repositories"これはディレクトリホワイトリストに設定されていますwhitelist!!設定しないとgit操作時にgit clone、git pushなどのユーザーにno such directoryが現れる.サーバマシンに/var/log/sysyslogに'/home/git/repositories/xxxが表示されます.git’: not in whitelist GIT_DAEMON_OPTIONSは設定パラメータです.アップロードしたい場合、すべてエクスポートします.設定–export-all–enable=upload-pack–enable=upload-archive–enable=receive-pack注意!見つからない場合は/home/git/repositoriesディレクトリの下にあるプロジェクトウェアハウスディレクトリの下にあるtouch git-daemon-export-ok..この名前のファイルを生成すればいいです.git push機能を使用するには、必ず-enable=receive-pack最後のGIT_を開きます.DAEMON_BASE_PATHはルートディレクトリを設定します.例えば私のような設定です.git cloneを使っています.git://your ip or name/test.gitの場合、gitサーバは/home/git/repositories/testを検索します.gitディレクトリです.
以上の設定が完了すると、起動するたびに自分で起動します.sudo service git-daemon start|restart|stop制御も使用できます.sudo/etc/init.d/git-daemon start|restart|stopでもよい.
そしてBクライアントで
cd /home/dyna/
git clone git@192.168.100.182:manifest.git
cd manifest
を選択します.xmlはこのディレクトリにコピーされ、このファイルはこのAndroidソースとセットになっています.自分で他人の作成を参考にすることはできません.
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="ppbox" fetch=".." review="ssh://innrom.pptv.com/ppbox/mtk/" />
<default revision="ppbox-mtk15" remote="ppbox" sync-j="1" />
<project path="build" name="platform/build" >
<copyfile src="core/root.mk" dest="Makefile" />
</project>
<project path="abi/cpp" name="platform/abi/cpp" />
<project path="art" name="platform/art" />
<project path="bionic" name="platform/bionic" />
<project path="bootable/bootloader/lk" name="platform/bootable/bootloader/lk" />
<project path="bootable/diskinstaller" name="platform/bootable/diskinstaller" />
<project path="bootable/recovery" name="platform/bootable/recovery" />
<project path="cts" name="platform/cts" />
<project path="dalvik" name="platform/dalvik" />
<project path="developers/build" name="platform/developers/build" />
<project path="developers/samples/android" name="platform/developers/samples/android" />
<project path="development" name="platform/development" />
<project path="device/asus/deb" name="device/asus/deb" />
<project path="device/asus/flo" name="device/asus/flo" />
<project path="device/asus/flo-kernel" name="device/asus/flo-kernel" />
<project path="device/asus/grouper" name="device/asus/grouper" />
上のdefault.xmlファイルpush倉庫へ
git add .
git commit -m"Init Commit"
git push git push --all
A /home/git/repositories Android
project path
cat default.xml | cut -d '"' -f 2 > src.txt
A ,
cat src.txt | ./src.shスクリプト内容
#/bin/bash
set -x
set -e
pwd=${PWD}
cd /home/git/repositories
while read line; do
if [ -z "$line" ]; then
echo $work_dir not exist !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1>&2
continue
fi
git init --bare $line.git
echo ==== $line
pwd
done
このスクリプトは、/home/git/repositoriesディレクトリの下に関連するgitウェアハウスを構築します.
kernel.git mediatek.git
device manifest.git platform vendor.git
Bクライアントでディレクトリ/home/dyna/or_android/何も持っていない.gitか.svnのきれいなAndroidソースはcat defaultを使用します.xml | cut -d ‘”’ -f 4 > des.txt
cat default.xml | cut -d '"' -f 4
UTF-8
<manifest>
platform/build
Makefile
</project>
platform/abi/cpp
platform/art
platform/bionic
platform/bootable/bootloader/lk
platform/bootable/diskinstaller
platform/bootable/recovery
platform/cts
platform/dalvik
platform/developers/build
platform/developers/samples/android
platform/development
device/asus/deb
device/asus/flo
device/asus/flo-kernel
device/asus/grouper
device/asus/tilapia
device/common
device/generic/armv7-a-neon
device/generic/common
device/generic/goldfish
device/generic/mips
device/generic/mini-emulator-armv7-a-neon
device/generic/mini-emulator-mips
device/generic/mini-emulator-x86
device/generic/x86
device/google/accessory/arduino
device/google/accessory/demokit
device/lge/hammerhead
device/lge/hammerhead-kernel
device/lge/mako
上の無関係文字をUTF-8 Makefileを削除して、サービス側のパスにアップロードするテキストを得るには、次のコマンドcat desを使用します.txt | ./des.sh des.shの内容は以下の通りである.
#/bin/bash
set -x
set -e
para1=
work_dir=$1
pwd=${PWD}
while read line; do
line1=${line%%/*}
if [ -z "$line" ]; then
echo $work_dir not exist !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1>&2
continue
fi
if [ $(ls -A $pwd/$line | wc -l) -eq 0 ]; then
echo $work_dir empty !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1>&2
continue
fi
workdir=$pwd/$line
echo ==== $workdir
cd $workdir
rm -rf .git
git init . 1>&2
git add . -f 1>&2
git commit -m "Initial commit" 1>&2
if [ "$line1" = "device" ]; then
git push --set-upstream git://192.168.100.182/$line.git master
elif [ "$line1" = "kernel" ]; then
git push --set-upstream git://192.168.100.182/$line.git master
elif [ "$line1" = "mediatek" ]; then
git push --set-upstream git://192.168.100.182/$line.git master
elif [ "$line1" = "vendor" ]; then
git push --set-upstream git://192.168.100.182/$line.git master
else
git push --set-upstream git://192.168.100.182/platform/$line.git master
fi
cd -
done
これでローカルAndroidソースをB側サーバー側の倉庫にプッシュしました.dynaディレクトリでgit-repoをダウンロードします.git git clone https://gerrit.googlesource.com/git-repo git-repo.git上の住所がだめなら.自分でネットでダウンロードできるものを探します.cd git-repo.git修正repo
##
REPO_URL = 'https://gerrit.googlesource.com/git-repo'
REPO_REV = 'stable'
REPO_URL = /home/dyna/git-repo.git repo
REPO_REV = 'master' git branch git-repo.git ; git branch 。 master
git-repo.gitディレクトリの下のrepoを/usr/bin sudo cp repo/usr/bin新規ディレクトリmkdir/home/dyna/testテストAndroid cd test repo init-uにコピーgit://192.168.100.182/manifest.gitrepo sync以下は参考ブログです
http://blog.csdn.net/seker_xinjian/article/details/6232475 http://blog.csdn.net/fdl19881/article/details/8679469 http://blog.csdn.net/ice520301/article/details/6142503