<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>SVN on Dapeng Zhang</title><link>https://zhangdapeng.dev/tags/svn/</link><description>Recent content in SVN on Dapeng Zhang</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Fri, 27 Jun 2025 10:07:10 +0000</lastBuildDate><atom:link href="https://zhangdapeng.dev/tags/svn/index.xml" rel="self" type="application/rss+xml"/><item><title>Linux下svn 增加 ignore 属性(忽略文件的处理)</title><link>https://zhangdapeng.dev/p/linux-xia-svn-zeng-jia-ignore-shu-xing-hu-lve-wen-jian-de-chu-li/</link><pubDate>Fri, 27 Jun 2025 10:07:10 +0000</pubDate><guid>https://zhangdapeng.dev/p/linux-xia-svn-zeng-jia-ignore-shu-xing-hu-lve-wen-jian-de-chu-li/</guid><description>&lt;p&gt;一直不知道svn的忽略命令如何使用，经过google的查找，使用方法还是有的，做个记录好了。&lt;/p&gt;
&lt;p&gt;如果想在SVN提交时，忽略某个文件，也就是某个文件不提交，可以使用&lt;/p&gt;
&lt;p&gt;&lt;code&gt;svn propedit svn:ignore&lt;/code&gt;命令。&lt;/p&gt;
&lt;p&gt;下面详细介绍一下使用步骤。&lt;/p&gt;
&lt;p&gt;单纯的看svn官方文档和一些网上搜索的资料，有时候真的不如亲自试验的好。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;svn propedit svn:ignore&lt;/code&gt; 目录名称。&lt;/p&gt;
&lt;p&gt;注意，在使用这个SVN的属性编辑前，你得确保后面的“目录名称”是SVN版本控制的目录。&lt;/p&gt;
&lt;p&gt;如果要忽略此目录下的文件，可以如下操作。&lt;/p&gt;
&lt;p&gt;比如，想忽略/product目录下的test.php文件。前提是/product目录必须在svn版本控制下，而test.php文件不在svn版本控制。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;svn st&lt;/code&gt;先看一下状态，会显示如下：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;? /product/test.php
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;我们需要将test.php文件加入忽略列表。&lt;/p&gt;
&lt;p&gt;此时先设置SVN默认的编辑器&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;export SVN_EDITOR&lt;span style="color:#f92672"&gt;=&lt;/span&gt;vim
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然后，使用svn propedit svn:ignore ,用法如下&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;svn propedit svn:ignore /product
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;此时会出现一个VIM的编辑窗口，表示需要将某个文件加入到忽略列表里&lt;/p&gt;
&lt;p&gt;我们在编辑窗口中，写入&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;test.php
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然后保存，并退出VIM编辑器。&lt;/p&gt;
&lt;p&gt;这时候会有一个提示：属性 “svn:ignore” 于 “product” 被设为新值。&lt;/p&gt;
&lt;p&gt;表示文件test.php的svn:ignore属性设置成功。&lt;/p&gt;
&lt;p&gt;然后使用&lt;code&gt;svn st&lt;/code&gt;查看，会显示：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;M product
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;我们需要提交，然后这个svn:ignore属性才会起作用&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;svn ci -m &lt;span style="color:#e6db74"&gt;&amp;#39;忽略test.php文件&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这时候，无论你如何修改test.php文件，再使用svn st时，也不会出现修改提示符合M了。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;参考文章：&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="http://hi.baidu.com/phplinuxmysql/item/5146931478630e0a8ebde41b" target="_blank" rel="noopener"
 &gt;http://hi.baidu.com/phplinuxmysql/item/5146931478630e0a8ebde41b&lt;/a&gt;&lt;/p&gt;</description></item><item><title>svn update报no such revision * 的解决办法</title><link>https://zhangdapeng.dev/p/svn-update-bao-no-such-revision-de-jie-jue-ban-fa/</link><pubDate>Fri, 27 Jun 2025 09:45:52 +0000</pubDate><guid>https://zhangdapeng.dev/p/svn-update-bao-no-such-revision-de-jie-jue-ban-fa/</guid><description>&lt;h4 id="出现问题的原因"&gt;&lt;a class="link" href="#1" &gt;出现问题的原因&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;1，版本库因断电等出错；这个通过svn verify来验证服务器是否有问题，如果验证么有错误，那么服务器需要版本修正，如果没有错误，则是客户端的问题；&lt;/p&gt;
