GIT Daemon 配置 (分布式版本控制)

Netkiller Version 手札

DVCS(Distributed Version Control System)

netkiller Neo Chan

2009-12-12

 

文档最近一次更新于 Thu Jan 12 15:57:18 UTC 2012

 

版权 2009, 2010, 2011, 2012 Neo Chan

版权声明

转载请与作者联系,转载时请务必标明文章原始出处和作者信息及本声明。

文档出处:
http://netkiller.sourceforge.net
http://netkiller.github.com

 

下面是我多年积累下来的经验总结,整理成文档供大家参考:

 

Netkiller Architect 手札 Netkiller Linux 手札 Netkiller Developer 手札 Netkiller Database 手札
Netkiller Debian 手札 Netkiller CentOS 手札 Netkiller FreeBSD 手札 Netkiller Shell 手札
Netkiller Web 手札 Netkiller Monitoring 手札 Netkiller Storage 手札 Netkiller Mail 手札
Netkiller Security 手札 Netkiller Multimedia 手札 Netkiller Writer 手札 Netkiller Version 手札
Netkiller PostgreSQL 手札 Netkiller MySQL 手札 Netkiller Cryptography 手札 Netkiller Cisco IOS 手札
Netkiller LDAP 手札 Netkiller Intranet 手札

 

git-daemon-run

$ sudo apt-get install git-daemon-run
		

安装后会创建下面两个用户

$ cat /etc/passwd | grep git
gitlog:x:117:65534::/nonexistent:/bin/false
gitdaemon:x:118:65534::/nonexistent:/bin/false
		

Git-daemon-run 包携带的文件

$ dpkg -L git-daemon-run
/.
/etc
/etc/sv
/etc/sv/git-daemon
/etc/sv/git-daemon/run
/etc/sv/git-daemon/log
/etc/sv/git-daemon/log/run
/usr
/usr/share
/usr/share/doc
/usr/share/doc/git-daemon-run
/usr/share/doc/git-daemon-run/changelog.gz
/usr/share/doc/git-daemon-run/changelog.Debian.gz
/usr/share/doc/git-daemon-run/README.Debian
/usr/share/doc/git-daemon-run/copyright
		

同时创建下面配置文件

$ find /etc/sv/git-daemon/
/etc/sv/git-daemon/
/etc/sv/git-daemon/run
/etc/sv/git-daemon/supervise
/etc/sv/git-daemon/log
/etc/sv/git-daemon/log/run
/etc/sv/git-daemon/log/supervise
		

编辑/etc/sv/git-daemon/run配置

$ sudo vim /etc/sv/git-daemon/run 

#!/bin/sh
exec 2>&1
echo 'git-daemon starting.'
exec chpst -ugitdaemon \
  "$(git --exec-path)"/git-daemon --verbose --reuseaddr \
    --base-path=/var/cache /var/cache/git

 

git-daemon --verbose --reuseaddr \
    --base-path=/var/cache /var/cache/git

改为

git-daemon --verbose --reuseaddr \
	--export-all --base-path=/opt/git
		

提示

* 我加上了一个--export-all 使用该选项后,在git仓库中就不必创建git-daemon-export-ok文件。

/etc/services 文件中加入

# Local services
git             9418/tcp                        # Git Version Control System
		

确认已经加入

$ grep 9418 /etc/services
		

启动git-daemon

$ sudo sv stop git-daemon

or

$ sudo runsv git-daemon
runsv git-daemon: fatal: unable to change to directory: file does not exist
		

扫描git端口,确认git-daemon已经启动

$ nmap localhost

