﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-农夫果园-随笔分类-other</title><link>http://www.blogjava.net/Farmer/category/42032.html</link><description>A farmer's garden.</description><language>zh-cn</language><lastBuildDate>Mon, 26 Oct 2009 12:05:44 GMT</lastBuildDate><pubDate>Mon, 26 Oct 2009 12:05:44 GMT</pubDate><ttl>60</ttl><item><title>批量下载google Picasa相册图片</title><link>http://www.blogjava.net/Farmer/archive/2009/10/26/299763.html</link><dc:creator>AFarmer</dc:creator><author>AFarmer</author><pubDate>Mon, 26 Oct 2009 04:59:00 GMT</pubDate><guid>http://www.blogjava.net/Farmer/archive/2009/10/26/299763.html</guid><wfw:comment>http://www.blogjava.net/Farmer/comments/299763.html</wfw:comment><comments>http://www.blogjava.net/Farmer/archive/2009/10/26/299763.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Farmer/comments/commentRss/299763.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Farmer/services/trackbacks/299763.html</trackback:ping><description><![CDATA[查看源代码，找到用户的ID和albumid，然后添加到网址中：<br />
<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">picasa://downloadfeed/?url=http://picasaweb.google.com/data/feed&nbsp;/back_compat/user/&#8220;用户的帐号&#8221;/albumid/&#8220;用户的albumid&#8221;?kind=photo</span><span style="color: #ff0000;">&amp;alt</span><span style="color: #000000;">=rss&amp;&nbsp;amp;imgdl=1</span></div>
<br />
然后把整个网址粘贴到浏览器地址栏即可。前提，已安装并启动picasa。<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/Farmer/aggbug/299763.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Farmer/" target="_blank">AFarmer</a> 2009-10-26 12:59 <a href="http://www.blogjava.net/Farmer/archive/2009/10/26/299763.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Subersion和TortoiseSVN的简单使用[转]</title><link>http://www.blogjava.net/Farmer/archive/2009/10/09/Subersion_TortoiseSVN_guide_for_fresher.html</link><dc:creator>AFarmer</dc:creator><author>AFarmer</author><pubDate>Fri, 09 Oct 2009 10:56:00 GMT</pubDate><guid>http://www.blogjava.net/Farmer/archive/2009/10/09/Subersion_TortoiseSVN_guide_for_fresher.html</guid><wfw:comment>http://www.blogjava.net/Farmer/comments/297595.html</wfw:comment><comments>http://www.blogjava.net/Farmer/archive/2009/10/09/Subersion_TortoiseSVN_guide_for_fresher.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Farmer/comments/commentRss/297595.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Farmer/services/trackbacks/297595.html</trackback:ping><description><![CDATA[本文转自：http://tech.it168.com/d/2008-06-14/200806142123416.shtml<br />
<br />
<p><strong>【IT168 技术文章】</strong></p>
<p>&nbsp;&nbsp;&nbsp;
这篇教程是写给从未接触过Subversion的人看的，高手就不要浪费时间了。由于Subversion自带的文档太长，而且讲得太全面了，可能刚入门
者没有耐心一点点看完（比如我刚接触Subversion的时候^_^），所以想写一篇比较基础，但是版本控制过程中遇到的各个方面（这里是指我自己遇到
过的，Subversion还有许多基础的方面我没有遇到，用软件工
程的话讲就是没有需求^_^，这些方面我就没有写）都能涉及到的教程，让更多的人能够了解subversion和使用subversion这个优秀的版本
控制工具（好像subversion在国内用的人很少啊）。文中如有不对的地方，还请高手指正。特别感谢subversion.org.cn的论坛斑竹回
答我关于lock的问题，特别感谢subversion的作者提供了这么一个优秀的版本控制工具。 </p>
<p>&nbsp;&nbsp;&nbsp; 一.安装subversion&nbsp; </p>
<p> &nbsp; 首先安装subversion1.2.3和图形化客户端TortoiseSVN-1.2.4.4479（该版本的TortoiseSVN针对subversion1.2.3）。subversion在服务器端和客户端都需要安装，TortoiseSVN只要在客户端安装就行。 </p>
<p>&nbsp;&nbsp;&nbsp; 二.建立Repository（保存文档各个版本的数据库） </p>
<p> &nbsp; 在服务器端
建立一个空目录，比如&#8220;C:"SVNProjects"Project1&#8221;。建立Repository的具体方式是：在subversion安装目录下的
"bin子目录下有一个svnadmin.exe文件，在DOS窗口下进入该"bin目录，并执行&#8220;svnadmin create
--fs-type bdb
C:"SVNProjects"Project1&#8221;。之后你会发现原本是空目录的&#8220;C:"SVNProjects"Project1&#8221;下多出了几个目录和
几个文件。这些目录和文件就是用来存储文档各个版本的数据库。 </p>
<p> &nbsp; ***除了用命令行方式建立Repository外，还可以用TortoiseSVN建立，不过这要求在服务器端也安装TortoiseSVN。建立Repository的具体方式是：在&#8220;C:"SVNProjects"Project1&#8221;目录上右击鼠标，TortoiseSVN-&gt;Create Repository here....，然后弹出一个对话框选择Berkeley Database（BDB），然后点OK按钮。 </p>
<p>&nbsp;&nbsp;&nbsp; 三.配置Repository </p>
<p> &nbsp;
建立Repository后，还应该对Repository进行配置，主要的目的是控制访问权限和添加Repository的用户。
&#8220;C:"SVNProjects"Project1"conf"svnserve.conf&#8221;文件就是该Repository的配置文件。它是一个典型的
INI文件，虽然该文件并不是以INI作为扩展名。用文本编辑器打开它后，可以看见一些文本，该文件以&#8220;#&#8221;开始的行都是注释行。将&#8220;#
[general]&#8221;行的&#8220;#&#8221;删掉，&#8220;#anon-access = none&#8221;&#8220;#auth-access =
write&#8221;&#8220;#password-db = passwd&#8221;行也删掉&#8220;#&#8221;，注意，只是删掉&#8220;#&#8221;字符，不要把整行都删了。&#8220;anon-access
= none&#8221;是指不允许匿名访问Repository，不管是读操作还是写操作。&#8220;auth-access =
write&#8221;表示认证的访问允许写操作，当然读操作就更允许了。&#8220;password-db =
passwd&#8221;表示用户名及用户密码存在一个叫passwd的文件里，这个文件也在&#8220;C:"SVNProjects"Project1"conf&#8221;目录
下，用文本编辑器打开后，将&#8220;# [users]&#8221;的&#8220;#&#8221;字符删掉，然后在文件的最后添加一个新行，在该行写上用户名和密码，格式为&#8220;xxxx =
yyyy&#8221;其中&#8220;xxxx&#8221;表示用户名，&#8220;yyyy&#8221;表示密码，一行只能设定一个用户，要设定多个用户，请再起新行。 </p>
<p>&nbsp;&nbsp;&nbsp; 四.启动subversion服务器 </p>
<p> &nbsp;
Subversion提供了三种服务器模式，这里介绍其中的一种，它是subversion自带的一种轻量级的服务器，该服务器启动后，在服务器端的
3690端口监听客户端的连接请求（这是默认情况下，如果你有其他程序占用了3690端口，可以用&#8220;--listen-port&#8221;参数指定服务器监听端
口）。服务器的具体启动方式是：在subversion安装目录下的"bin子目录下有一个svnserve.exe文件，该文件运行时可带参数，常用的
参数有两个一个是&#8220;-d&#8221;，该参数表明服务器作为一个精灵进程一直运行，直到手动结束该程序。另一个参数就是&#8220;-r&#8221;，该参数指定服务器进程寻找
Repository的根路径。在DOS窗口下进入"bin目录，并执行：&#8220;svnserve.exe -d -r
C:"SVNProjects&#8221;。服务器这时就启动了。&#8220;-r
C:"SVNProjects&#8221;参数的作用是：当在客户端用&#8220;svn://xxx/project1&#8221;(xxx可以是服务器端主机名，也可以是服务器端的
ip地址)访问服务器的Repository时，服务器会知道你要访问的Repository路径是&#8220;C:"SVNProjects
"Project1&#8221;。如果当我有两个完全不相干的项目要进行版本控制时，可以再建立一个空目录
&#8220;C:"SVNProjects"Project2&#8221;，并在其中再建立一个Repository，此时客户端就可以用&#8220;svn://xxx
/project2&#8221;访问&#8220;C:"SVNProjects"Project2&#8221;下的Repository。至此，服务器端就配置完毕了。 </p>
<p>&nbsp;&nbsp;&nbsp; 五.客户端的使用 </p>
<p> &nbsp; 1.Checkout Repository <br />
<br />
&nbsp;&nbsp;&nbsp;
首先要Checkout服务器端的Repository，所谓的Checkout就是指获得服务器端指定的Repository存储的所有文件。这个
Checkout和Visual Source
Safe的Checkout意义完全不一样，VSS的Checkout指的是锁定某个文件，如果你以前使用过VSS，在学习Subversion时这个问
题一定要注意。Checkout的具体方式是：在客户端新建一个空目录，比如：F:"Project1 <br />
在该目录上单击右键，在弹出式菜单中选
中SVN Checkout...，之后在&#8220;URL of
Repository&#8221;文本框中填入你想要连接的Repository的地址，对于在本教程第二节建立的Repository，URL应该是
&#8220;svn://xxx/project1&#8221; (xxx可以是服务器端主机名，也可以是服务器端的ip地址)。 </p>
<p> &nbsp;
然后点OK，会弹出一个认证对话框，输入在教程第三节设置的用户名和密码。点OK后就完成了对Repository的Checkout。比如：在服务器端
Repository中有一个a.txt文件，那么Checkout之后F:"Project1目录下也会出现一个a.txt文件。在本例中由于服务器端
的Repository还未添加任何文件，所以在客户端的F:"Project1下没有文件被Checkout。执行Checkout除了会在F:
"Project1产生Repository存储的文件及目录外，还会产生了一个&#8220;.svn&#8221;的隐含目录，该目录是由subversion管理的，不要删
除或者手工改动其中的文件和目录。现在F:"Project1中的文件和目录就叫做Repository的&#8220;Working
Copy&#8221;简写&#8220;WC&#8221;（这个简写...汗）。以后对Repository中文件和目录的修改，添加，删除的操作，都是通过对这个&#8220;Working
Copy&#8221;的操作实现的。Checkout执行完后，会发现F:"Project1目录的图标的左下角附着了一个小的状态图标（当F:"Project1
目录中的文件改变时，这个状态图标也会随之变化），它表示F:"Project1是一个Repository的&#8220;Working
Copy&#8221;，F:"Project1内的所有文件和目录也会有类似的状态图标。 <br />
</p>
<p>&nbsp;&nbsp;&nbsp; 2.添加文件&nbsp;&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp; 将要添加的文件或者目录拷贝到F:"Project1下，然后在该文件或目录上单击右键，TortoiseSVN-&gt;Add，点OK。如果添加了不止一个文件或目录，则鼠标不要在F:"Project1中点中任何文件，然后单击右键，TortoiseSVN-&gt;Add，就可以添加多个文件或目录。这时文件的状态图标会发生变化。Add命令只是告诉本地的&#8220;Working Copy&#8221;将该文件纳入版本管理，并没有将这个改变提交到服务器端，
如果想要别人也看见你对Repository的修改，你需要在F:"Project1下单击右键，SVN
Commit...，将你所做的修改提交到Repository。文件的状态图标也会更新。不管你在&#8220;Working
Copy&#8221;内添加、修改、删除文件后，要想其他人也看见你的修改，都必须用Commit命令将所做修改递交到服务器端的Repository。
</p>
<p>&nbsp;&nbsp;&nbsp; 3.修改文件 <br />
<br />
&nbsp;&nbsp;&nbsp; 用文本编辑器或IDE对文件修改后，文件的状态图标会变化，然后单击右键，SVN Commit...提交修改，只有当执Commit提交修改后，你所作的修改才会反映到服务器端的Repository中。 </p>
<p>&nbsp;&nbsp;&nbsp; 4.删除文件 <br />
<br />
&nbsp;&nbsp;&nbsp; 删除文件时，选中要删除的文件或目录，单击右键，TortoiseSVN-&gt;Delete，提交修改。注意千万不要用&#8220;Delete&#8221;键来删除文件，否则将无法提交你的修改。这一点对目录的删除来说尤为重要。 </p>
<p>&nbsp;&nbsp;&nbsp; 5.放弃修改 <br />
<br />
&nbsp;&nbsp;&nbsp; 当你添加、修改、删除文件后，决定放弃修改，你可以单击右键，TortoiseSVN-&gt;Revert，本地的&#8220;Working Copy&#8221;中的文件和目录会恢复到你修改前的状态。 </p>
<p>&nbsp;&nbsp;&nbsp; 6.获取Repository的最新版本 <br />
<br />
&nbsp;&nbsp;&nbsp;
当一个团队合作开发项目时，每一个人都在不断的对Repository进行更新，你需要不断的更新自己的&#8220;Working
Copy&#8221;，以获取项目最新的文件。当第一次获得最新Repository的文件时，我们用Checkout命令，前面已经介绍了，以后再获取最新文件时
就不用Checkout了。而改用Update命令。接着前面的例子，这时F:"Project1已经成为一个&#8220;Working
Copy&#8221;了（通过执行Checkout命令），现在其他人已经对Repository进行了修改，我想将别人的修改反映到我的&#8220;Working
Copy&#8221;中，具体的方法是：在F:"Project1目录上单击右键，SVN
Update。这时F:"Project1中的文件就是最新的版本了。注意，如果当你的&#8220;Working
Copy&#8221;中有被修改的文件，或者有被删除的文件，并且还未提交这些修改时，这些文件在执行Update过程中是不会被更新的。比如你修改了
F:"Project1下a.txt文件，还未提交修改，那么，当你对F:"Project1进行Update时，a.txt文件是不会更新为
Repository上的a.txt文件的。所以如果想放弃当前的所有修改，并将F:"Project1下所有文件及目录更新到最新版本应该先对F:
"Project1执行Revert命令再执行Update命令。 </p>
<p>&nbsp;&nbsp;&nbsp; 7.subversion的版本控制模型 <br />
<br />
&nbsp;&nbsp;&nbsp;
当你用subversion进行版本控制时，Subversion会记录你对Repository进行的每一次修改（包括添加，修改，删除等等），每修改
一次Repository都会产生一个新的Revision（修订版本号），不同的Revision代表了不同时刻Repository的状态，因此我们
可以用这个Revision回朔任意时刻Repository的状态，就像时间机器一样，也就是说某一Revision 就是Repository
在某一时刻的一个&#8220;快照&#8221;。注意：Revision
不是针对某一个文件或者目录，而是针对整个Repository而言的。每修改一次Repository，Revision 都会增加1。 </p>
<p> &nbsp;
Subversion的版本控制模型是一种叫做Copy-Modify-Merge（拷贝-修改-合并）的模型。考虑这种情况：张三和李四是公司同一个部
门的同事，他们共同维护一个文本文件a.txt，并且对该文件进行版本控制，因此他们把这个文件放到一个Repository上共同维护该文件。周一上午
9点，张三和李四同时想对a.txt文件进行修改，于是他们同时从Repository上取得该文件的最新版本（Revision
10），然后进行修改。过了三分钟，张三首先完成了修改，他在该文件的第五行修改了一个单词的拼写（将Typo改为Type），于是张三对修改后的文件执
行Commit 命令，将修改提交到服务器端的Repository 中。这时Repository 的Revision
变为11。六分钟过后，李四也完成了他的修改，他修改了该文件第十行上的一个单词拼写（将He改为She），于是他也对修改后的文件执行Commit
命令，这时Subversion 在提交修改时会发现，李四修改的文件是Revision 10的a.txt文件，而不是最新的Revision
11的a.txt文件。于是，Subversion 提示李四在提交修改前，应该先将Working
Copy更新到最新版本，李四执行Update命令将Working Copy更新到Revision
11，这时Subversion会提示已经完成合并，李四的a.txt文件的第五行的&#8220;Typo&#8221;已经变为了&#8220;Type&#8221;，第十行还是&#8220;She&#8221;，就是说
Subversion
已经将张三的修改&#8220;合并&#8221;到李四的a.txt文件中了。之后，李四再执行Commit命令，就能将他对第十行的修改（将He改为She）提交到服务器端的
Repository中了（生成Revision
12）。但是这种合并在某些情况下会变得复杂一些，比如：李四对a.txt文件的修改并不是第十行，而是与张三同样修改第五行的单词，李四将&#8220;Typo&#8221;
改为&#8220;Typr&#8221;，并且提交修改，这时Subversion会提示李四在提交修改前，应该先将Working
Copy更新到最新版本，李四执行Update命令将Working Copy更新到Revision
11，这时Subversion将Revision11的a.txt文件与李四修改的a.txt文件进行合并时发现李四修改的同样是第五行，于是
Subversion就无法判断是李四的修改（&#8220;Tpyr&#8221;）正确还是张三的修改（&#8220;Type&#8221;）正确，因为他们都是在Revision10的a.txt
基础上作的修改。这种情况叫做Conflict（冲突），a.txt文件的图标会变成一个黄色三角。这时，只能依靠李四自己去判断到底第三行应该修改为
&#8220;Typr&#8221;还是&#8220;Type&#8221;。当李四确定修改之后，在a.txt文件上单击右键，TortoiseSVN-&gt;Resolved <br />
告诉Subversion已经解决了Conflict。这时再执行Commit命令就能提交修改（生成Revision 12）。Subversion 这种控制方式保证了你对文件所作的修改都是基于文件的最新版本。 </p>
<p>&nbsp;&nbsp;&nbsp; 8.&#8220;.svn&#8221;目录 <br />
<br />
&nbsp;&nbsp;&nbsp; 在客户端Working Copy的每一层目录中都会有一个&#8220;.svn&#8221;目录，该目录是Subversion进行管理用的目录。不要手动修改其中的文件。该目录存储了Working
Copy的一个副本（实际存储副本的地方是F:"project1".svn"text-base目录），比如：F:"Project1是一个
Working
Copy，该目录下有两个文件a.txt和b.txt还有一个子目录ccc，子目录ccc中还有一个d.txt文件。&#8220;.svn&#8221;目录中存储的是你最近一
次执行完Update或者Commit命令之后当前目录中文件的副本，比如：F:"project1".svn"text-base中存储的a.txt和
b.txt是最近一次执行完Update或者Commit命令之后F:"project1下的a.txt和b.txt的拷贝。也就是说你所作的修改都是基
于&#8220;.svn&#8221;目录存储的那些文件。这种机制可以让我们在不连接网络的
情况下，将Working
Copy中的文件恢复到修改之前的状态。Subversion的Revert命令就是利用了这种机制来实现的。比如你修改了F:"project1
"a.txt文件，这时你又改变了主意想放弃对该文件的修改，你可以单击右键，TortoiseSVN-&gt;Revert，修改过的F:
"project1"a.txt文件就会被F:"project1".svn"text-base中a.txt文件的副本所替代，使得a.txt恢复到修
改前的状态。 <br />
Working
Copy中每一个子目录下都会有一个&#8220;.svn&#8221;目录，并不是只有最上层目录才有&#8220;.svn&#8221;目录。所以，F:"project1"ccc下也有一个
&#8220;.svn&#8221;目录，该目录存储的是F:"project1"ccc"d.txt的副本（d.txt的副本位于F:"project1"ccc".svn
"text-base）。也就是说每个&#8220;.svn&#8221;目录只存储同级目录中的&#8220;文件&#8221;副本，而不存储&#8220;目录&#8221;副本。&#8220;.svn&#8221;目录存有许多重要的内容，所
以前面说在删除文件或目录时，必须用TortoiseSVN-&gt;Delete，而不能用&#8220;Delete&#8221;键来删除文件或目录，尤其是对于目录的删除。</p>
<p>&nbsp;&nbsp;&nbsp; 9.混合版本&nbsp;&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp; Subversion的Working
Copy被设计成一种能够包含不同版本的文件共存的形式。比如F:"Project1是一个Working
Copy，该目录下有两个文件a.txt和b.txt。执行Update命令，将Working Copy更新到最新版本（Revision
24）。这时，a.txt和b.txt的Revision都是24（其实对于单个文件来说并不存在Revision，Revision是对于整个
Repository而言的，这里所指的是Repository的Revision24所存储的
a.txt和b.txt，但为了方便而采用这种描述方式，请注意，下同）。之后，你的同事修改了a.txt，并且提交了修改，这时Repository的
Revision就变成25了。注意，这时你没有再次执行Update，因此你的Working
Copy的Revision还是24。这时你修改了b.txt文件，并提交修改。因为Revision25并没有对b.txt文件进行修改，因此你对
b.txt文件的修改是基于b.txt文件最新的版本，所以不会出现Conflict。当你提交b.txt的修改后，产生Revision26。这时你会
发现你的Working
Copy中的a.txt文件并不是Revision25中的a.txt文件，它还是Revision24的a.txt文件，而你的b.txt文件是
Revision26的b.txt文件。也就是说当你Commit时，你的Working
Copy中只有你提交的那些文件是最新版本，而其他没有修改的文件并不会更新为最新版本。这样就造成了你的Working
Copy由不同的Revision文件所组成(Revision24的a.txt文件和Revision26的b.txt文件)。前面说过在提交修改前必
须保证你是在文件的最新版本基础上修改，如果在这种混合版本的情况下，怎样才能知道当前Working
Copy中的文件是否为最新版本？在前面所说的&#8220;.svn&#8221;目录中有一个文件名为&#8220;entries&#8221;的文件，该文件记录了当前Working
Copy中的每一个文件的Revision，因此当你Commit时，Subversion会从该文件中取得你提交文件的Revision，再与
Repository的最新Revision一比较就可以知道你修改的文件是否基于该文件的最新版本。 </p>
<p>&nbsp;&nbsp;&nbsp; 10.文件的锁定 <br />
<br />
&nbsp;&nbsp;&nbsp;
前面说过Subversion的版本控制模型是一种叫做Copy-Modify-Merge（拷贝-修改-合并）的模型。该模型在对文本文件进行版本控制
时工作的很好，但是有些需要进行版本控制的文件并不是文本文件，比如说图像文件，这种模型在这种情况下就不能正常工作了，因为文本文件可以合并，而二进制
文件则无法合并。所以Subversion从1.2开始支持一种叫Lock-Modify-Unlock（锁定-修改-解锁）的版本控制模型。在
Windows下最常用的版本控制软件Visual
Source
Safe(VSS)就是采用这种模型。这种模型要求在对一个文件修改前首先要锁定这个文件，然后才能修改，这时，别人将无法对该文件进行修改，当修改完后
再释放锁，使其他人可以对该文件进行锁定，然后修改。锁定文件的方法是：TortoiseSVN-&gt;Get
Lock...再点OK按钮，这时就完成了对文件的锁定。这时，如果其他人想对文件进行锁定时，Subversion会对他提示该文件已经被别人锁定。当
你修改完文件后，然后单击右键，SVN
Commit...，将修改提交，默认情况下，提交的时候就会对该文件解锁，如果你想仍然锁定该文件，请在commit时弹出的对话框中选中keep
lock复选框。 </p>
<p>&nbsp;&nbsp;&nbsp; 11.文件的附加属性 <br />
<br />
&nbsp;&nbsp;&nbsp;
在Subversion中，每个文件可以拥有一种叫做附加属性的东西。附加属性描述了该文件所拥有的一些特性。Subversion已经预定义了一些附加
属性（这里只是指Subversion已经定义了一些附加属性的&#8220;名称&#8221;，并不是指已经将这些属性附加在文件上了，比如默认情况下文本文件一开始不含任何
属性，直到人为的对该文件添加附加属性），并且你可以对文件添加自定义的属性。Subversion对待附加属性就像对待文件内容一样，当修改了一个文件
的附加属性（添加，改变，删除附加属性），即使没有对文件的内容进行修改，同样可以Commit该文件，就像更改了文件内容那样，Repository也
会生成新的Revision，所以从某种意义上来说，Subversion不区别对待文件的附加属性的修改和文件的内容的修改，文件的附加属性可以看成是
一种特殊的文件内容。Subversion预定义了若干个附加属性，这里只讨论&#8220;svn:needs-lock&#8221;属性，因为它与我们上面的文件锁定会产生
的一个问题有关。其他的属性可以参考Subversion自带的帮助文档。考虑这种情况，张三和李四同时想对一个图片文件a.jpg作修改，张三在修改时
先将该文件锁定，然后进行修改，同时李四也开始对该文件进行修改，但李四忘记了对非文本文件进行修改时应该先锁定该文件。张三首先对该文件修改完毕，于是
张三向服务器提
交了他的修改。之后，李四也完成了修改，当他提交修改时，Subversion提示李四的文件版本不是最新的，在Commit之前应先更新a.jpg到最
新版本，由于图片文件无法合并，这就意味着张三和李四之间必定有一个人的修改会作废。应用&#8220;svn:needs-lock&#8221;属性可以避免这个问题。当一个
文件拥有&#8220;svn:needs-lock&#8221;属性时，该文件在没有锁定时，文件的图标是灰色的，表示该文件是一个只读文件（该文件的Windows只读属性
的复选框为选中），这个灰色的图标就会提醒想对该文件进行修改的人，在修改该文件之前应该首先锁定该文件。锁定该文件之后，文件的只读属性就会去掉了，一
旦释放掉锁，文件的图标又会变成灰色，文件也会变成只读的了。李四在这种情况下就会避免在没有锁定文件时对文件进行修改。对非文本文件添加
&#8220;svn:needs-lock&#8221;属性应该在将该文件第一次添加到Repository时就设置，当然，一个文件可以在任意时刻添加附加属性，这样做是为
了减少李四所遇到的那个问题发生的几率。具体的方法是：首先将a.jpg文件拷贝到Working
Copy中，然后在该文件上单击右键，TortoiseSVN-&gt;Add，告诉Subversion要将该文件纳入版本控制，接着在该文件上单击右
键并选中属性，在弹出的属性对话框中选中Subversion
页。在下拉框中选中&#8220;svn:needs-lock&#8221;，并在下面的文本框中填入&#8220;*&#8221;（其实这里填什么都无所谓，只要文件有&#8220;svn:needs-
lock&#8221;附加属性就行），之后点Set按钮，&#8220;svn:needs-lock&#8221;附加属性就设置好了。然后执行Commit命令提交修改。这时当其他人执
行Update时，a.jpg就会添加到他们的Working
Copy中，并且文件的附加属性也会随文件一起被得到。可以看到a.jpg此时的图标就是灰色的，文件的Windows属性也是只读的。 </p>
<p>&nbsp;&nbsp;&nbsp; 12.回到以前的版本 <br />
<br />
&nbsp;&nbsp;&nbsp;
由于Subversion会记录你对Repository的每一次修改，因此能够很容易的获得Repository以前某一时刻的状态。比如：现在
Repository的最新Revision是56，这时我想看看Repository在Revision24时的状态，可以在本地的Working
Copy中单击右键，TortoiseSVN-&gt;Update to
Revision...，然后输入你想要回复到的Revision号，点OK按钮。</p>
<p>　&nbsp; 回到以前的版本还有一种情况是我想将Repository的最新Revision的状态与以前某一个Revision的状态一模一样，上面那种方法就不适合，上面的那种方法只是将本地的Working Copy回复到以前的状态，而服务器端
的Repository并没有回到以前的状态。将Repository的最新Revison的状态回复到以前某个Revision的状态具体的方法是：先
执行Update命令将Working Copy更新到最新的Revision，然后在Working
Copy中单击右键，TortoiseSVN-&gt;Show Log，弹出的Log
Messages窗口中会显示该Repository的所有Revision，选中最新的Revision，之后按住Shift键，再单击你想回复到的
Revision+1的那个Revision（比如Repository的最新Revision是30，你想将Repository的状态回复到
Revision16，那么就选中Revision30，再按住Shift键，选中Revision17，就是说选中Revision17到
Revision30之间的所有Revision）。然后在选中的Revision上单击右键，选中&#8220;Revert changes from
these revision&#8221;。再点Yes按钮，就可以将Working Copy的状态回复到目标Revision。注意，此时 <br />
只是Working Copy回复到目标Revision，之后应该用Commit提交修改，这样Repository最新状态就与目标Revision的状态一样了。</p>
<p>　&nbsp; 这两种回复到以前版本的方式截然不同，第一种方式是将整个Working
Copy回复到某个Revision，也就是说这种方式Working
Copy中的&#8220;.svn&#8221;目录所存的文件副本也与目标Revision的一模一样，如果这时你没有修改文件，你将不能执行Commit命令。而第二种方式
客户端Working
Copy中的&#8220;.svn&#8221;目录所存的副本始终是最新的Revision的文件副本（这里我们基于一个假设：在Update之后没有其他人对
Repository做修改）。这种方式就像是我们自己手工将Working
Copy的文件状态修改为目标Revision，在修改之后提交修改一样。 </p>
<p>&nbsp;&nbsp;&nbsp; 13.查看修改 </p>
<p>　&nbsp; 有时我们对Working Copy的许多文件进行了修改，这些文件位于不同的子目录，我们就可以在Working
Copy的最上层目录单击右键，TortoiseSVN-&gt;Check For
Modifications，弹出的对话框就会显示你所做的所有修改明细。 </p>
<p>　&nbsp; 还有一种情况是我们的Working Copy已经很久没有执行Update命令，我们想看看Working
Copy中有哪些文件已经发生修改了，这时就可以在Working Copy的最上层目录单击右键，TortoiseSVN-&gt;Check
For Modifications，在弹出的对话框点击Check
Repository按钮后，就会显示服务器端已经修改了的文件。该方法还有一个用途就是查看文件的锁定，当你想锁定一个文件时，你想先看看这个文件有没
有被别人锁定，点击Check
Repository按钮会显示服务器端Repository所有被锁定的文件，如果你想锁定的文件不在这里面，那就说明该文件目前没有人锁定。 </p>
<p> </p>
<br />
<img src ="http://www.blogjava.net/Farmer/aggbug/297595.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Farmer/" target="_blank">AFarmer</a> 2009-10-09 18:56 <a href="http://www.blogjava.net/Farmer/archive/2009/10/09/Subersion_TortoiseSVN_guide_for_fresher.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>让GoogleCode的SVN下的HTML文件在FireFox下正常显示</title><link>http://www.blogjava.net/Farmer/archive/2009/10/09/howto_googlecode_svn_html_display.html</link><dc:creator>AFarmer</dc:creator><author>AFarmer</author><pubDate>Fri, 09 Oct 2009 08:16:00 GMT</pubDate><guid>http://www.blogjava.net/Farmer/archive/2009/10/09/howto_googlecode_svn_html_display.html</guid><wfw:comment>http://www.blogjava.net/Farmer/comments/297568.html</wfw:comment><comments>http://www.blogjava.net/Farmer/archive/2009/10/09/howto_googlecode_svn_html_display.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Farmer/comments/commentRss/297568.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Farmer/services/trackbacks/297568.html</trackback:ping><description><![CDATA[本文章参引下面三篇文章：<br />
<a href="http://blog.csdn.net/lenel/archive/2009/04/08/4057631.aspx">如何让GoogleCode的SVN下的HTML文件在FireFox下正常显示</a><br />
<a href="http://blog.pluskid.org/?p=70">把 HTML 格式的文档放在 Google Code 的 svn 仓库中</a><br />
<a href="http://www.worldhello.net/wiki/SVN">SVN</a><br />
<br />
GoogleCode可以作为免费的稳定的静态资源空间来使用,比如<a href="http://jquery-api-zh-cn.googlecode.com/svn/trunk/index.html">JQuery</a>的文档(<a href="http://jquery-api-zh-cn.googlecode.com/svn/trunk/index.html">http://jquery-api-zh-cn.googlecode.com/svn/trunk/index.html</a>)就在上面。<br />
今天发现GoogleCode提供的SVN中的HTML在Firefox中显示为HTML源文件。IE中还好。<br />
<br />
Google了一下,找到了答案:<br />
<strong>如果正常显示需要在SVN提交文件时设置svn:mime-type 为 text/html.</strong><br />
SVN客户端都支持自动配置具体配置方法如下：<br />
<br />
<strong>6.2 新增文件的属性设置？</strong><br />
Whodo SVN 的 Hooks 脚本会检查新增文件的属性，没有设置 svn:mime-type 和/或 svn:eol-style 属性，禁止提交。<br />
但是每次添加文件后，还要执行类似&#8220;svn ps svn:eol-style ...&#8221;的命令，实在太繁琐了！不过幸好，SVN 客户端（命令行或者 TortoiseSVN），支持自动属性的功能。即会为新增文件自动添加属性。<br />
<strong>6.2.1 config 配置文件</strong><br />
启用和设置自动属性，是在 config 配置文件中完成的。 config 配置文件的位置：<br />
* Unix 平台<br />
全局的配置文件位置为：/etc/subversion/config； 每个用户主目录还有配置文件覆盖全局配置文件的设置：~/.subversion/config；<br />
* Windows 平台<br />
注册表中可能包含相应的设置：HKLM\Software\Tigris.org\Subversion\Config，以及 HKCU\Software\Tigris.org\Subversion\Config。 不过文件的优先级更高。全局配置文件：%ALLUSERSPROFILE%\Application Data\Subversion\config，用户个人配置文件：%APPDATA%\Subversion\config <br />
<span style="font-weight: bold;">6.2.2 启用 auto-props</span><br />
修改 config 配置，启用 auto-props: <br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #800000; font-weight: bold;">[</span><span style="color: #800000;">miscellany</span><span style="color: #800000; font-weight: bold;">]</span><span style="color: #000000;"><br />
global-ignores&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;*.o&nbsp;*.lo&nbsp;*.la&nbsp;#*#&nbsp;.*.rej&nbsp;*.rej&nbsp;.*~&nbsp;*~&nbsp;.#*&nbsp;.DS_Store&nbsp;.cvsignore&nbsp;Thumbs.db&nbsp;CVS<br />
use-commit-times&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;yes<br />
enable-auto-props&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;yes<br />
</span></div>
<span style="font-weight: bold;">6.2.3 基于文件名的 auto-props 设置</span><br />
自动属性的设置，是根据文件名来匹配的。修改 config 文件，增添新的配置，如下：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">###&nbsp;Section&nbsp;for&nbsp;configuring&nbsp;automatic&nbsp;properties.<br />
</span><span style="color: #800000; font-weight: bold;">[</span><span style="color: #800000;">auto-props</span><span style="color: #800000; font-weight: bold;">]</span><span style="color: #000000;"><br />
###&nbsp;The&nbsp;format&nbsp;of&nbsp;the&nbsp;entries&nbsp;is:<br />
###&nbsp;&nbsp;&nbsp;file-name-pattern&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;propname</span><span style="color: #800000; font-weight: bold;">[</span><span style="color: #800000;">=value</span><span style="color: #800000; font-weight: bold;">][</span><span style="color: #800000;">;propname[=value</span><span style="color: #800000; font-weight: bold;">]</span><span style="color: #000000;">...]<br />
###&nbsp;The&nbsp;file-name-pattern&nbsp;can&nbsp;contain&nbsp;wildcards&nbsp;(such&nbsp;as&nbsp;'*'&nbsp;and<br />
###&nbsp;'?').&nbsp;&nbsp;All&nbsp;entries&nbsp;which&nbsp;match&nbsp;will&nbsp;be&nbsp;applied&nbsp;to&nbsp;the&nbsp;file.<br />
###&nbsp;Note&nbsp;that&nbsp;auto-props&nbsp;functionality&nbsp;must&nbsp;be&nbsp;enabled</span><span style="color: #000000;">,</span><span style="color: #000000;">&nbsp;which<br />
###&nbsp;is&nbsp;typically&nbsp;done&nbsp;by&nbsp;setting&nbsp;the&nbsp;'enable-auto-props'&nbsp;option.<br />
<br />
##################################################<br />
###&nbsp;Binary&nbsp;files<br />
##################################################<br />
*.bmp&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:mime-type</span><span style="color: #000000;">=</span><span style="color: #000000;">image/bmp<br />
*.gif&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:mime-type</span><span style="color: #000000;">=</span><span style="color: #000000;">image/gif<br />
*.gz&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:mime-type</span><span style="color: #000000;">=</span><span style="color: #000000;">application/x-gzip<br />
*.ico&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:mime-type</span><span style="color: #000000;">=</span><span style="color: #000000;">image/x-icon<br />
*.jar&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:mime-type</span><span style="color: #000000;">=</span><span style="color: #000000;">application/zip<br />
*.jpg&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:mime-type</span><span style="color: #000000;">=</span><span style="color: #000000;">image/jpeg<br />
*.pdf&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:mime-type</span><span style="color: #000000;">=</span><span style="color: #000000;">application/pdf<br />
*.png&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:mime-type</span><span style="color: #000000;">=</span><span style="color: #000000;">image/png<br />
*.ps&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:mime-type</span><span style="color: #000000;">=</span><span style="color: #000000;">application/postscript<br />
*.tif&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:mime-type</span><span style="color: #000000;">=</span><span style="color: #000000;">image/tiff<br />
*.vsd&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:mime-type</span><span style="color: #000000;">=</span><span style="color: #000000;">application/octet-stream<br />
*.zip&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:mime-type</span><span style="color: #000000;">=</span><span style="color: #000000;">application/zip<br />
<br />
##################################################<br />
###&nbsp;Text&nbsp;files</span><span style="color: #000000;">,</span><span style="color: #000000;">&nbsp;OS&nbsp;dependent&nbsp;eol-style<br />
##################################################<br />
*.dsp&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:eol-style</span><span style="color: #000000;">=</span><span style="color: #000000;">CRLF<br />
*.dsw&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:eol-style</span><span style="color: #000000;">=</span><span style="color: #000000;">CRLF<br />
<br />
*.mm&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:eol-style</span><span style="color: #000000;">=</span><span style="color: #000000;">LF</span><span style="color: #008000;">;</span><span style="color: #008000;">svn:mime-type=text/xml</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">*.sh&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:eol-style</span><span style="color: #000000;">=</span><span style="color: #000000;">LF</span><span style="color: #008000;">;</span><span style="color: #008000;">svn:executable</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">Makefile&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:eol-style</span><span style="color: #000000;">=</span><span style="color: #000000;">LF<br />
<br />
##################################################<br />
###&nbsp;Text&nbsp;files</span><span style="color: #000000;">,</span><span style="color: #000000;">&nbsp;eol-style&nbsp;is&nbsp;native<br />
##################################################<br />
*.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:eol-style</span><span style="color: #000000;">=</span><span style="color: #000000;">native</span><span style="color: #008000;">;</span><span style="color: #008000;">svn:mime-type=text/plain</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">*.cpp&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:eol-style</span><span style="color: #000000;">=</span><span style="color: #000000;">native</span><span style="color: #008000;">;</span><span style="color: #008000;">svn:mime-type=text/plain</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">*.css&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:eol-style</span><span style="color: #000000;">=</span><span style="color: #000000;">native</span><span style="color: #008000;">;</span><span style="color: #008000;">svn:mime-type=text/css</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">*.diff&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:eol-style</span><span style="color: #000000;">=</span><span style="color: #000000;">native</span><span style="color: #008000;">;</span><span style="color: #008000;">svn:mime-type=text/plain</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">*.dsl&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:eol-style</span><span style="color: #000000;">=</span><span style="color: #000000;">native</span><span style="color: #008000;">;</span><span style="color: #008000;">svn:mime-type=text/sgml</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">*.dtd&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:eol-style</span><span style="color: #000000;">=</span><span style="color: #000000;">native</span><span style="color: #008000;">;</span><span style="color: #008000;">svn:mime-type=text/plain</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">*.ent&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:eol-style</span><span style="color: #000000;">=</span><span style="color: #000000;">native</span><span style="color: #008000;">;</span><span style="color: #008000;">svn:mime-type=text/plain</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">*.gml&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:eol-style</span><span style="color: #000000;">=</span><span style="color: #000000;">native</span><span style="color: #008000;">;</span><span style="color: #008000;">svn:mime-type=text/sgml</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">*.h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:eol-style</span><span style="color: #000000;">=</span><span style="color: #000000;">native</span><span style="color: #008000;">;</span><span style="color: #008000;">svn:mime-type=text/plain</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">*.htm&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:eol-style</span><span style="color: #000000;">=</span><span style="color: #000000;">native</span><span style="color: #008000;">;</span><span style="color: #008000;">svn:mime-type=text/html</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">*.html&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:eol-style</span><span style="color: #000000;">=</span><span style="color: #000000;">native</span><span style="color: #008000;">;</span><span style="color: #008000;">svn:mime-type=text/html</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">*.java&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:eol-style</span><span style="color: #000000;">=</span><span style="color: #000000;">native</span><span style="color: #008000;">;</span><span style="color: #008000;">svn:mime-type=text/plain</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">*.js&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:eol-style</span><span style="color: #000000;">=</span><span style="color: #000000;">native</span><span style="color: #008000;">;</span><span style="color: #008000;">svn:mime-type=text/plain</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">*.mod&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:eol-style</span><span style="color: #000000;">=</span><span style="color: #000000;">native</span><span style="color: #008000;">;</span><span style="color: #008000;">svn:mime-type=text/plain</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">*.patch&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:eol-style</span><span style="color: #000000;">=</span><span style="color: #000000;">native</span><span style="color: #008000;">;</span><span style="color: #008000;">svn:mime-type=text/plain</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">*.php&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:eol-style</span><span style="color: #000000;">=</span><span style="color: #000000;">native<br />
*.pl&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:eol-style</span><span style="color: #000000;">=</span><span style="color: #000000;">native<br />
*.py&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:eol-style</span><span style="color: #000000;">=</span><span style="color: #000000;">native<br />
*.sgm&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:eol-style</span><span style="color: #000000;">=</span><span style="color: #000000;">native</span><span style="color: #008000;">;</span><span style="color: #008000;">svn:mime-type=text/sgml</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">*.sgml&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:eol-style</span><span style="color: #000000;">=</span><span style="color: #000000;">native</span><span style="color: #008000;">;</span><span style="color: #008000;">svn:mime-type=text/sgml</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">*.svg&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:eol-style</span><span style="color: #000000;">=</span><span style="color: #000000;">native</span><span style="color: #008000;">;</span><span style="color: #008000;">svn:mime-type=text/xml</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">*.txt&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:mime-type</span><span style="color: #000000;">=</span><span style="color: #000000;">text/plain<br />
*.xml&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:eol-style</span><span style="color: #000000;">=</span><span style="color: #000000;">native</span><span style="color: #008000;">;</span><span style="color: #008000;">svn:mime-type=text/xml</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">*.xsl&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:eol-style</span><span style="color: #000000;">=</span><span style="color: #000000;">native</span><span style="color: #008000;">;</span><span style="color: #008000;">svn:mime-type=text/xml</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">*.xslt&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:eol-style</span><span style="color: #000000;">=</span><span style="color: #000000;">native</span><span style="color: #008000;">;</span><span style="color: #008000;">svn:mime-type=text/xml</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">README&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svn:eol-style</span><span style="color: #000000;">=</span><span style="color: #000000;">native<br />
</span></div>
文件添加后，在提交之前，可以通过如下命令查看新增文件的属性：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">$&nbsp;svn&nbsp;proplist&nbsp;-v&nbsp;*<br />
</span></div>
<br />
<strong>注意：</strong><br />
1、修改config文件后，最好重启一下机器，以使设置生效。<br />
2、需要将加入的文件先执行add操作，然后再commit，才能生效。若直接执行commit，不会生效。<br />
<br />
<img src ="http://www.blogjava.net/Farmer/aggbug/297568.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Farmer/" target="_blank">AFarmer</a> 2009-10-09 16:16 <a href="http://www.blogjava.net/Farmer/archive/2009/10/09/howto_googlecode_svn_html_display.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>