查看“特殊:Badtitle/NS100:Git”的源代码
来自Ubuntu中文
←
特殊:Badtitle/NS100:Git
跳到导航
跳到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{From|https://help.ubuntu.com/community/Git}} {{Languages|UbuntuHelp:Git}} == Introduction == [http://git-scm.com/ Git] is an open source, distributed version control system designed to handle everything from small to very large projects with speed and efficiency. Every Git clone is a full-fledged repository with complete history and full revision tracking capabilities, not dependent on network access or a central server. Branching and merging are fast and easy to do. == Installation == Following these instructions we assume you already have a Ubuntu Hardy or later version installed on you computer/server and that you already have a public ssh key on your machine you can use that to initalize the repository (Don't have one, [[UbuntuHelp:Git/community/SSHHowto#Tip:_Generating_Public_Keys|look here]]). The following instructions will guide you on how to set up and run a fully managed hosting for projects using git on your server. === Used software === This tutorial was done using a Ubuntu Hardy server edition setup. We'll be using the latest [http://git-scm.com/ git] package available in the launchpad at: https://launchpad.net/ubuntu/+source/git-core For git project management will be using [http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way Gitosis]. The latest builds for Ubuntu can be found at https://launchpad.net/ubuntu/+source/gitosis For repository web browsing we will be using [http://viewgit.sourceforge.net/ ViewGit]. The latest version we will clone directly from a git repository: git clone git://repo.or.cz/viewgit.git === Setting up Git and Project Management === Use your favorite package installer to install git-core package: <pre><nowiki> apt-get install git-core </nowiki></pre> In Hardy the package gitosis is not available yet, so we will use this package from a later version of Ubuntu. In this case I will use version `0.2+20080826-2` downloading it directly from [[UbuntuHelp:LaunchPad|LaunchPad]].Net and installing it: <pre><nowiki> cd /tmp wget http://launchpadlibrarian.net/16540443/gitosis_0.2%2B20080626-2_all.deb sudo dpkg -i gitosis_0.2%2B20080626-2_all.deb sudo apt-get install -fy </nowiki></pre> {i} The last line is needed to fulfill the gitosis dependencies. It is written in Python, so it may require additional packages than those you probably installed already. Now that you should have both packages installed, we can set up gitosis. First copy your public key to the server: <pre><nowiki> scp .ssh/id_dsa.pub username@serveraddress.tld:/tmp </nowiki></pre> Initialize gitosis using your copied key: <pre><nowiki> sudo -H -u git gitosis-init < /tmp/id_dsa.pub </nowiki></pre> Once you saw some output like this: `Initialized empty Git repository in ./` Your gitosis is installed. You can now remove the copied key. <pre><nowiki> rm /tmp/id_dsa.pub </nowiki></pre> Once done, you can now checkout the gitosis-admin branch on your local machine: <pre><nowiki> git clone git@yourserver.com:gitosis-admin.git </nowiki></pre> Use your favorite editor to modify the contents of the gitosis configuration file: <pre><nowiki> cd gitosis-admin vim gitosis.conf </nowiki></pre> ==== Adding a new project to the repository ==== Here is an example of the gitosis configuration file you clone before. Here it contains the default gitosis entry, and a new project entry: <pre><nowiki> [gitosis] [group team] writable = testproject members = hostname.serveraddress.tld [group gitosis-admin] writable = gitosis-admin members = keyfilename </nowiki></pre> `hostname.serveraddress.tld` or `keyfilename` is the name of the public key without `.pub` extension you copied into `gitosis-admin/keydir/` directory. After you've done editing, save the file, and commit it back to the server. <pre><nowiki> git commit -a -m "Added a new project" git push </nowiki></pre> Any future projects will be added the same way. ==== Committing to the first project ==== To commit the project you just created, initiate a new git project, add files to it, commit it, then push it to your repository with the name you set up in gitosis config file. <pre><nowiki> git init touch a_text_file.txt git add . git commit -m "initial import" git remote add origin gitosis@serveraddress.tld:testproject.git git push --all </nowiki></pre> The project should be committed! {i} If not, please check your `/srv/gitosis/.ssh/authorized_keys` file, if that one contains your correct public key! == The web browsing interface == Server will need a web server so I recommend you to install [[UbuntuHelp:Apache|Apache]] with support for php. Once ViewGit can be linked to [[UbuntuHelp:GeSHI|GeSHI]], I also recommend you installing the `php-geshi` package: <pre><nowiki> sudo apt-get install apache2 libapache2-mod-php5 php-geshi </nowiki></pre> {i} For more extended Apache installation we recommend you reading a dedicated page like this [[UbuntuHelp:ApacheMySQLPHP|ApacheMySQLPHP]]. Once done, `/var/www/` directory will be created. Go there and clone the latest git version of ViewGIT: <pre><nowiki> cd /var/www sudo git clone git://repo.or.cz/viewgit.git sudo chown -vR www-data:www-data viewgit </nowiki></pre> After finishing this operation, use your favorite editor to edit the config file for ViewGit: <pre><nowiki> cd /var/www/viewgit/inc sudo cp config.php localconfig.php sudo chown www-data:www-data localconfig.php sudo vim localconfig.php </nowiki></pre> Here is an example of the ViewGit `localconfig.php` with GeSHI and the testproject.git we created: <pre><nowiki> <?php $conf['projects'] = array( 'projectname' => array('repo' => '/srv/gitosis/repositories/testproject.git/'), ); // Where git is. Default is to search from PATH, but you can use an absolute // path as well. $conf['git'] = '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('/path/to/*/.git', '/var/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> <{AUTHOR_MAIL}><br /><pre>{DIFFSTAT}</pre>'; $conf['debug'] = false; // Includes a small link to the ViewGit homepage on each page $conf['ad'] = false; </nowiki></pre> Now you should be able to browse your Git repository by going to http://localhost/viewgit/ === 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: <pre><nowiki> #!/bin/sh test -f /usr/bin/git-daemon || exit 0 . /lib/lsb/init-functions GITDAEMON_OPTIONS="--reuseaddr --verbose --base-path=/srv/gitosis/repositories --detach --export-all --syslog" case "$1" in start) log_daemon_msg "Starting git-daemon" start-stop-daemon --start -c gitosis:gitosis --quiet --background \ --exec /usr/bin/git-daemon -- ${GITDAEMON_OPTIONS} log_end_msg $? ;; stop) log_daemon_msg "Stopping git-daemon" start-stop-daemon --stop --quiet --name git-daemon log_end_msg $? ;; *) log_action_msg "Usage: /etc/init.d/git-daemon {start|stop}" exit 2 ;; esac exit 0 </nowiki></pre> To make it usable, and make possible it's automatic startup on server boot change its permissions and update-rc.d <pre><nowiki> sudo chmod +x /etc/init.d/git-daemon sudo update-rc.d git-daemon defaults </nowiki></pre> The daemon can be started or stoped by accesing: <pre><nowiki> sudo /etc/init.d/git-daemon start sudo /etc/init.d/git-daemon stop </nowiki></pre> [[category:UbuntuHelp]]
该页面使用的模板:
模板:From
(
查看源代码
)
模板:Languages
(
查看源代码
)(受保护)
模板:Languages/Lang
(
查看源代码
)(受保护)
返回
特殊:Badtitle/NS100:Git
。
导航菜单
页面操作
页面
讨论
阅读
查看源代码
历史
页面操作
页面
讨论
更多
工具
个人工具
登录
导航
首页
最近更改
随机页面
页面分类
帮助
搜索
编辑
编辑指南
沙盒
新闻动态
字词处理
工具
链入页面
相关更改
特殊页面
页面信息