centos6.5下svn的使用说明
<p>linux下搭建svn服务器的文章已经有很多了,这里仅记下自己最近使用的一些实践之谈,原理先不深究,供日后查阅用。</p>
<p>
安装:<code>yum install subversion -y</code>,可用<code>rpm -ql subversion</code>查看svn的安装目录,默认在/usr/bin目录下</p>
<p>
创建版本库:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_734288">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash functions">mkdir</code> <code class="bash plain">/path/to/repo</code>
</div>
<div class="line number2 index1 alt1">
</div>
<div class="line number3 index2 alt2">
<code class="bash plain">svnadmin create </code><code class="bash plain">/path/to/repo</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
</div>
<p>
创建好后目录下会有conf db format hooks locks readme.txt这些个文件(夹),</p>
<p>
其中conf是配置文件信息关系到登录账号的问题,hooks是钩子文件会在服务器端执行一些客户端对应动作的响应事件</p>
<p>
<strong>配置用户/开发组信息</strong></p>
<p>
修改conf/passwd,直接在后面追加 username = passwd的字符串明文,这里的username是linux中存在的用户名,</p>
<p>
<img style="max-width:100%!important;height:auto!important;"title="centos6.5下svn的使用说明" alt="centos6.5下svn的使用说明" src="https://zhuji.jb51.net/uploads/img/202305/e5b9698afcc8c0ba94592c10fdb36210.jpg"></p>
<p>
修改<code>conf/svnserve.conf</code>,注释掉那几行使之生效,</p>
<p>
<code>anon-access,auth-access,passwd-db,realm,</code></p>
<p>
同时修改anon-access = none,</p>
<p>
这样在客户端才可以有读日志文件的权限,方便查看不同版本的提交日志信息,</p>
<p>
修改realm = /path/to/repo指定svn版本库目录。</p>
<p>
<img style="max-width:100%!important;height:auto!important;"title="centos6.5下svn的使用说明" alt="centos6.5下svn的使用说明" src="https://zhuji.jb51.net/uploads/img/202305/2689f23e7c97351aa723287c1a572926.jpg"></p>
<p>
到这里个人开发的一个简单配置就完成了,这时候用svnserve -d -r /path/to/repo</p>
<p>
就可以启动svn进程然后就可以使用客户端来连接svn://ip:port/repo使用了,这里默认的端口是3690,</p>
<p>
如果是想开多个svn版本库到别的目录,只需要重复以上步骤至启动时指定不同的端口号即可,</p>
<p>
比如使用3691端口启动一个新的svn版本库:svnserve -d --listen-port 3691 -r /path/to/repo</p>
<p>
这样在客户端连接的时候url是svn://ip:3691/repo</p>
<p>
<strong>开发组配置</strong></p>
<p>
多user在同一个group开发代码,每个user去生成一个svn的版本库然后指向同一个代码目录这个是很繁琐而不符合规范的,</p>
<p>
这个时候就用上了svn的成员组配置:</p>
<p>
<img style="max-width:100%!important;height:auto!important;"title="centos6.5下svn的使用说明" alt="centos6.5下svn的使用说明" src="https://zhuji.jb51.net/uploads/img/202305/9167d21521a065ecbfd5e856377d259d.jpg"></p>
<p>
修改conf/authz文件,编辑:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_146787">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash comments"># 添加 开发用户组groupname1</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">[</code><code class="bash functions">groups</code><code class="bash plain">]</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash plain">groupname1= username1[,username2,username3...]</code>
</div>
<div class="line number4 index3 alt1">
</div>
<div class="line number5 index4 alt2">
<code class="bash comments"># 添加开发组对代码目录的读写权限</code>
</div>
<div class="line number6 index5 alt1">
<code class="bash plain">[</code><code class="bash plain">/path/to/repo</code><code class="bash plain">]</code>
</div>
<div class="line number7 index6 alt2">
<code class="bash plain">@groupname1 = rw</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
</div>
<p>
这里的username1,username2的用户需是linux里的存在的用户,且对应的svn密码已经在conf/passwd中指定。</p>
<p>
到这里就配置好一个组成员的配置了,经测试是ok的.</p>
<p>
<strong>post-commit钩子配置</strong></p>
<p>
粗略的可以理解svn客户端将修改信息以一定格式传输到服务端保存在固定格式的文件里面,</p>
<p>
svn up的时候再将这些文件里的信息生效到代码目录里。</p>
<p>
我们有时候需要在服务端实时的看到代码更新信息,这就用到了post-commit钩子:</p>
<p>
在客户端commit的时候触发服务端到/path/to/repo执行svn up来更新文件,</p>
<p>
同时减少日志文件的大小,防止服务端当机后的日志损失。</p>
<p>
到svn版本库配置信息目录,</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_469450">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash functions">cd</code> <code class="bash plain">hooks,</code>
</div>
<div class="line number2 index1 alt1">
</div>
<div class="line number3 index2 alt2">
<code class="bash functions">cp</code> <code class="bash plain">post-commit.tmpl post-commit</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
</div>
<p>
编辑post-commit:注释掉最后一行,添加</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_430147">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash functions">export</code> <code class="bash plain">lang=en_us.utf-8</code>
</div>
<div class="line number2 index1 alt1">
</div>
<div class="line number3 index2 alt2">
<code class="bash plain">/usr/bin/svn</code> <code class="bash plain">update --force </code><code class="bash plain">/path/to/repo</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
</div>
<p>
到这里hook钩子就配置好了,重启svn进程,即可看到客户端commit后文件同步更新。</p>
<p>
以上就是svn在centos下的简单使用实践,应对日常的开发需求已经足够。</p>
頁:
[1]