&lt;p&gt;2，客户端可能由于文件自动变化等原因等出现；具体不是非常清楚；&lt;/p&gt;
&lt;h4 id="解决的办法"&gt;&lt;a class="link" href="#2" &gt;解决的办法&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;a,checkout 一个版本库到临时文件夹&lt;code&gt;/tmp/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;b,复制&lt;code&gt;/tmp/&lt;/code&gt;工作副本中的&lt;code&gt;.svn/&lt;/code&gt;目录到正式工作目录&lt;/p&gt;
&lt;p&gt;c, 在正式工作目录执行&lt;code&gt;svn update&lt;/code&gt;，OK 了&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;参考文章：&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="http://www.myexception.cn/powerdesigner/549246.html" target="_blank" rel="noopener"
 &gt;http://www.myexception.cn/powerdesigner/549246.html&lt;/a&gt;&lt;/p&gt;</description></item><item><title>SVN 提交的时候提示'No space left on device'</title><link>https://zhangdapeng.dev/p/svn-ti-jiao-de-shi-hou-ti-shi-no-space-left-on-device/</link><pubDate>Thu, 26 Jun 2025 11:16:04 +0000</pubDate><guid>https://zhangdapeng.dev/p/svn-ti-jiao-de-shi-hou-ti-shi-no-space-left-on-device/</guid><description>&lt;p&gt;第一次遇到一个比较奇怪的问题就是svn报了一个错误“No space left on device”，这个错误第一次遇到。看到这个错误，第一个反应是磁盘空间满了；但 df 一看，每个分区的空间都还富余的很。从 munin 的监控图表上看 Filesystem usage 也很平稳，但下面的 Inode usage 就有问题了，其中一个分区的 usage 已经到了100%。赶紧跑到服务器上 &lt;code&gt;df -i&lt;/code&gt; 检查，果然是 Inode 耗尽。原来这个分区是用来扔各种日志和临时文件的，其中有某个程序产生的临时文件又小又多，又没有进行定时回滚，造成在磁盘空间耗尽之前文件系统的 Inode 就被用光了。超出系统中同时运行的最大 message queue 个数限制 ： 在 root 下用 &lt;code&gt;sysctl kernel.msgmni&lt;/code&gt; 检查该参数，&lt;code&gt;sysctl -w kernel.msgmni=XXX&lt;/code&gt; 重新设定即可。&lt;/p&gt;
