使用Git Lite工作流程的Debian Wheezy本地Git服务器
介绍
这个方法描述了一个小团队的共享本地git [1]服务器设置。 任何曾经使用传统版本控制系统的人都熟悉的存储库布局。
教程目标之一是显示准备服务器的详细步骤(由于其权威角色,这里称为库),并在Github , Gitorious [2,3]等公共服务器上发布代码。 al。
第二个目标是在团队开发中引入Git Lite Workflow 。 这作为gits强大的分支和合并功能的介绍。 您的个人喜爱的工作流程可能与此模型不同。 对于功能丰富的工作流程,虽然更复杂,请参阅nvie [4]。
为了方便描述,我们有两个团队成员。 爱丽丝谁编码并负责所有版本。 第二个团队开发人员是比尔 。 他们的共享git服务器的私有IP地址为192.168.0.100
。
他们都为一个开源友好的公司Example with domain example.com工作 。 Alice已经在Github上建立了一个项目库,网址为https://github.com/alice/My-Module.git
。
如果要重播此方法,请设置一个免费的公共Github仓库。 遵循Githubs说明,但不要添加README
或.gitignore
文件。 这样可以将现有存储库推送到此Github资源库。
本教程已在Debian Wheezy上进行了以下版本的测试:
$ uname -a ; lsb_release -d ; git --version ; ssh -V
Linux debinix 3.2.0-4-686-pae #1 SMP Debian 3.2.32-1 i686 GNU/Linux
Description: Debian GNU/Linux testing (wheezy)
git version 1.7.10.4
OpenSSH_6.0p1 Debian-3, OpenSSL 1.0.1c 10 May 2012
在服务器上安装git
安装git并在仓库服务器上创建一个git1用户,以授权git push和pull访问。 作为一个额外的预防措施,限制这个git1用户只使用一个名为git-shell的有限的shell工具进行git活动 。 这是包含在git中。 以此作为shell,我们的git1用户无法对git服务器进行正常的shell访问。
# aptitude install git
在adduser脚本中为此git1用户添加新密码,并使用例如Git Group 1作为全名 。
# adduser --shell /usr/bin/git-shell git1
要使用这个共享的git软件仓库, Alice和Bob必须知道这个密码才能在这个项目中作为一个团队进行协作。 如果需要非常细粒度的访问控制,请查看gitolite项目[5]。
确认git1用户shell设置为git-shell :
# cat /etc/passwd | grep git1
Git第一次设置包括添加软件仓库用户信息:
# git config --system user.name "Git Depot"
# git config --system user.email "root@example.com"
如果安装了shell,则可以远程执行服务器任务。 如果尚未安装,请安装:
# aptitude install openssh-server
在服务器上创建共享的git项目库
仓库的根是例如在/ srv下
创建的:
# mkdir /srv/git1
# chown root:git1 /srv/git1
# chmod 0750 /srv/git1
创建一个项目并将其命名为My-Module.git :
# mkdir /srv/git1/My-Module.git
# chmod 0750 /srv/git1/My-Module.git
在项目目录中初始化一个裸git仓库:
# cd /srv/git1/My-Module.git
# git --bare init
# chown -R git1:git1 /srv/git1/My-Module.git
重复这五个步骤,在仓库服务器上设置一个新的项目。
git用户的项目认证
用户使用ssh密钥进行身份验证。 Alice和Bill不需要键密码,因为服务器上的git使用git1帐户密码进行授权。 注意:如果已经存在,则不需要创建新的ssh密钥。 也可以用于git服务器。
在Alice工作站上,将用户切换到alice并在创建密钥时接受默认的ssh-keygen选项:
# su alice
$ ssh-keygen
这在目录〜/ .ssh
中创建了id_rsa.pub
文件。
将其公钥复制到仓库服务器(而不是私钥!)。
$ exit
# scp /home/alice/.ssh/id_rsa.pub root@192.168.0.100:/tmp
使用ssh访问地址192.168.0.100
的仓库服务器:
# ssh root@192.168.0.100
root@192.168.0.100's password: *********
在服务器上登录后,将该密钥附加到/home/git1/.ssh中的 git1 authorization_keys
文件。 可以使用shell脚本添加新用户:
# cd /usr/local/bin
# nano ssh.addkey
在此文件中添加:
#!/bin/sh test ! -d /home/$1/.ssh && mkdir /home/$1/.ssh chmod 0700 /home/$1/.ssh cat /tmp/id_rsa.pub >> /home/$1/.ssh/authorized_keys chmod 0600 /home/$1/.ssh/authorized_keys chown -R $1:$1 /home/$1/.ssh rm /tmp/id_rsa.pub
保存它并使此脚本可执行:
# chmod 0700 ssh.addkey
# exit
对此脚本添加适当的错误检查。 无论何时需要将新用户添加到群发服务器上的git1组中,如下所示:
# ssh root@192.168.0.100 ssh.addkey git1
不要忘记将ssh密钥复制到服务器上的目录/ tmp
上。
桌面(爱丽丝)git准备
在alice机器上安装git和gitk (修订树可视化程序):
# aptitude install git
# aptitude install gitk
添加一些关于爱丽丝的信息 :
# su alice
$ git config --global user.name "Alice"
$ git config --global user.email "alice@example.com"
继续并在〜/ .gitconfig中
添加一些有用的设置:
$ nano ~/.gitconfig
在文件中添加这些行:
[user] name = Alice email = alice@example.com [color] ui = auto [core] editor = /bin/nano [alias] com = commit sta = status sw2 = checkout nbr = checkout -b vhi = <see Note 2> vbr = branch -a vre = remote -v mer = merge --no-ff mef = merge --ff-only dif = diff --staged
合并选项--no-ff可帮助维护历史记录,在将其提交到特定功能之后,该历史记录被合并到另一个分支中。
当然,您可以将任何您喜欢的开发文件放在项目目录中,但为了这个目的, Alice计划一个新的Perl模块。 Alice明智地启动了新的Perl项目,并安装了一个全面的Perl存档网络( CPAN [6])发行版,可以帮助您创建一个名为Module :: Starter :: PBP的好的起始文件集。
# aptitude install libmodule-starter-pbp-perl
要设置模块启动器 (即设置其配置和模板),请以用户alice运行:
$ perl -MModule::Starter::PBP=setup
Creating /home/alice/.module-starter/PBP...done.
Creating /home/alice/.module-starter/PBP/t...done.
Creating /home/alice/.module-starter/config...
Please enter your full name: Alice Wonderland
Please enter an email address: alice@example.com
Writing /home/alice/.module-starter/config...
done.
Installing templates...
/home/alice/.module-starter/PBP/Build.PL...done
/home/alice/.module-starter/PBP/Makefile.PL...done
/home/alice/.module-starter/PBP/README...done
/home/alice/.module-starter/PBP/Changes...done
/home/alice/.module-starter/PBP/Module.pm...done
/home/alice/.module-starter/PBP/t/pod-coverage.t...done
/home/alice/.module-starter/PBP/t/pod.t...done
/home/alice/.module-starter/PBP/t/perlcritic.t...done
Installation complete.
配置文件位于〜/ .module-starter
。
选项 :要直接从CPAN安装最新的Module :: Starter :: PBP模块,请使用Perl安装程序工具cpanminus 。 作为根安装cpanminus :
# aptitude install cpanminus
# cpanm Module::Starter::PBP