加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

linux- gitosis私有git库服务器端配置

(2015-07-08 23:13:59)
标签:

it

git

gitosis

分类: 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  repositories


用户在服务器端存放的公钥

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:


  git config --global push.default matching


To squelch this message and adopt the new behavior now, use:


  git config --global push.default simple


执行  


 git config --global push.default matching

 git config --global push.default simple

 git config --global user.name "pm@banyar.cn"

 git config --global user.email pm@banyar.cn

再次 

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


这是错误提示直接使用 

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  在这里有对应的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  = user1 user2 pm@banyar.com   #注意每个名字前不需要加@号


—————————————在本地管理git—————————————


首先先把管理的gitosis-admin.git克隆下来

git clone git@x.x.x.x:gitosis-admin.git


比如要新增用户

先把pub 添加到 本地 gitosis-admin.gitkeydir目录下面 

Administrator@WIN-MKKI9I555B9.pub

Administrator@WIN-MKKI9I555B9.pub 

如果使用命令添加用户则使用如下命令(不知道为什么默认添加用户会在gitosis.conf配置文件中用户前加@ members  = @user1

我的环境加上@号配置文件就不管用了 所以这个命令添加还是有点问题的  

git add .

git commit -m "add user:Administrator@WIN-PP5A961BO2”

git push

可以直接vigitosis-admin.git下得 gitosis.conf 文件 

然后添加用户 

[group banyar]

writable = banyar

members  = user1 user2 pm@banyar.com

修改完后执行把配置文件同步到服务器端

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

 1 file changed, 1 insertion(+)

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 push --set-upstream origin master


 git push --set-upstream origin master 提交成功 

初始化空的 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

 * [new branch]      master -> master

Branch master set up to track remote branch master from origin.



———————如果是window用工具  git clone git@x.x.x.x:test.git出现如下错误————————

fatal: 'test.git' does not appear to be a git repository

fatal: Could not read from remote repository.

补充完全路径链接就可以了 (windows的坑)当然这个是除了 添加权限和添加公钥都对的情况下 出得错误 

 git clone git@x.x.x.x:/home/git/repositories/test.git


————————————— 如果需要git库同步网站根目录 —————————————

git init --bare www.banyar.cn.git

chown -R git:git www.banyar.cn.git/ #修改git目录的权限为git:git

cd  www.banyar.cn.git

vi hooks/post-receive 写入

#!/bin/sh

set -e

git-update-server-info

git --work-tree=/App/banyar checkout -f  #需要注意这里的目录权限和组必须是git:git/App/banyar如果不是提交的文件同步不倒/App/banyar下 

chown -R git:git /App/banyar 


chmod +x post-receive    #增加可执行权限 所有者并且修改文件所有者 git:git跟上面的保持一致  

chown -R git:git hooks/post-receive  #只有权限都一致了,才能把用户git提交的文件通过hooks/post-receive文件执行同步命令同步到/App/banyar目录下


也可以在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



0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有