安装 配置 git gitosis gerrit viewgit,搭建git服务器 收藏

git gitosis 安装配置新手教程

1,非必须  
vim ~/.bashrc
添加如下一句  
export EDITOR=vim   #这样我们的默认editor就是vim,反正我是讨厌nano。
2,安装git 和 gitosis
sudo apt-get install git gitosis
3,创建一个密钥
 ssh-keygen  
指定一个key文件    
/home/jacky/.ssh/tiger    #不要使用~代表home
然后输入密码
 1234567890
这样key文件就有了
4,初始化gitosis
sudo -H -u gitosis gitosis-init < ~/.ssh/tiger.pub
5,接下来是配置gitosis,我这里没有联网,就是用localhost代替服务器网址
git clone gitosis@localhost:gitosis-admin.git
注意:如果不能clone可能是权限的问题

sudo vim /etc/ssh/sshd_config

添加一句

AllowUsers gitosis     #gitosis安装时会创建一个gitosis的用户

6,进入刚才clone的gitosis-admin
vim gitosis.conf
添加如下内容
[group app]
writable = Mms
members = changjiang@ubuntu
保存之后退出,并执行.
git commit -a -m "Added a new project"
git push
注意:我这里新加了一个叫Mms的工程
接下来创建你这个project
mkdir testproject
cd testproject
git init
touch a_text_file.txt
git add .
git commit -a -m "Initial import"
git remote add origin [email protected]:testproject.git
git push origin master

The project should be committed!

If not, please check your /srv/gitosis/.ssh/authorized_keys file, if that one contains your correct public key!

 

Adding users

First, gather their public SSH keys, which I'll call "kakashi.pub" and "naruto.pub", and drop them into keydir/ of your local gitosis-admin repository. Second, edit gitosis.conf and add them to the "members" list.

 

cd gitosis-admin

cp ~/kakashi.pub keydir/

cp ~/naruto.pub keydir/

git add keydir/kakashi.pub keydir/naruto.pub

Note that the key filename must have a ".pub" extension.

gitosis.conf changes:

 

 [group team]
 writable = testproject
- members = hostname.yourserver.com
+ members = hostname.yourserver.com kakashi naruto

Commit and push:

git commit -a -m "Granted Kakashi and Naruto commit rights to testproject"

git push

That's it. Kakashi and Naruto can now clone the testproject repository like so:

git clone [email protected]:testproject.git

Kakashi and Naruto will also have commit rights.

 

The web browsing interface

Server will need a web server so I recommend you to install Apache with support for php. Once ViewGit can be linked to GeSHI, I also recommend you installing the php-geshi package:

sudo apt-get install apache2 libapache2-mod-php5 php-geshi

For more extended Apache installation we recommend you reading a dedicated page like this ApacheMySQLPHP .

Once done, /var/www/ directory will be created. Go there and clone the latest git version of !ViewGIT:

cd /var/www
sudo git clone git://repo.or.cz/viewgit.git
sudo chown -vR www-data:www-data viewgit

After finishing this operation, use your favorite editor to edit the config file for ViewGit:

cd /var/www/viewgit/inc
sudo cp config.php localconfig.php
sudo chown www-data:www-data localconfig.php
sudo $EDITOR localconfig.php

What follows is an example of the ViewGit localconfig.php with !GeSHI and the testproject.git we created.

Although there are two things to note :

* $conf['projects'] will be an array that you explicitly define repositories that viewgit will display. * $conf['projects_glob'] is an array of file-system path patterns that gitweb will use to search for *.git directories. This provides easier inclusion of all your repositories (although it may ignore any gitweb directives in your gitosis.conf)

Both $conf['projects'] and $conf['projects_glob'] will be used to decide what projects to display. So in the following example if you actually created the testproject example in the previous steps, it will show up twice.

 