&lt;p&gt;我这边正在尝试，大家也可以尝试一下。&lt;/p&gt;
&lt;p&gt;如果不起作用，可以重启一下svn。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;参考文章：&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="http://www.cnblogs.com/xiaofan21/archive/2013/05/21/3090447.html" target="_blank" rel="noopener"
 &gt;http://www.cnblogs.com/xiaofan21/archive/2013/05/21/3090447.html&lt;/a&gt;&lt;/p&gt;</description></item><item><title>svn 类似 这样的错误”svn: The repository at 'svn://xxxxx' has uuid 'XXXX', but the WC has 'XXXX'“</title><link>https://zhangdapeng.dev/p/svn-lei-si-zhe-yang-de-cuo-wu-svn-the-repository-at-svnxxxxx-has-uuid-xxxx-but-the-wc-has-xxxx/</link><pubDate>Tue, 24 Jun 2025 15:29:45 +0000</pubDate><guid>https://zhangdapeng.dev/p/svn-lei-si-zhe-yang-de-cuo-wu-svn-the-repository-at-svnxxxxx-has-uuid-xxxx-but-the-wc-has-xxxx/</guid><description>&lt;p&gt;首先到你新建的svn仓库的目录外面，执行类型下面的命令&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;svnadmin setuuid svn仓库目录 uuid值
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;svnadmin setuuid /var/svnroot/social_spider_php_client d34213a8-9156-4794-bef9-0b69dbbc01cf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果你不知道uuid是多少，你可以看看你报错的那段代码：&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;这里举一个我的实例&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;我是想将我的david_spider_php_server仓库改为social_spider_php_client仓库，然后将代码都传到social_spider_php_client仓库&lt;/p&gt;
&lt;p&gt;在我执行这段代码的时候：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;svn switch --relocate svn://192.168.0.123/david_spider_php_server svn://192.168.0.123/social_spider_php_client ./
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;显示下面的错误：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;svn: E195009: The repository at &lt;span style="color:#e6db74"&gt;&amp;#39;svn://192.168.0.123/social_spider_php_client&amp;#39;&lt;/span&gt; has uuid &lt;span style="color:#e6db74"&gt;&amp;#39;7062f65b-c345-4f53-b375-9132776ade26&amp;#39;&lt;/span&gt;, but the WC has &lt;span style="color:#e6db74"&gt;&amp;#39;d34213a8-9156-4794-bef9-0b69dbbc01cf&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;于是我取用了uuid&amp;quot;d34213a8-9156-4794-bef9-0b69dbbc01cf&amp;quot;&lt;/p&gt;
&lt;p&gt;服务器端执行如下代码:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;svnadmin setuuid /var/svnroot/social_spider_php_client d34213a8-9156-4794-bef9-0b69dbbc01cf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然后再在客户端执行：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;svn switch --relocate svn://192.168.0.123/david_spider_php_server svn://192.168.0.123/social_spider_php_client ./
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果一切正常，就说明没有什么问题了。&lt;/p&gt;
&lt;p&gt;后面又遇到了一个关键的错误，在执行svn更新的操作的时候，出现了&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;svn: E160006: 没有版本 &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;遇到这个错误该怎么办呢，我的解决办法是&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;export一份，然后重新部署
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;svn expor 源 新
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;svn co svn地址 新
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Ubuntu12.04 下SVN安装和配置</title><link>https://zhangdapeng.dev/p/ubuntu1204-xia-svn-an-zhuang-he-pei-zhi/</link><pubDate>Tue, 24 Jun 2025 15:04:45 +0000</pubDate><guid>https://zhangdapeng.dev/p/ubuntu1204-xia-svn-an-zhuang-he-pei-zhi/</guid><description>&lt;h3 id="ubuntu1204下svn安装"&gt;&lt;a class="link" href="#1" &gt;Ubuntu12.04下SVN安装&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;1.安装包&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo apt-get install subversion
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;2.创建项目目录&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo mkdir /var/svnroot
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ cd /var/svnroot
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo mkdir mypro
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;3.创建svn文件仓库&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo svnadmin create /var/svnroot/mypro
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;4.导入项目到svn文件仓库 (可有可无)&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo svn import -m &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&lt;/span&gt; 你的文件夹路径 file://var/svnroot/mypro
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;5.访问权限设置&lt;/p&gt;
&lt;p&gt;修改 /var/svnroot/mypro/conf目录下：&lt;/p&gt;
&lt;p&gt;svnserve.conf 、passwd 个文件,行最前端不允许有空格&lt;/p&gt;
&lt;p&gt;编辑svnserve.conf文件,把如下面行取消注释，并需要顶格&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;anon-access &lt;span style="color:#f92672"&gt;=&lt;/span&gt; read
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;auth-access &lt;span style="color:#f92672"&gt;=&lt;/span&gt; write
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;password-db &lt;span style="color:#f92672"&gt;=&lt;/span&gt; passwd
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;编辑passwd 如下:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;users&lt;span style="color:#f92672"&gt;]&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;andy &lt;span style="color:#f92672"&gt;=&lt;/span&gt; andy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="6"&gt;
&lt;li&gt;开启svnserve,以SVN根目录开启：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ svnserve -d -r /var/svnroot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;7.检查是否正常启动&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ netstat -ntlp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;可以看到有一个端口为3690的地址，表示启动成功&lt;/p&gt;
&lt;p&gt;（如果使用Apache连接，则跳过下步）&lt;/p&gt;
&lt;p&gt;8.局域网访问，checkout出来SVN库的文件&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;svn checkout svn://svnIp地址/mypro
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;或者简写为：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;svn co svn://svnIp地址/mypro
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="在ubuntu1204下使用apache配置subversion"&gt;&lt;a class="link" href="#2" &gt;在Ubuntu12.04下使用Apache配置Subversion&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;1.安装必要软件&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo apt-get install subversion libapache2-svn apache2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;2.修改apache配置文件/etc/apache2/mods-available/dav_svn.conf&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;&amp;lt;Location /var/svnroot/mypro&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;DAV svn&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;SVNPath /var/svnroot/mypro&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;AuthType Basic&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;AuthName &amp;#34;myproject subversion repository&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;AuthUserFile /etc/subversion/passwd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#&amp;lt;LimitExcept GET PROPFIND OPTIONS REPORT&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;Require valid-user&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#&amp;lt;/LimitExcept&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;&amp;lt;/Location&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果需要用户每次登录时都进行用户密码验证，请将&lt;/p&gt;
&lt;p&gt;&lt;!-- raw HTML omitted --&gt;与&lt;!-- raw HTML omitted --&gt;两行注释掉。&lt;/p&gt;
&lt;p&gt;当您添加了上面的内容，您必须重新起动 Apache 2 Web 服务器，请输入下面的命令：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo /etc/init.d/apache2 restart
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;3.创建 /etc/subversion/passwd 文件，该文件包含了用户授权的详细信息&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo htpasswd -c /etc/subversion/passwd user_name
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;它会提示您输入密码，当您输入了密码，该用户就建立了。“-c”选项表示创建新的/etc/subversion/passwd文件，所以user_name所指的用户将是文件中唯一的用户。如果要添加其他用户，则去掉“-c”选项即可：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo htpasswd /etc/subversion/passwd other_user_name
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;4.您可以通过下面的命令来访问文件仓库：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ svn co http://hostname/svn/myproject myproject --username user_name
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;或者通过浏览器：http://hostname/svn/myproject&lt;/p&gt;
&lt;h3 id="ubuntu1204-svn命令大全"&gt;&lt;a class="link" href="#3" &gt;Ubuntu12.04 SVN命令大全&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;1、将文件checkout到本地目录 svn checkout path（path 是服务器上的目录）&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ svn checkout svn://192.168.1.1/pro
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;简写：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ svn co svn://192.168.1.1/pro
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;2、往版本库中添加新的文件&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ svnadd file
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ svn add test.php#&lt;span style="color:#f92672"&gt;(&lt;/span&gt;添加test.php&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ svn add *.php#&lt;span style="color:#f92672"&gt;(&lt;/span&gt;添加当前目录下所有的php文件&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;3、将改动的文件提交到版本库&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ svn commit -m &lt;span style="color:#e6db74"&gt;&amp;#34;LogMessage&amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;[&lt;/span&gt;-N&lt;span style="color:#f92672"&gt;]&lt;/span&gt; &lt;span style="color:#f92672"&gt;[&lt;/span&gt;--no-unlock&lt;span style="color:#f92672"&gt;]&lt;/span&gt; PATH&lt;span style="color:#f92672"&gt;(&lt;/span&gt;如果选择了保持锁,就使用–no- unlock开关&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;例如：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ svn commit -m &lt;span style="color:#e6db74"&gt;&amp;#39;add test file for my test&amp;#39;&lt;/span&gt; test.php
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;简写：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ svn ci
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;4、更新到某个版本&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ svn update -rm path
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;例如：$ svn update如果后面没有目录，默认将当前目录以及子目录下的所有文件都更新到最新版本。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ svn update -r &lt;span style="color:#ae81ff"&gt;200&lt;/span&gt; test.php#&lt;span style="color:#f92672"&gt;(&lt;/span&gt;将版本库中的文件test.php还原到版本200&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ svn update test.php#&lt;span style="color:#f92672"&gt;(&lt;/span&gt;更新，于版本库同步。如果在提交的时候提示过期的话，是因为冲突，需要先update，修改文 件，然后清除$ svn resolved，最后再提交commit&lt;span style="color:#f92672"&gt;)&lt;/span&gt; 简写：svn up
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;5、删除文件&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ svn delete path -m &lt;span style="color:#e6db74"&gt;&amp;#39;delete test fle&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;例如：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ svn delete test.php
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然后再&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ svn ci -m &lt;span style="color:#e6db74"&gt;&amp;#39;delete test file&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;简写：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;svn &lt;span style="color:#f92672"&gt;(&lt;/span&gt;del, remove, rm&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;6、比较差异&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ svn diff path#&lt;span style="color:#f92672"&gt;(&lt;/span&gt;将修改的文件与基础版本比较&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;例如：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ svn diff test.php
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ svn diff -r m:n path#&lt;span style="color:#f92672"&gt;(&lt;/span&gt;对版本m和版本n比较差异&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;例如：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;svn diff -r 200:201 test.php
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;简写：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;svn di
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;7、查看文件或者目录状态&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;1）svn status path#（目录下的文件和子目录的状态，正常状态不显示）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;【?：不在svn的控制中；M：内容被修改；C：发生冲突；A：预定加入到版本库；K：被锁定】&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 2）svn status -v path&lt;span style="color:#f92672"&gt;(&lt;/span&gt;显示 文件和子目录状态&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;第一列保持相同，第二列显示工作版本号，第三和第四列显示最后一次修改的版本号和修改人。&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;注：svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的，原因是svn在本地的.svn中保留了本地版本的原始拷贝。&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;简写：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;svn st
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;8、解决冲突&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ svn resolved# 移除工作副本的目录或文件的“冲突”状态。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;用法: $ resolved PATH…&lt;/p&gt;
&lt;p&gt;注意: 本子命令不会依语法来解决冲突或是移除冲突标记；它只是移除冲突的&lt;/p&gt;
&lt;p&gt;相关文件，然后让 PATH 可以再次提交。&lt;/p&gt;
&lt;h3 id="同步更新-"&gt;&lt;a class="link" href="#4" &gt;同步更新 [勾子]&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;同步程序思路：用户提交程序到SVN，SVN触发hooks,按不同的hooks进行处理，这里用到的是post-commit，利用post-commit到代码检出到SVN服务器的本地硬盘目录，再通过rsync同步到远程的WEB服务器上。&lt;/p&gt;
&lt;p&gt;知识点：&lt;/p&gt;
&lt;p&gt;1、SVN的hooks&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;start-commit 提交前触发事务&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;pre-commit 提交完成前触发事务&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;post-commit 提交完成时触发事务&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;pre-revprop-change 版本属性修改前触发事务&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;post-revprop-change 版本属性修改后触发事务&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;通过上面这些名称编写的脚本就就可以实现多种功能了，相当强大。&lt;/p&gt;
&lt;p&gt;2、同步命令rsync的具体参数使用&lt;/p&gt;
&lt;p&gt;3、具有几个语言的编程能力bash python perl都可以实现&lt;/p&gt;
&lt;p&gt;post-commit脚本&lt;/p&gt;
&lt;p&gt;编辑文件：sudo vim /var/svnroot/mypro/hooks/post-commit&lt;/p&gt;
&lt;p&gt;注意：编辑完成post-commit后，执行：$ sudo chmod 755 post-commit&lt;/p&gt;
&lt;p&gt;内容：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#!/bin/sh 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;export LANG&lt;span style="color:#f92672"&gt;=&lt;/span&gt;zh_CN.UTF-8 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo /usr/bin/svn update /var/www/myblog --username xxxxxx --password xxxxxx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;或更加复杂的同步更新&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#Set variable &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SVN&lt;span style="color:#f92672"&gt;=&lt;/span&gt;/usr/bin/svn 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;WEB&lt;span style="color:#f92672"&gt;=&lt;/span&gt;/home/test_nokia/ 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;RSYNC&lt;span style="color:#f92672"&gt;=&lt;/span&gt;/usr/bin/rsync 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;LOG&lt;span style="color:#f92672"&gt;=&lt;/span&gt;/tmp/rsync_test_nokia.log 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;WEBIP&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;192.168.0.23&amp;#34;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;export LANG&lt;span style="color:#f92672"&gt;=&lt;/span&gt;en_US.UTF-8 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#update the code from the SVN &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$SVN update $WEB --username user --password password 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#If the previous command completed successfully, to continue the following &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#f92672"&gt;[&lt;/span&gt; $? &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#f92672"&gt;]&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;then&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; echo &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; $LOG 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; echo &lt;span style="color:#e6db74"&gt;`&lt;/span&gt;date&lt;span style="color:#e6db74"&gt;`&lt;/span&gt; &amp;gt;&amp;gt; $LOG 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; echo &lt;span style="color:#e6db74"&gt;&amp;#34;##############################&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; $LOG 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; chown -R nobody:nobody /home/test_nokia/ 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;#Synchronization code from the SVN server to the WEB server, notes:by the key &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; $RSYNC -vaztpH --timeout&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;90&lt;/span&gt; --exclude-from&lt;span style="color:#f92672"&gt;=&lt;/span&gt;/home/svn/exclude.list $WEB root@$WEBIP:/www/ &amp;gt;&amp;gt; $LOG 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;以上是具体的post-commit程序&lt;/p&gt;
&lt;p&gt;注意事项：&lt;/p&gt;
&lt;p&gt;&lt;em&gt;1、一定要定义变量，主要是用过的命令的路径。因为SVN的考虑的安全问题，没有调用系统变量，如果手动执行是没有问题，但SVN自动执行就会无法执行了。&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;2、SVN update 之前一定要先手动checkout一份出来，还有这里一定要添加用户和密码如果只是手动一样会更新，但自动一样的不行。&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;3、加上了对前一个命令的判断，如果update的时候出了问题，程序没有退出的话还会继续同步代码到WEB服务器上，这样会造成代码有问题&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;4、记得要设置所属用户，因为rsync可以同步文件属性，而且我们的WEB服务器一般都不是root用户，用户不正确会造成WEB程序无法正常工作。&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;5、建议最好记录日志，出错的时候可以很快的排错&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;6、最后最关键的数据同步，rsync的相关参数一定要清楚，这个就不说了。注意几个场景：&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;这里的环境是SVN服务器与WEB服务器是分开的&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;把SVN服务器定义为源服务器 WEB服务器为目的服务器&lt;/p&gt;
&lt;p&gt;***场景一、***如果目的WEB服务器为综合的混杂的，像只有一个WEB静态资源，用户提交的，自动生成的都在WEB的一个目录下，建议不要用–delete这个参数&lt;/p&gt;
&lt;p&gt;上面这个程序就是这样，实现的是源服务器到目的服务器的更新和添加，而没有删除操作，WEB服务器的内容会多于源SVN的服务器的&lt;/p&gt;
&lt;p&gt;***场景二、***实现镜像，即目的WEB服务器与源SVN服务器一样的数据，SVN上任何变化WEB上一样的变化，就需要–delete参数&lt;/p&gt;
&lt;p&gt;***场景三、***不需要同步某些子目录，可能有些目录是缓存的临时垃圾目录，或者是专用的图片目录（而不是样式或者排版的）要用exclude这个参数&lt;/p&gt;
&lt;p&gt;注意：这个参数的使用不用写绝对路径，只要目录名称就行 aa代表文件 aa/ 代表目录 ，缺点就是如果有多个子目录都是一样的名称那么这些名称就都不会被同步&lt;/p&gt;
&lt;p&gt;建议用–exclude-from=/home/svn/exclude.list 用文件的形式可以方便的添加和删除&lt;/p&gt;
&lt;p&gt;exclude.list&lt;/p&gt;
&lt;p&gt;.svn/&lt;/p&gt;
&lt;p&gt;images/&lt;/p&gt;
&lt;p&gt;利用SVN的钩子还可以写出很多的程序来控制SVN 如代码提交前查看是否有写日志，是否有tab，有将换成空格，是否有不允许上传的文件，是否有超过限制大小的文件等等。&lt;/p&gt;</description></item><item><title>SVN Can't connect to host问题</title><link>https://zhangdapeng.dev/p/svn-cant-connect-to-host-wen-ti/</link><pubDate>Fri, 20 Jun 2025 10:36:21 +0000</pubDate><guid>https://zhangdapeng.dev/p/svn-cant-connect-to-host-wen-ti/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;当出现&amp;rsquo;目标机器积极拒绝，无法连接&amp;rsquo;或svn: Can&amp;rsquo;t connect to host &amp;hellip;时，应依次检查下面各项&lt;/p&gt;
&lt;p&gt;1，服务器有没有运行，有没有打开相应端口&lt;/p&gt;
&lt;p&gt;如果服务器是svnserve，检查有没有运行svnserve，有没有打开3690端口&lt;/p&gt;
&lt;p&gt;如果服务器是apache，检查apahce是否运行，是否打开80端口&lt;/p&gt;
&lt;p&gt;检查时可以在服务器运行netstat -na看看相应端口是否在LISTEN&lt;/p&gt;
&lt;p&gt;2，防火墙有没有开放相应端口&lt;/p&gt;
&lt;p&gt;3，客户端是否可以连接服务器的相应端口&lt;/p&gt;
&lt;p&gt;使用命令telnet 服务器IP 相应端口&lt;/p&gt;
&lt;p&gt;如：telnet 192.168.0.1 3690&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;我的服务器是ubuntu的，里面使用的是ufw来作防火墙的，因此可以判定我的这儿端口没有开&lt;/p&gt;
&lt;p&gt;执行&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo ufw allow &lt;span style="color:#ae81ff"&gt;3690&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>SVN commit或import时出现 can't open file 'txn-current-lock' permission denied 的原因及解决方法</title><link>https://zhangdapeng.dev/p/svn-commit-huo-import-shi-chu-xian-cant-open-file-txn-current-lock-permission-denied-de-yuan-yin-ji-jie-jue-fang-fa/</link><pubDate>Fri, 20 Jun 2025 10:36:18 +0000</pubDate><guid>https://zhangdapeng.dev/p/svn-commit-huo-import-shi-chu-xian-cant-open-file-txn-current-lock-permission-denied-de-yuan-yin-ji-jie-jue-fang-fa/</guid><description>&lt;p&gt;SVN commit或import时出现 can&amp;rsquo;t open file &amp;rsquo;txn-current-lock&amp;rsquo; permission denied 的原因及解决方法&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;svn: 提交失败(细节如下):&lt;br&gt;
svn: can&amp;rsquo;t open file &amp;rsquo;txn-current-lock&amp;rsquo; permission denied&lt;/p&gt;
&lt;p&gt;或者&lt;/p&gt;
&lt;p&gt;svn: 提交失败(细节如下):&lt;br&gt;
svn: Can&amp;rsquo;t create directory &amp;lsquo;/usr/local/svn/repos/test/db/transactions/1-2.txn&amp;rsquo;: Permission denied&lt;/p&gt;
&lt;p&gt;这个主要原因：在svnadmin create时是root身份，所以，mod_dav_svn就没有write权限等。&lt;/p&gt;
&lt;p&gt;解决办法：&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-objectivec" data-lang="objectivec"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo chown &lt;span style="color:#f92672"&gt;-&lt;/span&gt;R daemon &lt;span style="color:#f92672"&gt;/&lt;/span&gt;var&lt;span style="color:#f92672"&gt;/&lt;/span&gt;svnroot&lt;span style="color:#f92672"&gt;/&lt;/span&gt;yiiblog
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo chmod &lt;span style="color:#f92672"&gt;-&lt;/span&gt;R &lt;span style="color:#ae81ff"&gt;755&lt;/span&gt; &lt;span style="color:#f92672"&gt;/&lt;/span&gt;var&lt;span style="color:#f92672"&gt;/&lt;/span&gt;svnroot&lt;span style="color:#f92672"&gt;/&lt;/span&gt;yiiblog
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>How to fix “containing working copy admin area is missing” in SVN?</title><link>https://zhangdapeng.dev/p/how-to-fix-containing-working-copy-admin-area-is-missing-in-svn/</link><pubDate>Tue, 17 Jun 2025 18:57:25 +0000</pubDate><guid>https://zhangdapeng.dev/p/how-to-fix-containing-working-copy-admin-area-is-missing-in-svn/</guid><description>&lt;p&gt;How to fix “containing working copy admin area is missing” in SVN?&lt;/p&gt;
&lt;p&gt;svn: Directory &amp;lsquo;/xxx/xxx/ios/project/xx/xx/JSONKit&amp;rsquo; is missing&lt;/p&gt;
&lt;p&gt;针对于这个问题：&lt;/p&gt;
&lt;p&gt;第一步&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;svn cleanup
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;第二步&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;svn --force delete &amp;lt;directory-that-doesn&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;t-exist-but-should&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ok解决了&lt;/p&gt;</description></item></channel></rss>