linux-tutorial/linux/soft/svn-ops.html

71 lines
22 KiB
HTML
Raw Normal View History

2021-05-13 17:44:54 +08:00
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Svn 运维 | LINUX-TUTORIAL</title>
<meta name="generator" content="VuePress 1.8.2">
<link rel="icon" href="/linux-tutorial/favicon.ico">
<meta name="description" content="数据库教程">
<link rel="preload" href="/linux-tutorial/assets/css/0.styles.45d9d031.css" as="style"><link rel="preload" href="/linux-tutorial/assets/js/app.79a38eea.js" as="script"><link rel="preload" href="/linux-tutorial/assets/js/4.fb6e0f89.js" as="script"><link rel="preload" href="/linux-tutorial/assets/js/66.f2335390.js" as="script"><link rel="preload" href="/linux-tutorial/assets/js/5.cb43ecfb.js" as="script"><link rel="prefetch" href="/linux-tutorial/assets/js/10.7933187b.js"><link rel="prefetch" href="/linux-tutorial/assets/js/11.b9b41530.js"><link rel="prefetch" href="/linux-tutorial/assets/js/12.70a5dba8.js"><link rel="prefetch" href="/linux-tutorial/assets/js/13.857dcc43.js"><link rel="prefetch" href="/linux-tutorial/assets/js/14.5a603a55.js"><link rel="prefetch" href="/linux-tutorial/assets/js/15.d217acb7.js"><link rel="prefetch" href="/linux-tutorial/assets/js/16.ad565eae.js"><link rel="prefetch" href="/linux-tutorial/assets/js/17.d43e9f56.js"><link rel="prefetch" href="/linux-tutorial/assets/js/18.aa00ff43.js"><link rel="prefetch" href="/linux-tutorial/assets/js/19.43ce44b3.js"><link rel="prefetch" href="/linux-tutorial/assets/js/20.5618e1ff.js"><link rel="prefetch" href="/linux-tutorial/assets/js/21.1c5a41d7.js"><link rel="prefetch" href="/linux-tutorial/assets/js/22.fbe9fdf1.js"><link rel="prefetch" href="/linux-tutorial/assets/js/23.a4fb0e74.js"><link rel="prefetch" href="/linux-tutorial/assets/js/24.e3a23b69.js"><link rel="prefetch" href="/linux-tutorial/assets/js/25.9896afe9.js"><link rel="prefetch" href="/linux-tutorial/assets/js/26.96164082.js"><link rel="prefetch" href="/linux-tutorial/assets/js/27.391033bb.js"><link rel="prefetch" href="/linux-tutorial/assets/js/28.703f74c2.js"><link rel="prefetch" href="/linux-tutorial/assets/js/29.02a952cb.js"><link rel="prefetch" href="/linux-tutorial/assets/js/30.7e13628f.js"><link rel="prefetch" href="/linux-tutorial/assets/js/31.c4652f75.js"><link rel="prefetch" href="/linux-tutorial/assets/js/32.05d2cbec.js"><link rel="prefetch" href="/linux-tutorial/assets/js/33.3b265df8.js"><link rel="prefetch" href="/linux-tutorial/assets/js/34.26330a03.js"><link rel="prefetch" href="/linux-tutorial/assets/js/35.417d706d.js"><link rel="prefetch" href="/linux-tutorial/assets/js/36.0ed775e0.js"><link rel="prefetch" href="/linux-tutorial/assets/js/37.34430c74.js"><link rel="prefetch" href="/linux-tutorial/assets/js/38.87d5e0ff.js"><link rel="prefetch" href="/linux-tutorial/assets/js/39.7b648b3e.js"><link rel="prefetch" href="/linux-tutorial/assets/js/40.3b7a219e.js"><link rel="prefetch" href="/linux-tutorial/assets/js/41.e727eee9.js"><link rel="prefetch" href="/linux-tutorial/assets/js/42.0134c187.js"><link rel="prefetch" href="/linux-tutorial/assets/js/43.175e982f.js"><link rel="prefetch" href="/linux-tutorial/assets/js/44.72d90888.js"><link rel="prefetch" href="/linux-tutorial/assets/js/45.d49955bd.js"><link rel="prefetch" href="/linux-tutorial/assets/js/46.a9c290ec.js"><link rel="prefetch" href="/linux-tutorial/assets/js/47.cc639f04.js"><link rel="prefetch" href="/linux-tutorial/assets/js/48.98c78321.js"><link rel="prefetch" href="/linux-tutorial/assets/js/49.a7c3afed.js"><link rel="prefetch" href="/linux-tutorial/assets/js/50.22d8c542.js"><link rel="prefetch" href="/linux-tutorial/assets/js/51.28055fcd.js"><link rel="prefetch" href="/linux-tutorial/assets/js/52.f8103df5.js"><link rel="prefetch" href="/linux-tutorial/assets/js/53.76541550.js"><link rel="prefetch" href="/linux-tutorial/assets/js/54.e78d2776.js"><link rel="prefetch" href="/linux-tutorial/assets/js/55.3ce3079c.js"><link rel="prefetch" href="/linux-tutorial/assets/js/56.832958c9.js"><link rel="prefetch" href="/linux-tutorial/assets/js/57.961ce896.js"><link rel="prefetch" href="/linux-tutorial/assets/js/58.6d6fbc82.js"><link rel="prefetch" href="/linux-tutorial/assets/js/59.d5e48112.js"><link rel="prefetch" href="/linux-tutorial/assets/js/6.c8f4721c.js"><link rel="prefetch" href="/linux-tutorial/assets/js/60.7927b23b.js"><link rel="prefetch" href="/linux-tutorial/assets/js/61.ee233f24.js"><link rel="prefetch" href="/l
<link rel="stylesheet" href="/linux-tutorial/assets/css/0.styles.45d9d031.css">
</head>
<body>
<div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/linux-tutorial/" class="home-link router-link-active"><img src="images/dunwu-logo-100.png" alt="LINUX-TUTORIAL" class="logo"> <span class="site-name can-hide">LINUX-TUTORIAL</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/linux-tutorial/linux/cli/" class="nav-link">
Linux 命令
</a></div><div class="nav-item"><a href="/linux-tutorial/linux/ops/" class="nav-link">
Linux 运维
</a></div><div class="nav-item"><a href="/linux-tutorial/linux/soft/" class="nav-link router-link-active">
Linux 软件运维
</a></div><div class="nav-item"><a href="/linux-tutorial/docker/" class="nav-link">
Docker 教程
</a></div><div class="nav-item"><a href="https://github.com/dunwu/blog" target="_blank" rel="noopener noreferrer" class="nav-link external">
🎯 博客
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <a href="https://github.com/dunwu/linux-tutorial" target="_blank" rel="noopener noreferrer" class="repo-link">
Github
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"><div class="nav-item"><a href="/linux-tutorial/linux/cli/" class="nav-link">
Linux 命令
</a></div><div class="nav-item"><a href="/linux-tutorial/linux/ops/" class="nav-link">
Linux 运维
</a></div><div class="nav-item"><a href="/linux-tutorial/linux/soft/" class="nav-link router-link-active">
Linux 软件运维
</a></div><div class="nav-item"><a href="/linux-tutorial/docker/" class="nav-link">
Docker 教程
</a></div><div class="nav-item"><a href="https://github.com/dunwu/blog" target="_blank" rel="noopener noreferrer" class="nav-link external">
🎯 博客
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <a href="https://github.com/dunwu/linux-tutorial" target="_blank" rel="noopener noreferrer" class="repo-link">
Github
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav> <ul class="sidebar-links"><li><section class="sidebar-group depth-0"><p class="sidebar-heading open"><span>Svn 运维</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/linux-tutorial/linux/soft/svn-ops.html#安装" class="sidebar-link">安装</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/linux-tutorial/linux/soft/svn-ops.html#安装-svn" class="sidebar-link">安装 svn</a></li><li class="sidebar-sub-header"><a href="/linux-tutorial/linux/soft/svn-ops.html#创建-svn-仓库" class="sidebar-link">创建 svn 仓库</a></li></ul></li><li><a href="/linux-tutorial/linux/soft/svn-ops.html#配置" class="sidebar-link">配置</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/linux-tutorial/linux/soft/svn-ops.html#配置-svnserve-conf" class="sidebar-link">配置 svnserve.conf</a></li><li class="sidebar-sub-header"><a href="/linux-tutorial/linux/soft/svn-ops.html#配置-passwd" class="sidebar-link">配置 passwd</a></li><li class="sidebar-sub-header"><a href="/linux-tutorial/linux/soft/svn-ops.html#配置-authz" class="sidebar-link">配置 authz</a></li></ul></li><li><a href="/linux-tutorial/linux/soft/svn-ops.html#服务器管理" class="sidebar-link">服务器管理</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/linux-tutorial/linux/soft/svn-ops.html#启动关闭-svn" class="sidebar-link">启动关闭 svn</a></li><li class="sidebar-sub-header"><a href="/linux-tutorial/linux/soft/svn-ops.html#开机自启动-svn-方法" class="sidebar-link">开机自启动 svn 方法</a></li></ul></li><li><a href="/linux-tutorial/linux/soft/svn-ops.html#客户端使用" class="sidebar-link">客户端使用</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/linux-tutorial/linux/soft/svn-ops.html#参考资料" class="sidebar-link">参考资料</a><ul class="sidebar-sub-headers"></ul></li></ul></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="svn-运维"><a href="#svn-运维" class="header-anchor">#</a> Svn 运维</h1> <blockquote><p>Svn 是 Subversion 的简称,是一个开放源代码的版本控制系统,它采用了分支管理系统。</p> <p>本文目的在于记录 svn 的安装、配置、使用。</p></blockquote> <h2 id="安装"><a href="#安装" class="header-anchor">#</a> 安装</h2> <h3 id="安装-svn"><a href="#安装-svn" class="header-anchor">#</a> 安装 svn</h3> <div class="language-bash extra-class"><pre class="language-bash"><code>$ yum <span class="token function">install</span> -y subversion
</code></pre></div><h3 id="创建-svn-仓库"><a href="#创建-svn-仓库" class="header-anchor">#</a> 创建 svn 仓库</h3> <div class="language-bash extra-class"><pre class="language-bash"><code>$ <span class="token function">mkdir</span> -p /share/svn
$ svnadmin create /share/svn
$ <span class="token function">ls</span> /share/svn
conf db <span class="token function">format</span> hooks locks README.txt
</code></pre></div><p>在 conf 目录下有三个重要的配置文件</p> <ul><li><code>authz</code> - 是权限控制文件</li> <li><code>passwd</code> - 是帐号密码文件</li> <li><code>svnserve.conf</code> - 是 SVN 服务配置文件</li></ul> <h2 id="配置"><a href="#配置" class="header-anchor">#</a> 配置</h2> <h3 id="配置-svnserve-conf"><a href="#配置-svnserve-conf" class="header-anchor">#</a> 配置 svnserve.conf</h3> <div class="language-bash extra-class"><pre class="language-bash"><code>$ <span class="token function">vim</span> /share/svn/conf/svnserve.conf
</code></pre></div><p>打开下面的 5 个注释</p> <div class="language-ini extra-class"><pre class="language-ini"><code><span class="token constant">anon-access</span> <span class="token attr-value"><span class="token punctuation">=</span> read #匿名用户可读</span>
<span class="token constant">auth-access</span> <span class="token attr-value"><span class="token punctuation">=</span> write #授权用户可写</span>
<span class="token constant">password-db</span> <span class="token attr-value"><span class="token punctuation">=</span> passwd #使用哪个文件作为账号文件</span>
<span class="token constant">authz-db</span> <span class="token attr-value"><span class="token punctuation">=</span> authz #使用哪个文件作为权限文件</span>
<span class="token constant">realm</span> <span class="token attr-value"><span class="token punctuation">=</span> /share/svn # 认证空间名,版本库所在目录</span>
</code></pre></div><h3 id="配置-passwd"><a href="#配置-passwd" class="header-anchor">#</a> 配置 passwd</h3> <div class="language-bash extra-class"><pre class="language-bash"><code>$ <span class="token function">vim</span> /share/svn/conf/passwd
</code></pre></div><p>添加新用户的用户名/密码如下:</p> <div class="language-ini extra-class"><pre class="language-ini"><code><span class="token selector">[users]</span>
<span class="token constant">user1</span> <span class="token attr-value"><span class="token punctuation">=</span> 123456</span>
<span class="token constant">user2</span> <span class="token attr-value"><span class="token punctuation">=</span> 123456</span>
<span class="token constant">user3</span> <span class="token attr-value"><span class="token punctuation">=</span> 123456</span>
</code></pre></div><h3 id="配置-authz"><a href="#配置-authz" class="header-anchor">#</a> 配置 authz</h3> <div class="language-bash extra-class"><pre class="language-bash"><code>$ <span class="token function">vim</span> /share/svn/conf/authz
</code></pre></div><p>指定用户的访问权限(<code>r</code> 为读权限;<code>w</code> 为写权限):</p> <div class="language-ini extra-class"><pre class="language-ini"><code><span class="token selector">[/]</span>
<span class="token constant">user1</span> <span class="token attr-value"><span class="token punctuation">=</span> rw</span>
<span class="token constant">user2</span> <span class="token attr-value"><span class="token punctuation">=</span> rw</span>
<span class="token constant">user3</span> <span class="token attr-value"><span class="token punctuation">=</span> rw</span>
<span class="token constant">*</span><span class="token attr-value"><span class="token punctuation">=</span></span>
</code></pre></div><h2 id="服务器管理"><a href="#服务器管理" class="header-anchor">#</a> 服务器管理</h2> <h3 id="启动关闭-svn"><a href="#启动关闭-svn" class="header-anchor">#</a> 启动关闭 svn</h3> <div class="language-bash extra-class"><pre class="language-bash"><code>$ svnserve -d -r /share/svn <span class="token comment"># 启动 svn</span>
$ <span class="token function">killall</span> svnserve <span class="token comment"># 关闭 svn</span>
</code></pre></div><h3 id="开机自启动-svn-方法"><a href="#开机自启动-svn-方法" class="header-anchor">#</a> 开机自启动 svn 方法</h3> <p>安装好 svn 服务后,默认是没有随系统启动自动启动的,而一般我们有要求 svn 服务稳定持续的提供服务。所以,有必要配置开机自启动 svn 服务。</p> <h4 id="centos7-以前"><a href="#centos7-以前" class="header-anchor">#</a> Centos7 以前</h4> <p>编辑 <code>/etc/rc.d/rc.local</code> 文件:</p> <div class="language-bash extra-class"><pre class="language-bash"><code>$ <span class="token function">vi</span> /etc/rc.d/rc.local
</code></pre></div><p>输入以下内容:</p> <div class="language-bash extra-class"><pre class="language-bash"><code><span class="token comment"># 开机自动启动 svn默认端口是 3690</span>
$ /usr/bin/svnserve -d -r /share/svn --listen-port <span class="token number">3690</span>
</code></pre></div><p>注意:</p> <p>我们在用终端操作的时候,可以直接使用以下命令启动 SVN<code>svnserve -d -r /share/svn</code>,但是在 <code>/etc/rc.d/rc.local</code> 文件中必须写上完整的路径!</p> <p>如果不知道 svnserve 命令安装在哪儿,可以使用 whereis svnserve 查找。</p> <h4 id="centos7"><a href="#centos7" class="header-anchor">#</a> Centos7</h4> <p>CentOS 7 中的 <code>/etc/rc.d/rc.local</code> 是没有执行权限的,系统建议创建 <code>systemd service</code> 启动服务。</p> <p>找到 svn 的 service 配置文件 <code>/etc/sysconfig/svnserve</code> 编辑配置文件</p> <div class="language-bash extra-class"><pre class="language-bash"><code>$ <span class="token function">vi</span> /etc/sysconfig/svnserve
</code></pre></div><p><code>OPTIONS=&quot;-r /var/svn&quot;</code> 改为 svn 版本库存放的目录,:wq 保存退出。</p> <p>执行 <code>systemctl enable svnserve.service</code></p> <p>重启服务器后,执行 <code>ps -ef | grep svn</code> 应该可以看到 svn 服务的进程已经启动。</p> <ul><li>启动一个服务 - systemctl start svnserve.service</li> <li>关闭一个服务 - systemctl stop svnserve.service</li> <li>重启一个服务 - systemctl restart svnserve.service</li> <li>显示一个服务的状态 - systemctl status svnserve.service</li> <li>在开机时启用一个服务 - systemctl enable svnserve.service</li> <li>在开机时禁用一个服务 - systemctl disable svnserve.service</li></ul> <h2 id="客户端使用"><a href="#客户端使用" class="header-anchor">#</a> 客户端使用</h2> <p>进入 <a href="https://tortoisesvn.net/downloads.html" target="_blank" rel="noopener noreferrer">svn 官方下载地址<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>,选择合适的版本,下载并安装。</p> <p>新建一个目录,然后打开鼠标右键菜单,选择 <strong>SVN Checkout</strong></p> <p>在新的窗口,输入地址 <code>svn://&lt;你的 IP&gt;</code> 即可,不出意外输入用户名和密码就能连接成功了(这里的用户、密码必须在 passwd 配置文件的清单中)。默认端口 3690如果你修改了端口那么要记得加上端口号。如下图所示</p> <p><img src="https://raw.githubusercontent.com/dunwu/images/dev/snap/20190129175443.png" alt="img"></p> <h2 id="参考资料"><a href="#参考资料" class="header-anchor">#</a> 参考资料</h2> <ul><li>https://www.cnblogs.com/liuxianan/p/linux_install_svn_server.html</li> <li>https://blog.csdn.net/testcs_dn/article/details/45395645</li> <li>https://www.cnblogs.com/moxiaoan/p/5683743.html</li> <li>https://blog.csdn.net/realghost/article/details/52396648</li></ul></div> <footer class="page-edit"><div class="edit-link"><a href="https://github.com/dunwu/linux-tutorial/edit/master/docs/linux/soft/svn-ops.md" target="_blank" rel="noopener noreferrer">帮助我们改善此页面!</a> <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></div> <div class="last-updated"><span class="prefix">上次更新:</span> <span class="time">19 minutes ago</span></div></footer> <!----> </main></div><div class="global-ui"><!----><!----></div></div>
<script src="/linux-tutorial/assets/js/app.79a38eea.js" defer></script><script src="/linux-tutorial/assets/js/4.fb6e0f89.js" defer></script><script src="/linux-tutorial/assets/js/66.f2335390.js" defer></script><script src="/linux-tutorial/assets/js/5.cb43ecfb.js" defer></script>
</body>
</html>