<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Bernie Yu &#187; SVN</title>
	<atom:link href="http://bernieyu.com/tag/svn/feed/" rel="self" type="application/rss+xml" />
	<link>http://bernieyu.com</link>
	<description>复刻生活</description>
	<lastBuildDate>Tue, 17 May 2016 09:03:15 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.2.38</generator>
	<item>
		<title>迁移VPS上的SVN到Synology，并实现增量备份和邮件通知</title>
		<link>http://bernieyu.com/2015/04/move-svn-from-vps-to-synology-with-auto-backup-and-mail-notify/</link>
		<comments>http://bernieyu.com/2015/04/move-svn-from-vps-to-synology-with-auto-backup-and-mail-notify/#comments</comments>
		<pubDate>Sun, 12 Apr 2015 13:27:58 +0000</pubDate>
		<dc:creator><![CDATA[Bernie Yu]]></dc:creator>
				<category><![CDATA[IT技术]]></category>
		<category><![CDATA[SVN]]></category>
		<category><![CDATA[Synology]]></category>

		<guid isPermaLink="false">http://bernieyu.com/?p=152</guid>
		<description><![CDATA[之前的SVN服务器部署在VPS上，主要功能包括： nginx+apache+svn，可以通过http访问； 自 ... <a class="more-link" href="http://bernieyu.com/2015/04/move-svn-from-vps-to-synology-with-auto-backup-and-mail-notify/">　　>>阅读全文&#60;&#60;</a>]]></description>
				<content:encoded><![CDATA[<p>之前的SVN服务器部署在VPS上，主要功能包括：</p>
<ol>
<li>nginx+apache+svn，可以通过http访问；</li>
<li>自定义了post-commit，在每次收到版本提交时
<ul>
<li>自动发送邮件通知更新内容；</li>
<li>自动增量备份版本库，并把备份文件上传到指定的FTP</li>
</ul>
</li>
</ol>
<p>post-commit的内容如下：</p>
<pre>#!/bin/sh

REPOS="$1"
REV="$2"

export LANG="en_US.UTF-8"

#"$REPOS"/hooks/mailer.py commit "$REPOS" $REV "$REPOS"/mailer.conf
/usr/local/bin/svnnotify --repos-path "$1" --revision "$2" --to someone@bernieyu.com,someone2@bernieyu.com --from svn@bernieyu.com --handler "HTML::ColorDiff" --smtp smtp.bernieyu.com --smtp-user svn@bernieyu.com --smtp-pass password  --svnlook /usr/bin/svnlook --subject-prefix '[SVN Update]'

svnadmin dump "$REPOS" --revision "$REV" --incremental &gt;/home/svn/dev/export/rev_$REV.dump

ftp -n&lt;&lt;!
open bernieyoo.bernieyu.com
user ftpuser password
binary
cd /svnbak
lcd /home/svn/dev/export
prompt
put rev_$REV.dump
close
bye
!

rm -f /home/svn/dev/export/rev_$REV.dump</pre>
<p>&nbsp;</p>
<p>考虑到数据安全性，以及连接SVN的速度，决定把SVN迁移到家里的Synology上。</p>
<p>1. 在Synology的套件中心里安装SVN；</p>
<p>安装好后有一个问题，就是SVN的存储目录不能指定放在哪块硬盘，比如我想放在/volume2/svn，而安装后会自动安装在/volume4/svn. 于是将/volume4/svn删除，然后再建立到/volume2/svn的软连接</p>
<pre>rm -rf /volume4/svn
ln -s /volume2/svn /volume4/svn</pre>
<p>&nbsp;</p>
<p>2. 建立repository</p>
<p>在Synology中打开Svn管理页面，创建名为dev的repository，并创建用户。</p>
<p>&nbsp;</p>
<p>3. 导出VPS上的SVN版本库, 并复制到Synology</p>
<pre>#!/bin/sh

cd ~/svnbak

svndump(){
	file_name=rev_$1.dump
	svnadmin dump /home/svn/dev -r $1 --incremental &gt; $file_name
}

ver=`svnlook youngest /home/svn/dev`

svndump 0;

for i in `seq $ver`; do
	svndump $i;
done;


exit 0</pre>
<p>&nbsp;</p>
<p>4. 导入SVN数据到Synology</p>
<pre>#!/bin/sh

svnadmin load /volume2/svn/dev &lt; /volume2/doc/projects/svnbak/dev/rev_0.dump;

for i in `seq 184`; do
  svnadmin load /volume2/svn/dev &lt; /volume2/doc/projects/svnbak/dev/rev_$i.dump;
done;


exit 0</pre>
<p>&nbsp;</p>
<p>5. 修改post-commit，以实现邮件通知和自动备份功能</p>
<ul>
<li>mailer.py需要安装python-svn，但ipkg里的版本与Synology套件中心提供的python版本不一样，于是不考虑了</li>
<li>svnnotify没有在ipkg里找到</li>
</ul>
<p>于是考虑用curl把版本库信息提交到一个web页面，再由这个页面发送邮件。但是一查curl的帮助，发现最新版的已经可以直接使用Smtp发送邮件了，大喜，一试发现竟然真的可以，而且还支持SMTPS</p>
<pre>#!/bin/sh

REPOS="$1"
REV="$2"

export LANG="en_US.UTF-8"
#生成备份
svnadmin dump "$REPOS" --revision "$REV" --incremental &gt;/volume2/doc/projects/svnbak/dev/rev_$REV.dump
#复制到baidu云的自动备份目录
cp /volume2/doc/projects/svnbak/dev/rev_$REV.dump /volume2/doc/baidu/svn_bak/dev/rev_$REV.dump

#得到版本更新相关信息
svnuid=`svnlook uuid $REPOS`
author=`svnlook author -r $REV $REPOS`
date=`svnlook date -r $REV $REPOS`
log=`svnlook log -r $REV $REPOS`
changed=`svnlook changed -r $REV $REPOS`

file="content.txt"

smtpserver="smtps://smtp.bernieyu.com:465"
mailfrom="svn@bernieyu.com"
mailrcpt="someone@bernieyu.com"
smtpuser="svn@bernieyu.com"
smtppwd="password"

#HTML邮件的CSS，从svnnotify复制来的
css="&lt;style type=\"text/css\"&gt; &lt;!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff;}
 #msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
 #msg dt:after { content:':';}
 #msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg{ font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
 #msg dl a { font-weight: bold}
 #msg dl a:link    { color:#fc3; }
 #msg dl a:active  { color:#ff0; }
 #msg dl a:visited { color:#cc6; }
 #msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
 #logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
 #logmsg p, #logmsg pre, #logmsg blockquote{ margin: 0 0 1em 0; }
 #logmsg p, #logmsg li, #logmsg dt, #logmsg dd{ line-height: 14pt; }
 #logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6{ margin: .5em 0; }
 #logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child{ margin-top: 0; }
 #logmsg ul, #logmsg ol{ padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
 #logmsg ul { text-indent: -1em; padding-left: 1em; }
 #logmsg ol { text-indent: -1.5em; padding-left: 1.5em;}
 #logmsg &amp;gt; ul, #logmsg &amp;gt; ol{ margin: 0 0 1em 0; }
 #logmsg pre { background: #eee; padding: 1em; }
 #logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
 #logmsg dl { margin: 0; }
 #logmsg dt { font-weight: bold; }
 #logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
 #logmsg dd:before { content:'�';}
 #logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
 #logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
 #logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
 #logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
 #logmsg table th.Corner { text-align: left; }
 #logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
 #header, #footer{ color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
 #patch { width: 100%; }
 #patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
 #patch .propset h4, #patch .binary h4{margin:0;}
 #patch pre {padding:0;line-height:1.2em;margin:0;}
 #patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
 #patch .propset .diff, #patch .binary .diff{padding:10px 0;}
 #patch span {display:block;padding:0 10px;}
 #patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile{border:1px solid #ccc;margin:10px 0;}
 #patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
 #patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
 #patch .lines, .info{color:#888;background:#fff;}
 --&gt;}
&lt;/style&gt;"

echo "From: \"SVN\" &lt;$mailfrom&gt;
To: \"Bernie Yu\" &lt;$mailrcpt&gt;
Subject: [SVN Update][$REV] $log
Content-Type: text/html; charset=\"us-ascii\"

&lt;html&gt; &lt;head&gt;$css&lt;/head&gt; &lt;body&gt;
&lt;div id=\"msg\"&gt;
    &lt;dl class=\"meta\"&gt;
      &lt;dt&gt;Revision&lt;/dt&gt; &lt;dd&gt;$REV&lt;/dd&gt;
      &lt;dt&gt;Author&lt;/dt&gt; &lt;dd&gt;$author&lt;/dd&gt;
      &lt;dt&gt;Date&lt;/dt&gt; &lt;dd&gt;$date&lt;/dd&gt;
    &lt;/dl&gt;

&lt;h3&gt;Log Message&lt;/h3&gt;
&lt;pre&gt;$log&lt;/pre&gt;

&lt;h3&gt;Change Detail&lt;/h3&gt;
&lt;ul&gt;" &gt; $file

OLDIFS=$IFS
IFS=$'\n'
for line in $changed
do
    echo "&lt;li&gt;$line&lt;/li&gt;" &gt;&gt; $file
done
IFS=$OLDIFS

echo "&lt;/ul&gt;

&lt;/div&gt;
&lt;/body&gt; &lt;/html&gt;" &gt;&gt; $file

curl --url "$smtpserver" --ssl-reqd --mail-from "$mailfrom" --mail-rcpt "$mailrcpt" --upload-file $file --user "$smtpuser:$smtppwd" --insecure
</pre>
<p>&nbsp;</p>
<p>测试成功，搞定！</p>
<p>&nbsp;</p>
<p>PS：</p>
<p>目前遗留的问题一是Synology自带的SVN不支持HTTP访问，只能通过SVN协议访问。在路由器添加了端口映射后，用SVN协议访问影响不大。安装SVN后需要重启一下Synology，我当时没重启，结果端口映射后怎么也访问不到。二是SSH+SVN还没有搞定，因为SVN添加的用户只是SVN的用户而不是SSH用户，暂时还找不到解决办法。</p>
]]></content:encoded>
			<wfw:commentRss>http://bernieyu.com/2015/04/move-svn-from-vps-to-synology-with-auto-backup-and-mail-notify/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>svnlook命令集</title>
		<link>http://bernieyu.com/2015/04/svnlook/</link>
		<comments>http://bernieyu.com/2015/04/svnlook/#comments</comments>
		<pubDate>Fri, 10 Apr 2015 07:45:49 +0000</pubDate>
		<dc:creator><![CDATA[Bernie Yu]]></dc:creator>
				<category><![CDATA[IT技术]]></category>
		<category><![CDATA[SVN]]></category>
		<category><![CDATA[svnlook]]></category>

		<guid isPermaLink="false">http://bernieyu.com/?p=148</guid>
		<description><![CDATA[svnlook命令集 转载自 http://blog.sina.com.cn/s/blog_5eb1a2670 ... <a class="more-link" href="http://bernieyu.com/2015/04/svnlook/">　　>>阅读全文&#60;&#60;</a>]]></description>
				<content:encoded><![CDATA[<div class="articalTitle">
<h2 id="t_5eb1a2670100kpx1" class="titName SG_txta">svnlook命令集</h2>
<div class="turnBoxzz"><a class="SG_aBtn SG_aBtn_ico SG_turn"><cite><img class="SG_icon SG_icon111" src="http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" alt="" width="15" height="15" align="absmiddle" />转载自 http://blog.sina.com.cn/s/blog_5eb1a2670100kpx1.html</cite></a></div>
</div>
<div id="sina_keyword_ad_area" class="articalTag"></div>
<div id="sina_keyword_ad_area2" class="articalContent   ">
<p> <wbr />svnlook</p>
<div>
<div>
<h2>名称</h2>
<p>svnlook author — 打印作者。</p>
</div>
<div>
<h2>概要</h2>
<pre>svnlook author REPOS_PATH</pre>
</div>
<div>
<h2>描述</h2>
<p>打印版本库一个修订版本或者事物的作者。</p>
</div>
<div>
<h2>选项</h2>
<pre>--revision (-r)
--transaction (-t)</pre>
</div>
<div>
<h2>例子</h2>
<p>svnlook author</p>
<pre>$ svnlook author -r 40 /usr/local/svn/repos 
sally</pre>
</div>
</div>
<div>
<div>
<hr />
</div>
<div>
<h2>名称</h2>
<p>svnlook cat — 打印一个文件的内容。</p>
</div>
<div>
<h2>概要</h2>
<pre>svnlook cat REPOS_PATH PATH_IN_REPOS</pre>
</div>
<div>
<h2>描述</h2>
<p>打印一个文件的内容。</p>
</div>
<div>
<h2>选项</h2>
<pre>--revision (-r)
--transaction (-t)</pre>
</div>
<div>
<h2>例子</h2>
<p>这会显示事物ax8中一个文件的内容，位于/trunk/README：</p>
<pre>$ svnlook cat -t ax8 /usr/local/svn/repos /trunk/README

 <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> Subversion, a version control system.
 <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> =====================================

$LastChangedDate: 2003-07-17 10:45:25 -0500 (Thu, 17 Jul 2003) $

Contents:

 <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> I. A FEW POINTERS
 <wbr /> <wbr /> <wbr /> <wbr /> II. DOCUMENTATION
 <wbr /> <wbr /> <wbr /> III. PARTICIPATING IN THE SUBVERSION COMMUNITY
…</pre>
</div>
</div>
<div>
<div>
<hr />
</div>
<div>
<h2>名称</h2>
<p>svnlook changed — 打印修改的路径。</p>
</div>
<div>
<h2>概要</h2>
<pre>svnlook changed REPOS_PATH</pre>
</div>
<div>
<h2>描述</h2>
<p>打印在特定修订版本或事物修改的路径，也是在前两列使用“</p>
<p>svn update样式的”状态字符：</p>
<dl>
<dt>&#8216;A &#8216;</dt>
<dd>条目添加到版本库。</dd>
</dl>
<p>&#8216;D &#8216;条目从版本库删除。&#8217;U &#8216;文件内容改变了。&#8217;_U&#8217;条目属性改变了。&#8217;UU&#8217;文件内容和属性修改了。</p></div>
<p>文件和目录可以区分，目录路径后面会显示字符&#8217;/&#8217;。</p>
</div>
<div>
<h2>选项</h2>
<pre>--revision (-r)
--transaction (-t)</pre>
</div>
<div>
<h2>例子</h2>
<p>显示在测试版本库修订版本39修改的文件列表：</p>
<pre>$ svnlook changed -r 39 /usr/local/svn/repos
A <wbr /> <wbr /> <wbr /> trunk/vendors/deli/
A <wbr /> <wbr /> <wbr /> trunk/vendors/deli/chips.txt
A <wbr /> <wbr /> <wbr /> trunk/vendors/deli/sandwich.txt
A <wbr /> <wbr /> <wbr /> trunk/vendors/deli/pickle.txt
U <wbr /> <wbr /> <wbr /> trunk/vendors/baker/bagel.txt
_U <wbr /> <wbr /> trunk/vendors/baker/croissant.txt
UU <wbr /> <wbr /> trunk/vendors/baker/pretzel.txt
D <wbr /> <wbr /> <wbr /> trunk/vendors/baker/baguette.txt</pre>
</div>
<div>
<div>
<hr />
</div>
<div>
<div>
<h2>名称</h2>
<p>svnlook date — 打印时间戳。</p>
</div>
<div>
<h2>概要</h2>
<pre>svnlook date REPOS_PATH</pre>
</div>
<div>
<h2>描述</h2>
<p>打印版本库一个修订版本或事物的时间戳。</p>
</div>
<div>
<h2>选项</h2>
<pre>--revision (-r)
--transaction (-t)</pre>
</div>
<div>
<h2>例子</h2>
<p>显示测试版本库修订版本40的日期：</p>
<pre> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr />
$ svnlook date -r 40 /tmp/repos/
2003-02-22 17:44:49 -0600 (Sat, 22 Feb 2003)</pre>
</div>
</div>
<div>
<div>
<hr />
</div>
<div>
<h2>名称</h2>
<p>svnlook diff — 打印修改的文件和属性的区别。</p>
</div>
<div>
<h2>概要</h2>
<pre>svnlook diff REPOS_PATH</pre>
</div>
<div>
<h2>描述</h2>
<p>打印版本库中GNU样式的文件和属性修改区别。</p>
</div>
<div>
<h2>选项</h2>
<pre>--revision (-r)
--transaction (-t)
--no-diff-added
--no-diff-deleted</pre>
</div>
<div>
<h2>例子</h2>
<p>这显示了一个新添加的（空的）文件，一个删除的文件和一个拷贝的文件：</p>
<pre>$ svnlook diff -r 40 /usr/local/svn/repos/
Copied: egg.txt (from rev 39, trunk/vendors/deli/pickle.txt)

Added: trunk/vendors/deli/soda.txt
==============================================================================

Modified: trunk/vendors/deli/sandwich.txt
==============================================================================
--- trunk/vendors/deli/sandwich.txt (original)
+++ trunk/vendors/deli/sandwich.txt 2003-02-22 17:45:04.000000000 -0600
@@ -0,0 +1 @@
+Don't forget the mayo!

Modified: trunk/vendors/deli/logo.jpg
==============================================================================
(Binary files differ)

Deleted: trunk/vendors/deli/chips.txt
==============================================================================

Deleted: trunk/vendors/deli/pickle.txt
==============================================================================</pre>
<p>如果一个文件有非文本的svn:mime-type属性，区别不会明确显示。</p>
</div>
</div>
<div>
<div>
<hr />
</div>
<div>
<h2>名称</h2>
<p>svnlook dirs-changed — 打印本身修改的目录。</p>
</div>
<div>
<h2>概要</h2>
<pre>svnlook dirs-changed REPOS_PATH</pre>
</div>
<div>
<h2>描述</h2>
<p>打印本身修改（属性编辑）或子文件修改的目录。</p>
</div>
<div>
<h2>选项</h2>
<pre>--revision (-r)
--transaction (-t)</pre>
</div>
<div>
<h2>例子</h2>
<p>这显示了在我们的实例版本库中在修订版本40修改的目录：</p>
<pre>$ svnlook dirs-changed -r 40 /usr/local/svn/repos
trunk/vendors/deli/</pre>
</div>
</div>
<div>
<div>
<hr />
</div>
<div>
<h2>名称</h2>
<p>svnlook help</p>
</div>
<div>
<h2>概要</h2>
<pre>Also svnlook -h and svnlook -?.</pre>
</div>
<div>
<h2>描述</h2>
<p>显示svnlook的帮助信息，这个命令如同</p>
<p>svn help的兄弟，也是你的朋友，即使你从不调用它，并且忘掉了邀请它加入你的上一次聚会。</p>
</div>
<div>
<h2>别名</h2>
<p>?, h</p>
</div>
</div>
<div>
<div>
<hr />
</div>
<div>
<h2>名称</h2>
<p>svnlook history — 打印版本库（如果没有路径，则是根目录）某一个路径的历史。</p>
</div>
<div>
<h2>概要</h2>
<pre>svnlook history REPOS_PATH 
 <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> [PATH_IN_REPOS]</pre>
</div>
<div>
<h2>描述</h2>
<p>打印版本库（如果没有路径，则是根目录）某一个路径的历史。</p>
</div>
<div>
<h2>选项</h2>
<pre>--revision (-r)
--show-ids</pre>
</div>
<div>
<h2>例子</h2>
<p>这显示了实例版本库中作为修订版本20的路径/tags/1.0的历史输出。</p>
<pre>$ svnlook history -r 20 /usr/local/svn/repos /tags/1.0 --show-ids
REVISION <wbr /> <wbr /> <wbr /> PATH &lt;ID&gt;
-------- <wbr /> <wbr /> <wbr /> ---------
 <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> 19 <wbr /> <wbr /> <wbr /> /tags/1.0 &lt;1.2.12&gt;
 <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> 17 <wbr /> <wbr /> <wbr /> /branches/1.0-rc2 &lt;1.1.10&gt;
 <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> 16 <wbr /> <wbr /> <wbr /> /branches/1.0-rc2 &lt;1.1.x&gt;
 <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> 14 <wbr /> <wbr /> <wbr /> /trunk &lt;1.0.q&gt;
 <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> 13 <wbr /> <wbr /> <wbr /> /trunk &lt;1.0.o&gt;
 <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> 11 <wbr /> <wbr /> <wbr /> /trunk &lt;1.0.k&gt;
 <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> 9 <wbr /> <wbr /> <wbr /> /trunk &lt;1.0.g&gt;
 <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> 8 <wbr /> <wbr /> <wbr /> /trunk &lt;1.0.e&gt;
 <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> 7 <wbr /> <wbr /> <wbr /> /trunk &lt;1.0.b&gt;
 <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> 6 <wbr /> <wbr /> <wbr /> /trunk &lt;1.0.9&gt;
 <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> 5 <wbr /> <wbr /> <wbr /> /trunk &lt;1.0.7&gt;
 <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> 4 <wbr /> <wbr /> <wbr /> /trunk &lt;1.0.6&gt;
 <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> 2 <wbr /> <wbr /> <wbr /> /trunk &lt;1.0.3&gt;
 <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> 1 <wbr /> <wbr /> <wbr /> /trunk &lt;1.0.2&gt;</pre>
</div>
</div>
<div>
<div>
<hr />
</div>
<div>
<h2>名称</h2>
<p>svnlook info — 打印作者、时间戳、日志信息大小和日志信息。</p>
</div>
<div>
<h2>概要</h2>
<pre>svnlook info REPOS_PATH</pre>
</div>
<div>
<h2>描述</h2>
<p>打印作者、时间戳、日志信息大小和日志信息。</p>
</div>
<div>
<h2>选项</h2>
<pre>--revision (-r)
--transaction (-t)</pre>
</div>
<div>
<h2>例子</h2>
<p>显示了你的实例版本库在修订版本40的信息输出。</p>
<pre>$ svnlook info -r 40 /usr/local/svn/repos
sally
2003-02-22 17:44:49 -0600 (Sat, 22 Feb 2003)
15
Rearrange lunch.</pre>
</div>
</div>
<div>
<div>
<hr />
</div>
<div>
<h2>名称</h2>
<p>svnlook lock — 如果版本库路径已经被锁定，描述它。</p>
</div>
<div>
<h2>概要</h2>
<pre>svnlook lock REPOS_PATH PATH_IN_REPOS</pre>
</div>
<div>
<h2>描述</h2>
<p>打印PATH_IN_REPOS锁定的所有信息，如果PATH_IN_REPOS没有锁定，则不打印任何内容。</p>
</div>
<div>
<h2>选项</h2>
<p>无</p>
</div>
<div>
<h2>例子</h2>
<p>这描述了文件tree.jpg的锁定。</p>
<pre>$ svnlook lock /svn/repos tree.jpg
UUID Token: opaquelocktoken:ab00ddf0-6afb-0310-9cd0-dda813329753
Owner: harry
Created: 2005-07-08 17:27:36 -0500 (Fri, 08 Jul 2005)
Expires: 
Comment (1 line):
Rework the uppermost branches on the bald cypress in the foreground.</pre>
</div>
</div>
<div>
<div>
<hr />
</div>
<div>
<h2>名称</h2>
<p>svnlook log — 打印日志信息。</p>
</div>
<div>
<h2>概要</h2>
<pre>svnlook log REPOS_PATH</pre>
</div>
<div>
<h2>描述</h2>
<p>打印日志信息。</p>
</div>
<div>
<h2>选项</h2>
<pre>--revision (-r)
--transaction (-t)</pre>
</div>
<div>
<h2>例子</h2>
<p>这显示了实例版本库在修订版本40的日志输出：</p>
<pre>$ svnlook log /tmp/repos/
Rearrange lunch.</pre>
</div>
</div>
<div>
<div>
<hr />
</div>
<div>
<h2>名称</h2>
<p>svnlook propget — 打印版本库中一个路径一个属性的原始值。</p>
</div>
<div>
<h2>概要</h2>
<pre>svnlook propget REPOS_PATH PROPNAME [PATH_IN_REPOS]</pre>
</div>
<div>
<h2>描述</h2>
<p>列出版本库中一个路径一个属性的值。</p>
</div>
<div>
<h2>别名</h2>
<p>pg, pget</p>
</div>
<div>
<h2>选项</h2>
<pre>--revision (-r)
--transaction (-t)
--revprop</pre>
</div>
<div>
<h2>例子</h2>
<p>这显示了HEAD修订版本中文件/trunk/sandwich的“</p>
<p>seasonings”属性的值：</p>
<pre>$ svnlook pg /usr/local/svn/repos seasonings /trunk/sandwich
mustard</pre>
</div>
</div>
<div>
<div>
<hr />
</div>
<div>
<h2>名称</h2>
<p>svnlook proplist — 打印版本化的文件和目录的属性名称和值。</p>
</div>
<div>
<h2>概要</h2>
<pre>svnlook proplist REPOS_PATH [PATH_IN_REPOS]</pre>
</div>
<div>
<h2>描述</h2>
<p>列出版本库中一个路径的属性，使用&#8211;verbose选项也会显示所有的属性值。</p>
</div>
<div>
<h2>别名</h2>
<p>pl, plist</p>
</div>
<div>
<h2>选项</h2>
<pre>--revision (-r)
--transaction (-t)
--verbose (-v)
--revprop</pre>
</div>
<div>
<h2>例子</h2>
<p>这显示了HEAD修订版本中/trunk/README的属性名称：</p>
<pre>$ svnlook proplist /usr/local/svn/repos /trunk/README
 <wbr /> <wbr /> original-author
 <wbr /> <wbr /> svn:mime-type</pre>
<p>这与前一个例子是同一个命令，但是同时显示了属性值：</p>
<pre>$ svnlook --verbose proplist /usr/local/svn/repos /trunk/README
 <wbr /> <wbr /> original-author : fitz
 <wbr /> <wbr /> svn:mime-type : text/plain</pre>
</div>
</div>
<div>
<div>
<hr />
</div>
<div>
<h2>名称</h2>
<p>svnlook tree — 打印树。</p>
</div>
<div>
<h2>概要</h2>
<pre>svnlook tree REPOS_PATH [PATH_IN_REPOS]</pre>
</div>
<div>
<h2>描述</h2>
<p>打印树，从PATH_IN_REPOS（如果提供，会作为树的根）开始，可以选择显示节点修订版本ID。</p>
</div>
<div>
<h2>选项</h2>
<pre>--revision (-r)
--transaction (-t)
--show-ids</pre>
</div>
<div>
<h2>例子</h2>
<p>这会显示实例版本库中修订版本40的树输出（包括节点ID）：</p>
<pre>$ svnlook tree -r 40 /usr/local/svn/repos --show-ids
/ &lt;0.0.2j&gt;
trunk/ &lt;p.0.2j&gt;
 <wbr /> <wbr /> vendors/ &lt;q.0.2j&gt;
 <wbr /> <wbr /> <wbr /> deli/ &lt;1g.0.2j&gt;
 <wbr /> <wbr /> <wbr /> <wbr /> egg.txt &lt;1i.e.2j&gt;
 <wbr /> <wbr /> <wbr /> <wbr /> soda.txt &lt;1k.0.2j&gt;
 <wbr /> <wbr /> <wbr /> <wbr /> sandwich.txt &lt;1j.0.2j&gt;</pre>
</div>
</div>
<div>
<div>
<hr />
</div>
<div>
<h2>名称</h2>
<p>svnlook uuid — 打印版本库的UUID。</p>
</div>
<div>
<h2>概要</h2>
<pre>svnlook uuid REPOS_PATH</pre>
</div>
<div>
<h2>描述</h2>
<p>打印版本库的UUID，UUID是版本库的</p>
<p>universal unique IDentifier（全局唯一标示），Subversion客户端可以使用这个标示区分不同的版本库。</p>
</div>
<div>
<h2>例子</h2>
<pre> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr />
$ svnlook uuid /usr/local/svn/repos
e7fe1b91-8cd5-0310-98dd-2f12e793c5e8</pre>
</div>
</div>
<div>
<div>
<hr />
</div>
<div>
<h2>名称</h2>
<p>svnlook youngest — 打印最年轻的修订版本号。</p>
</div>
<div>
<h2>概要</h2>
<pre>svnlook youngest REPOS_PATH</pre>
</div>
<div>
<h2>描述</h2>
<p>打印一个版本库最年轻的修订版本号。</p>
</div>
<div>
<h2>例子</h2>
<p>这显示了在实例版本库显示最年轻的修订版本：</p>
<pre> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr /> <wbr />
$ svnlook youngest /tmp/repos/</pre>
</div>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://bernieyu.com/2015/04/svnlook/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