<?php
$conf['projects'] = array( 'testproject' => array('repo' => '/srv/gitosis/repositories/testproject.git/'),);
// If set, contains an array of globs/wildcards where to include projects.
// Use this if you have a lot of projects under a directory.
$conf['projects_glob'] = array('/srv/gitosis/repositories/*.git');
// Where git is. Default is to search from PATH, but you can use an absolute
// path as well.
$conf['git'] = 'git';
$conf['datetime'] = '%Y-%m-%d %H:%M';
// More complete format for commit page
$conf['datetime_full'] = '%Y-%m-%d %H:%M:%S';
// Maximum length of commit message's first line to show
$conf['commit_message_maxlen'] = 50;
// Maximum number of shortlog entries to show on the summary page
$conf['summary_shortlog'] = 30;
// Maximum number of tags to show on the summary page $conf['summary_tags'] = 10;
// Whether to show remote labels on shortlog
$conf['shortlog_remote_labels'] = false;
// Allow checking out projects via "git clone"
$conf['allow_checkout'] = true; // If set, this function is used to obfuscate e-mail addresses of authors/committers
// The 'obfuscate_mail' function simply replaces @ with ' at ' and . with ' dot ' //$conf['mail_filter'] = 'obfuscate_mail';
//$conf['mail_filter'] = create_function('$mail', 'return str_rot13(strtoupper($mail));');
// Whether to use GeSHi for source highlighting $conf['geshi'] = true;
// Path to geshi.php
$conf['geshi_path'] = 'inc/geshi/geshi.php';
$conf['geshi_path'] = '/usr/share/php-geshi/geshi.php'; // Path on Debian // Use line numbers in geshi? // Setting this to "false" disables line numbers
// Using a value of 0 will enable "NORMAL" geshi line numbers
// Using values of 1 or more will enable "FANCY" geshi line numbers
$conf['geshi_line_numbers'] = 5;
// RSS time to live (how often clients should update the feed), in minutes. $conf['rss_ttl'] = 10;
// RSS: Maximum number of items in feed
$conf['rss_max_items'] = 30;
// RSS item format. Allowed formatting:
// {AUTHOR}, {AUTHOR_MAIL}, {SHORTLOG}, {LOG}, {COMMITTER}, {COMMITTER_MAIL}, {DIFFSTAT}
$conf['rss_item_title'] = '{SHORTLOG} ({AUTHOR})';
$conf['rss_item_description'] = '<pre>{LOG}</pre><b>{AUTHOR}</b> &lt;{AUTHOR_MAIL}&gt;<br /><pre>{DIFFSTAT}</pre>';
$conf['debug'] = false;
// Includes a small link to the ViewGit homepage on each page
$conf['ad'] = false;

Now you should be able to browse your Git repository by going to http://localhost/viewgit/ if you got problems on accessing repositories, add your web server user to the same group gitosis user is:

adduser www-data git

 

Making available public cloning of the projects

To make available public access for cloning of the projects, you have to set up git-daemon. git-daemon is a service which runs on port 9418 and handles public requests for project cloning. git-daemon comes together with git-core so no additional installation is required.

To make this service easier to administrate, here is an init script to start and stop the daemon.

It is, however, easier to make git a subservice of xinetd, by editing /etc/xinetd.d/git and changing disable=no}} to {{{disable=yes .

Create the git-daemon init script

sudo $EDITOR /etc/init.d/git-daemon

paste the following

# Taken from here: http://pastie.org/227647
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

NAME=git-daemon
PIDFILE=/var/run/$NAME.pid
DESC="the git daemon"
DAEMON=/usr/lib/git-core/git-daemon
DAEMON_OPTS="--base-path=/srv/gitosis/repositories --export-all --verbose --syslog --detach --pid-file=$PIDFILE --user=gitosis --group=nogroup"
test -x $DAEMON || exit 0
[ -r /etc/default/git-daemon ] && . /etc/default/git-daemon
. /lib/lsb/init-functions
start_git() {
start-stop-daemon --start --quiet --pidfile $PIDFILE /
--startas $DAEMON -- $DAEMON_OPTS

}
stop_git() {
start-stop-daemon --stop --quiet --pidfile $PIDFILE
rm -f $PIDFILE
}
status_git() { start-stop-daemon --stop --test --quiet --pidfile $PIDFILE >/dev/null 2>&1
}
case "$1" in
start)
log_begin_msg "Starting $DESC" start_git log_end_msg 0
;;
stop)
log_begin_msg "Stopping $DESC"
stop_git

log_end_msg 0
;;
status)
log_begin_msg "Testing $DESC: "
if status_git then
log_success_msg "Running"
exit 0
else
log_failure_msg "Not running"
exit 1
fi;;
restart|force-reload)
log_begin_msg "Restarting $DESC"
stop_git
sleep 1
start_git log_end_msg 0 ;;*)
echo "Usage: $0 {start|stop|restart|force-reload|status}" >&2
exit 1 ;;
esac
exit 0

To make it usable, and make possible it's automatic startup on server boot change its permissions and update-rc.d

sudo chmod +x /etc/init.d/git-daemon
sudo update-rc.d git-daemon defaults

The daemon can be controlled in the following manner :

Pre Karmic :

sudo /etc/init.d/git-daemon start
sudo /etc/init.d/git-daemon stop
sudo /etc/init.d/git-daemon restart
sudo /etc/init.d/git-daemon force-reload

Ubuntu 9.10 and later :

sudo service git-daemon start
sudo service git-daemon stop
sudo service git-daemon restart
sudo service git-daemon force-reload

你可能感兴趣的:(安装 配置 git gitosis gerrit viewgit,搭建git服务器 收藏)