Starting Nmap 5.00 ( http://nmap.org ) at 2012-01-31 10:45 CST
Warning: Hostname localhost resolves to 2 IPs. Using 127.0.0.1.
Interesting ports on localhost (127.0.0.1):
Not shown: 989 closed ports
PORT     STATE SERVICE
21/tcp   open  ftp
22/tcp   open  ssh
53/tcp   open  domain
80/tcp   open  http
111/tcp  open  rpcbind
139/tcp  open  netbios-ssn
445/tcp  open  microsoft-ds
1723/tcp open  pptp
3128/tcp open  squid-http
3306/tcp open  mysql
9418/tcp open  git

 

 

Testing


$ sudo mkdir -p /opt/git/example.git
$ cd /opt/git/example.git
$ git init
$ sudo vim example.git/.git/config
[receive]
denyCurrentBranch = ignore

$ sudo chown gitdaemon -R /opt/git/*
$ touch git-daemon-export-ok

.git/config 文件应该是下面这样

$ cat example.git/.git/config
[core]
	repositoryformatversion = 0
	filemode = true
	bare = false
	logallrefupdates = true

[receive]
denyCurrentBranch = ignore	

git-clone git://localhost/example.git

neo@deployment:/tmp$ git clone git://localhost/example.git example.git
Cloning into example.git...
warning: You appear to have cloned an empty repository.
neo@deployment:/tmp$ cd example.git/
neo@deployment:/tmp/example.git$ echo helloworld > hello.txt
neo@deployment:/tmp/example.git$ git add hello.txt
neo@deployment:/tmp/example.git$ git commit -m 'Initial commit'
[master (root-commit) 65a0f83] Initial commit
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 hello.txt

我们添加了一些文件,然后再git clone,可以看到文件数目

$ git-clone git://localhost/example.git
Initialized empty Git repository in /tmp/example/.git/
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
时间: 2024-09-22 17:59:30

GIT Daemon 配置 (分布式版本控制)的相关文章

分布式版本控制Git基本用法详解

一.git的初始化 1.Git 配置 使用Git的第一件事就是设置你的名字和email,这些就是你在提交commit时的签名. $ git config --global user.name "Scott Chacon"$ git config --global user.email "schacon@gmail.com" 执行了上面的命令后,会在家目录(/home)下建立一个叫.gitconfig 的文件(该文件问隐藏文件,需要使用ls -al查看到). 内容一般

《Git学习指南》——第1章 基本概念 1.1分布式版本控制,有何过人之处

第1章 基本概念 在本章中,我们将介绍一个分布式版本控制系统的设计思路,以及它与集中式版本控制系统的不同之处.除此之外,我们还将带你了解分布式版本库的具体工作方式,以及为什么我们会说,在Git中创建分支和合并分支不是个大不了的问题. 1.1 分布式版本控制,有何过人之处 在具体探讨分布式版本控制的概念之前,让我们先来快速回顾一下传统的集中式版本控制架构. 图1.1中所显示的就是一个集中式版本控制系统(例如CVS或Subversion)的典型布局.每个开发者都在他或她自己的计算机上有一个包含所有项

《Puppet实战手册》——1.4 利用Git管理配置清单

1.4 利用Git管理配置清单 把Puppet配置清单存放在版本控制系统Git或Subversion中管理(推荐Git),所有Puppet管理的机器都从仓库取出配置,这是一个非常好的想法.它有以下几个优点. 可以取消对配置清单的更改并回滚至以前任意一个版本. 可以使用新的分支(branch)来测试新功能. 如果有多人需要修改配置清单,可以分别独立在自己的工作副本上进行,然后再合并所有的修改. 可以使用git log功能查看谁在什么时候做了什么修改. 准备工作 本节将导入现有的清单文件到Git仓库

hg-diff 1.2.1发布 分布式版本控制的浏览程序

hg-diff 是一个简单的GUI程序,用于浏览mercurial分布式http://www.aliyun.com/zixun/aggregation/9591.html">版本控制.它用来显示两个修订版本之间的所有变化的总结,并显示每个更改文件的两个版本的图形化比较. hg-diff 1.2.1是一个修正错误的版本.该方案现在可以处理一个工作副本,可以处理多个根库,可以处理一个工作拷贝,这是在修订"空". gvimdiff现在可以像所有其他差异阅读器程序终止.HTML

Git分布式版本控制学习

git和SVN都是版本控制系统.git是命令行操作,不喜欢的就算了,看完如果有身体不适还请及时就医~ git  WIN32百度网盘下载地址:http://pan.baidu.com/s/1c1AeY9y 不是很熟悉,参照:http://blog.jobbole.com/78960/   这个网站学习了下,感觉蛮好用的,即刻分享下. Git基本常用命令如下:    mkdir:         XX (创建一个空目录 XX指目录名)    pwd:          显示当前目录的路径.    g

分布式版本控制Git分支管理策略及使用规范流程

Git分支管理策略 目前最流行的"版本管理系统",非Git莫属. 相比同类软件,Git有很多优点.其中很显著的一点,就是版本的分支(branch)和合并(merge)十分方便.有些传统的版本管理软件,分支操作实际上会生成一份现有代码的物理拷贝,而Git只生成一个指向当前版本(又称"快照")的指针,因此非常快捷易用. 但是,太方便了也会产生副作用.如果你不加注意,很可能会留下一个枝节蔓生.四处开放的版本库,到处都是分支,完全看不出主干发展的脉络. Vincent Dr

【游戏开发备注之二】配置XCODE版本控制SVN详细步骤内含解决XCODE/MAC OS10.8无法配置SVN的解决方法

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/game-detail/1048.html 关于SVN,我就不介绍了,不清楚的照旧给你们个连接,请自行学习下谢谢.SVN百度介绍: http://baike.baidu.com/view/183128.htm Xcode 默认自带Git 与 SVN,我们本篇介绍SVN的详细配置步骤如下:  1. 首先检测你的Mac 中是否已经安装了SVN,M

非root用户tomcat daemon配置

基于安全策略来考虑,绝大多数应用程序都应以非root用户来启动,对于轻量级的应用程序,如tomcat,用root再寻常不过了.你懂的,方便啊.在生产环境这么干很容易被攻击者通过脚本干太多的事情了.因此生产环境就还是麻烦一点吧,使用非root用户来启动.本文演示了基于非root用户启动tomcat,同时将其作为一个daemon服务随服务器自启动. 一.演示环境描述 OS及tomcat版本 [root@node132 ~]# more /etc/redhat-release CentOS relea

git环境配置

     重要提示: 生成ssh的命令必须要用git batch gui生成,还有git setting的Network的sshclient的路径:C:\Program Files (x86)\Git\bin\ssh.exe