服务器之家

服务器之家 > 正文

Git服务器的Gitosis安装配置及gitignore的使用方法

时间:2019-09-02 17:06     来源/作者:Caobaokang

Git服务器Gitosis安装设置

1、安装 openssh服务器
 

复制代码
代码如下:

sudo apt-get install openssh-server openssh-client

2、创建个人公钥和私钥

 

在默认用户的主目录路径下,运行以下命令,按照提示创建公钥和私钥
 

复制代码
代码如下:

ssh-keygen -t rsa

默认生成2048位,如果需要提高安全级别,也可以通过下面的命令创建公钥和私钥

复制代码
代码如下:

ssh-keygen -t rsa -b 4096

默认情况下,公钥和私钥会保存在~/.ssh目录下,如下所示:

复制代码
代码如下:

id_rsa id_rsa.pub known_hosts

3、安装 git服务器

复制代码
代码如下:

sudo apt-get install git-core

4、配置 git服务器

 

创建git服务器管理用户
 

复制代码
代码如下:

sudo useradd -m git
sudo passwd git

创建git仓库存储目录

复制代码
代码如下:

sudo mkdir /home/git/repositories

设置git仓库权限

复制代码
代码如下:

sudo chown git:git /home/git/repositories
sudo chmod 755 /home/git/repositories

初始化全局设置

复制代码
代码如下:

git config --global user.name "myname"
git config --global user.email "myname@server"

5、安装python的setup tool

复制代码
代码如下:

sudo apt-get install python-setuptools

6、获取并安装gitosis

复制代码
代码如下:

cd /tmp
git clone https://github.com/res0nat0r/gitosis.git
cd gitosis
sudo python setup.py install

7、配置gitosis

复制代码
代码如下:

cp ~/.ssh/id_rsa.pub /tmp
sudo -H -u git gitosis-init < /tmp/id_rsa.pub
sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update

8、管理gitosis配置

复制代码
代码如下:

cd ~
git clone git@hostname:用户名/gitosis-admin.git
cd gitosis-admin/

各个用户按照前面提到的办法生成各自的ssh公钥文件后,服务器管理员把所有人的 ssh公钥文件都拿来,拷贝到keydir目录下。

 

修改gitosis.conf文件,如下所示
 

复制代码
代码如下:

[gitosis]
[group gitosis-admin]
writable = gitosis-admin
members = a@server1
[group developers]
writable = helloworld
members = a@server1 b@server2
[group test] 
readonly = helloworld
members = c@server3

这个配置文件表达了如下含义:gitosis-admin组成员有a,该组对gitosis-admin仓库有读写权限; developers组有a,b两个成员,该组对helloworld仓库有读写权限; test组有c一个成员,对helloworld仓库有只读权限。 当然目前这些配置文件的修改只是在你的本地,你必须推送到gitserver上才能真正生效。 加入新文件、提交并push到git服务器:

复制代码
代码如下:

git add .
git commit -am "add helloworld project and users"
git remote add origin ssh://git@hostname/helloworld.git
git push origin master

9、安装apache2

复制代码
代码如下:

sudo apt-get install apache2

10、安装gitweb

复制代码
代码如下:

sudo apt-get install gitweb

11、配置 gitweb

 

默认没有 css 加载,把 gitweb 要用的静态文件连接到 DocumentRoot 下:
 

复制代码
代码如下:

cd /var/www/
sudo ln -s /usr/share/gitweb/* .

修改配置:

复制代码
代码如下:

sudo vi /etc/gitweb.conf

将 $projectroot 改为git仓库存储目录(例如:/home/git/repositories),保存后刷新浏览器。

 


如果没有找到项目,你需要将$projectroot/*.git 的属性改为755,让apache用户有可读权限。可以只改你需要让别人通过web访问的那个git。http://localhost/cgi-bin/gitweb.cgi


修改/etc/gitweb.conf 内容:
 

复制代码
代码如下:

# path to git projects (<project>.git)
#$projectroot = "/var/cache/git";
$projectroot = "/home/git/repositories";
# directory to use for temp files
$git_temp = "/tmp";
# target of the home link on top of all pages
$home_link = $my_uri || "/";
# html text to include at home page
$home_text = "indextext.html";
# file with project list; by default, simply scan the projectroot dir.
$projects_list = $projectroot;
# stylesheet to use
@stylesheets = ("/gitweb/static/gitweb.css");
# javascript code for gitweb
$javascript = "gitweb/static/gitweb.js";
# logo to use
$logo = "/gitweb/static/git-logo.png";
# the 'favicon'
$favicon = "/gitweb/static/git-favicon.png";
# git-diff-tree(1) options to use for generated patches
#@diff_opts = ("-M");
@diff_opts = ();

12、配置apache2

 

ubuntu中默认的web目录是/var/www,默认的cgi目录是 /usr/lib/cgi-bin/,安装完成gitweb后,gitweb的gitweb.cgi会自动放置到该目录下。

如果你的cgi路径不是默认的/usr/lib/cgi-bin/,需要将gitweb安装在/usr/lib/cgi-bin中的gitweb.cgi复制到原来配置的cgi-bin路径,并在apache的配置文件/etc/apache2/apache.conf末尾加上以下内容:
 

复制代码
代码如下:

SetEnv GITWEB_CONFIG /etc/gitweb.conf 
<Directory "/srv/www/cgi-bin/gitweb"> 
Options FollowSymlinks ExecCGI 
Allow from all 
AllowOverride all 
Order allow,deny 
<Files gitweb.cgi> 
SetHandler cgi-script 
</Files> 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^.* /gitweb.cgi/$0 [L,PT] 
</Directory> 

 

Git使用gitignore建立项目过滤规则
在进行协作开发代码管理的过程中,常常会遇到某些临时文件、配置文件、或者生成文件等,这些文件由于不同的开发端会不一样,如果使用git add . 将所有文件纳入git库中,那么会出现频繁的改动和push,这样会引起开发上的不便。

Git可以很方便的帮助我们解决这个问题,那就是建立项目文件过滤规则。

git中提供两种过滤机制,一种是全局过滤机制,即对所有的git都适用;另一种是针对某个项目使用的过滤规则。个人倾向于第二种。


以我的一个项目为例,该项目用.net开发,.config文件、包括生成的bin/Debug, bin/Release文件等,我希望不加入git管理。

在代码目录下建立.gitignore文件:vim .gitignore ,内容如下:
 

复制代码
代码如下:

#过滤数据库文件、sln解决方案文件、配置文件 
*.mdb 
*.ldb 
*.sln 
*.config 


#过滤文件夹Debug,Release,obj 
Debug/ 
Release/ 
obj/

 

然后调用git add. ,执行 git commit即可。

相关文章

热门资讯

2022年最旺的微信头像大全 微信头像2022年最新版图片
2022年最旺的微信头像大全 微信头像2022年最新版图片 2022-01-10
蜘蛛侠3英雄无归3正片免费播放 蜘蛛侠3在线观看免费高清完整
蜘蛛侠3英雄无归3正片免费播放 蜘蛛侠3在线观看免费高清完整 2021-08-24
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
暖暖日本高清免费中文 暖暖在线观看免费完整版韩国
暖暖日本高清免费中文 暖暖在线观看免费完整版韩国 2021-05-08
返回顶部

398
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40