linux- gitosis私有git库服务器端配置
(2015-07-08 23:13:59)
标签:
itgitgitosis |
分类: linux那些事 |
—————————————gitosis安装 ————————————
yum install python-setuptools
$ git clone git://eagain.net/gitosis.git
$ cd gitosis
$ sudo python setup.py install
—————————————PC客户端端 ————————————
管理员
生成公钥
ssh-keygen -t rsa
PC用户端上传公钥到服务器
scp ~/.ssh/id_rsa.pub root@115.28.212.80:/tmp/
上传到服务器以后 服务器端需要追加到 authorized_keys
cat /tmp/id_rsa.pub >>/home/git/.ssh/authorized_keys
—————————————服务器端—————————————
添加git用户
sudo useradd -r -s /bin/sh -c 'git version control' -d /home/git
git
切换到git用户下初始化仓库
[git@iZ28dk58indZ gitosis]$su git
[git@iZ28dk58indZ gitosis]$ gitosis-init
初始化空的 Git 版本库于 /home/git/repositories/gitosis-admin.git/
重新初始化现存的 Git 版本库于 /home/git/repositories/gitosis-admin.git/
修改上传权限
sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update
初始化后生成的2个目录
[git@iZ28dk58indZ gitosis]$ ls /home/git/
gitosis
用户在服务器端存放的公钥
ls /home/git/repositories/gitosis-admin.git/gitosis-export/keydir
pm@banyar.com.pub
编辑可以看到管理员对应 一个 keydir里面的公钥
vi
/home/git/repositories/gitosis-admin.git/gitosis.conf
[gitosis]
[group gitosis-admin]
members = pm@banyar.com
writable = gitosis-admin
Administrator@WIN-PP5A961BO2D
Administrator@WIN-MKKI9I555B9
pm@banyar.com
用pm@banyar.com首次提交push会出现
chilitekiMacBook-Pro:banyar chili$ git push
warning: push.default is unset; its implicit value has changed in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the traditional behavior, use:
To squelch this message and adopt the new behavior now, use:
执行
再次
chilitekiMacBook-Pro:banyar chili$ git push
git add .
git commit -m "init"
git remote add origin git@115.28.212.80:banyar.git
git push
fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use
这是错误提示直接使用
git push --set-upstream origin master
如果push出现如下错误
ERROR:gitosis.serve.main:Repository read access denied
fatal: Could not read from remote repository.
cat /home/git/.ssh/authorized_keys
cat gitosis-export/keydir/pm@banyar.com.pub
然后查看配置文件 配置是否正确
[gitosis]
[group gitosis-admin]
members = pm@banyar.com
writable = gitosis-admin
[repo banyar]
gitweb = yes
owner = pm@banyar.com
[group banyar]
writable = banyar
members
—————————————在本地管理git—————————————
首先先把管理的gitosis-admin.git克隆下来
git clone git@x.x.x.x:gitosis-admin.git
比如要新增用户
先把pub
添加到 本地
gitosis-admin.git的keydir目录下面
Administrator@WIN-MKKI9I555B9.pub
Administrator@WIN-MKKI9I555B9.pub
如果使用命令添加用户则使用如下命令(不知道为什么默认添加用户会在gitosis.conf配置文件中用户前加@
members
我的环境加上@号配置文件就不管用了 所以这个命令添加还是有点问题的
git add .
git commit -m "add user:Administrator@WIN-PP5A961BO2”
git push
可以直接vigitosis-admin.git下得
gitosis.conf 文件
然后添加用户
[group banyar]
writable = banyar
members
修改完后执行把配置文件同步到服务器端
git add .
git commit -m ‘add user’
git pull
git push
[repo banyar]
gitweb = yes
owner = pm@banyar.com Administrator@WIN-MKKI9I555B9
—————————————如果新增用户需要输入git@ip:xxx.git的密码—————————————
linux在添加git用户的时候默认是没有密码的但是没有密码 新增用户clone不下来
所有需要在服务器端 passwd git 设置新的密码 然后 用这个密码 就可以clone 和其他的操作了
—————————————新建git实例—————————————
mkdir test
cd test/
touch adx.txt
vi
adx.txt
git add . 如果出现如下错误 需要重新init下
fatal: Not a git repository (or any of the parent directories): .git
git init
Initialized empty Git repository in /Users/chili/test/.git/
git add .
git commit -m "add new pj"
[master (root-commit) ac65a9c] add new pj
create mode 100644 adx.txt
git remote add origin git@115.28.212.80:test.git
git push
fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use
初始化空的 Git 版本库于 /home/git/repositories/test.git/
Counting objects: 3, done.
Writing objects: 100% (3/3), 231 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@115.28.212.80:test.git
Branch master set up to track remote branch master from origin.
———————如果是window用工具
fatal: 'test.git' does not appear to be a git repository
fatal: Could not read from remote repository.
补充完全路径链接就可以了 (windows的坑)当然这个是除了 添加权限和添加公钥都对的情况下
出得错误
————————————— 如果需要git库同步网站根目录 —————————————
git init --bare www.banyar.cn.git
chown -R git:git www.banyar.cn.git/ #修改git目录的权限为git:git
cd
vi hooks/post-receive 写入
#!/bin/sh
set -e
git-update-server-info
git
--work-tree=/App/banyar checkout -f
chown
-R git:git /App/banyar
chmod
+x post-receive
chown
-R git:git hooks/post-receive
也可以在www.banyar.cn.git目录下手动同步到根目录
git
--work-tree=/App/banyar checkout -f
——客户端------
git
init www.banyar.cn.git
git clone git@115.28.212.80:www.banyar.cn.git
cd www.banyar.cn/
touch abc.php
git add .
git commit -m "add file"
git pull
git push