IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Git install on Debian system.

    聂文龙发表于 2016-06-04 02:36:00
    love 0

    sudo chown -R git:git /home/git/repositories

    sudo chmod -R 777 /home/git/repositories

    git commit -am 'add Shop-Project and Shop group' 

    git remote add origin git@192.168.10.15:Shop-Project.git

    chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update

    git clone git@192.168.10.15:gitosis-admin.git


    1. 安装git

    emerge -av dev-util/git

    2.安装gitosis

    git环境默认是可以直接使用的,但需要为每个成员开ssh权限帐号,且各个仓库之间的交叉权限管理很麻烦,所以需要使用gitosis, 它无需为每个开发人员开设ssh帐号,安全方便。

    emerge -av gitosis

    如果提示这个包被mask了,需要编辑/etc/portage/package.keywords文件,在里面加入

    dev-util/gitosis ~amd64

    3.生成公钥

    在客户端使用

    ssh-keygen -t rsa

    来生成ssh的key,注意你的主机名需要是全部英文字符,不能有下划线或者.之类的特殊字符,否则后面在服务端生成版本库的时候会报错。

    4.上传公钥

    从客户端把刚刚生成的公钥上传到服务器上。

    scp ~/.ssh/id_rsa.pub USER@YOUR_SERVER:/tmp

    5.在服务端生成管理库

    sudo -H -u git gitosis-init < /tmp/id_rsa.pub

    成功的话,你将看到类似下面的提示:

    Initialized empty Git repository in /var/spool/gitosis/repositories/gitosis-admin.git/

    Reinitialized existing Git repository in /var/spool/gitosis/repositories/gitosis-admin.git/

    设置post-update脚本权限

    chmod 755 /var/spool/gitosis/repositories/gitosis-admin.git/hooks/post-update

    至此,服务端配置已经完成。

    6.同步配置文件

    gitosis本身就是一个git库,所以管理起来非常方便。下面在客户端同步gitosis管理库

    git clone git@YOUR_SERVER:gitosis-admin.git

    cd gitosis-admin

    你将看到以下文件

    -rw-r--r-- 1 garry garry 104 Nov 13 05:43 gitosis.conf

    drwxr-xr-x 3 garry garry 102 Nov 13 05:43 keydir/

    gitosis.conf是gitosis的配置文件,用于配置用户和权限

    keydir/是所有组成员的公钥

    我们可以在本地修改配置更改权限,然后push到服务端后,服务器端就立刻生效

    7.创建新的repositories

    打开gitosis.conf文件,你将看到

    [group gitosis-admin]

    writable = gitosis-admin

    members = elton@macbook

    这个是管理组的权限,members中的用户名就是刚才上传的公钥里面的用户名。

    在这个文件后面加入:

    [group myteam]

    members = elton@macbook

    writable = free_monkey

    这里你定义了一个叫myteam的组,授予elton@macbook这个用户写“free_monkey”这个repo的权限

    git commit -a -m "Allow elton write access to free_monkey"

    git push

    上面的操作就更新了服务端的权限。

    下面就开始创建free_monkey的repo

    mkdir free_monkey

    cd free_monkey

    git init

    创建 .gitignore 文件,用于忽略某些不需要进行代码管理的内容,如rails的应用可能如下:

    .DS_Store

    log/*.log

    tmp/**/*

    config/database.yml

    db/*.sqlite3

    提交代码:

    git remote add origin git@YOUR_SERVER_HOSTNAME:free_monkey.git

    git add .

    git commit -a -m "initial import"

    git push origin master:refs/heads/master

    接下来,可以增加成员的公钥到系统中了

    cd gitosis-admin

    cp ~/alice.pub keydir/

    cp ~/bob.pub keydir/

    git add keydir/alice.pub keydir/bob.pub

    修改gitosis.conf

    [group myteam]

    - members = jdoe

    + members = jdoe alice bob

    writable = free_monkey

    提交修改:

    git commit -a -m "Granted Alice and Bob commit rights to FreeMonkey"

    git push

    其它成员就可以获取代码了

    git clone git@YOUR_SERVER:free_monkey.git

    @import url(http://www.cppblog.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);

    聂文龙 2016-06-04 10:36 发表评论


沪ICP备19023445号-2号
友情链接