??xml version="1.0" encoding="utf-8" standalone="yes"?>9久久9久久精品,日韩一区二区三区视频久久,亚洲精品美女久久777777http://www.shnenglu.com/niewenlong/category/5335.htmlzh-cnMon, 02 Jul 2012 02:44:42 GMTMon, 02 Jul 2012 02:44:42 GMT60Office Professional Plus 2010 Ȁz?/title><link>http://www.shnenglu.com/niewenlong/archive/2012/07/01/180983.html</link><dc:creator>聂文?/dc:creator><author>聂文?/author><pubDate>Sun, 01 Jul 2012 02:44:00 GMT</pubDate><guid>http://www.shnenglu.com/niewenlong/archive/2012/07/01/180983.html</guid><wfw:comment>http://www.shnenglu.com/niewenlong/comments/180983.html</wfw:comment><comments>http://www.shnenglu.com/niewenlong/archive/2012/07/01/180983.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/niewenlong/comments/commentRss/180983.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/niewenlong/services/trackbacks/180983.html</trackback:ping><description><![CDATA[<div id="akenala" class="content" sizset="2" sizcache="14"><pre id="best-answer-content" class="reply-text mb10">先试试这个:(x)GRPWH-7CDHQ-K3G3C-JH2KX-C88H8 现在Ȁzoffice得靠q气Q前一D|间先?QFDX-PYH2G-PPYFD-C7RJM-BBKQ8 安装Q然后在控制面板-卸蝲E序-office 2010右键 更改-更改密钥 在输? BDD3G-XM7FB-BD2HM-YK63V-VQFDK 可以激zR现在好像不行了。下面还有好多神key你可以试试,你好运? VYBBJ-TRJPB-QFQRF-QFT4D-H3GVB GCXQJ-KFYBG-XR77F-XF3K8-WT7QW QY89T-88PV8-FD7H7-CJVCQ-GJ492 23TGP-FTKV6-HTHGD-PDWWP-MWCRQ GDQ98-KW37Y-MVR84-246FH-3T6BG FGVT2-GBV2M-YG4BD-JM823-XJYRY TTWC8-Y8KD3-YD77J-RGWTF-DTG2V GFWF2-R8H99-P4YWF-D2HY9-6PPXJ GRPWH-7CDHQ-K3G3C-JH2KX-C88H8</pre><pre class="reply-text mb10"> </pre><pre class="reply-text mb10"><p>Office 2010密钥Q序列号Q:(x)<br />GCCVP-793B7-92C6G-KJ4CD-98RYD<br />C6YV2-6CKK8-VF7JB-JJCFM-HXJ2D<br />GCXQJ-KFYBG-XR77F-XF3K8-WT7QW<br />KH2J9-PC326-T44D4-39H6V-TVPBY<br />TFP9Y-VCY3P-VVH3T-8XXCC-MF4YK<br />236TW-X778T-8MV9F-937GT-QVKBB<br />87VT2-FY2XW-F7K39-W3T8R-XMFGF</p><p>QY89T-88PV8-FD7H7-CJVCQ-GJ492<br />23TGP-FTKV6-HTHGD-PDWWP-MWCRQ<br />GDQ98-KW37Y-MVR84-246FH-3T6BG<br />FGVT2-GBV2M-YG4BD-JM823-XJYRY<br />TTWC8-Y8KD3-YD77J-RGWTF-DTG2V<br />GFWF2-R8H99-P4YWF-D2HY9-6PPXJ<br /></p></pre><pre class="reply-text mb10"> </pre><pre class="reply-text mb10">E序?nbsp;                     密钥<br />Office® 2010                J9VBQ-YXT2F-PFRJY-FVDK2-82DRK<br />Access® 2010                2PHY7-B7HRB-DD4FQ-96J8V-43K97<br />Outlook® 2010               H6MJ8-6873D-9MCXR-MPKVH-3FDXD<br />Access® 2010                Q4JKD-G8YVM-PTGDX-M828P-GG68W<br />Outlook® 2010               J3RV4-QYG3M-X87HK-P9GGV-8RTPF<br />OneNote® 2010               MPDFB-YDQ39-XRR24-9XHTH-RV6XG<br />PowerPoint® 2010            RDHK9-BMJ9B-78MKR-PTVFJ-VHGGF<br />Visio® Professional 2010    HVWTH-2C23J-FQ4VQ-MYY7X-WD9V8<br />Project® Professional 2010  TF662-B8FFX-JT77W-MWGXV-DTBBH<br />Publisher® 2010             6F4MR-D9VM6-B69K8-QFJC2-4XTM9<br />SharePoint Designer® 2010   不需要密钥即可激zR?/pre></div><img src ="http://www.shnenglu.com/niewenlong/aggbug/180983.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/niewenlong/" target="_blank">聂文?/a> 2012-07-01 10:44 <a href="http://www.shnenglu.com/niewenlong/archive/2012/07/01/180983.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>盘安装WIN7到C盘方?/title><link>http://www.shnenglu.com/niewenlong/archive/2009/06/19/88105.html</link><dc:creator>聂文?/dc:creator><author>聂文?/author><pubDate>Fri, 19 Jun 2009 08:10:00 GMT</pubDate><guid>http://www.shnenglu.com/niewenlong/archive/2009/06/19/88105.html</guid><wfw:comment>http://www.shnenglu.com/niewenlong/comments/88105.html</wfw:comment><comments>http://www.shnenglu.com/niewenlong/archive/2009/06/19/88105.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/niewenlong/comments/commentRss/88105.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/niewenlong/services/trackbacks/88105.html</trackback:ping><description><![CDATA[<p>  普通PE下安装windows7Q?span class=t_tag onclick=tagshow(event) href="tag.php?name=%E7%B3%BB%E7%BB%9F">pȝ</span>默认安装在C?在PE下直接setup安装不了)<br><br>1.?span class=t_tag onclick=tagshow(event) href="tag.php?name=WINDOWS">WINDOWS</span>7的ISO镜像解压到D:\win7\...。(win7文g夹也可以不徏Q?br>2.q入PEQ格式化C盘ؓ(f)NTFS?br>3.从D:\win7\提取boot和bootmgrq两个文件到C盘根目录。再从D:\win7\sources提取boot.<span id="ykdwuvr" class=t_tag onclick=tagshow(event) href="tag.php?name=wim">wim</span>和install.<span id="esruegh" class=t_tag onclick=tagshow(event) href="tag.php?name=wim">wim</span>q两个文件到C:\sources?br>4.在PE中运行cmdQ输?#8220;c:\boot\bootsect.exe /nt60 c:”Q注意exe??qing)nt60和c:之间有空|<br>回R后看到提Csuccessfulx功了Q?nbsp; 然后重v?sh)脑?br>5.出现安装界面Q注意一定不要点现在安装Q点左下?#8220;Repair Your computer”q入pȝ恢复选项Q选最后一?#8220;command prompt”Q进入DOSH口?br>6.q入DOS后,输入“D:\win7\sources\setup”Q回车,q入pȝ的正常安装,选安装位|时记得要格式化C盘?br>    整个q程和VISTA的安装过E一P15分钟l束Q比XP和VISTA都快?br></p> <p><br> </p> <p><br> </p> <p><br> </p> <p><br> </p> <p>目前QW(xu)in7试版在|上炒得火热Q多Ch的评价都比较正面Q说什?#8220;?#8221;之类Q搞得不h心痒痒的Q也惌来玩玩?br>    按常规,下蝲回来的DVD镜像要先ȝQ再从光盘启动来安装。可是很多h没有d机,甚至q光驱都没有。怎么办呢Q从盘安装啦!下面详细介绍XPpȝ下从盘安装Win7的方法和步骤Q按照步骤去做,肯定能成功?br>    友情提示Q?img src="http://www1.pconline.com.cn/itbbs/080506/old/emot/em217.gif"><br>本方法很适合安装64位的Win7 或Vista 。如果是在空盘(没用Mpȝ的硬盘)上安装,推荐用PE光盘QU盘)启动Q然后对照本文进行操作。如果硬盘已l有XPQX86Q系l,又是安装32位的Win7或Vista的话Q直接双d装文件SETUP.EXE卛_?br>    1、硬盘空间准备?br>    安装Win7pȝ的分Z般要30?0G大小Q且为NTFS格式。因你现在的?sh)脑已经在C盘安装了XPQ因此要先准备一?0?0G的D盘或E盘来装Win7 。如果D、E盘的I间不符合要求,则调整一下。调整方法是Q先备䆾D、E盘的资料Q然后下载Paragon Partition Manager l色版,在XPpȝ下用它将D盘或E盘的I间调整?0?0G 。具体方法可以参考这个帖子的部分章节Q?a target=_blank><u><font color=#0000ff>http://softbbs.pconline.com.cn/7307078.html</font></u></a><br>Paragon Partition Manager 7l色版可以在点击q里下蝲Q?a target=_blank><u><font color=#0000ff>WINPM.rar</font></u></a><br>    2、Win7文g准备?br>    ①下载Win7 的ISO文g到本机硬盘中?br>    ②提取Win7 启动文g。用UltraISO软g或虚拟光驱加载Vista的ISO文gQ将bootmgr文g和boot、efi、sources文gҎ(gu)到C盘(sources只需拯boot.wim文gQ其余的不必拯Q因此可以事先在C盘新Z个文件夹sourcesQ再拯boot.wim文gq去Q?br>    ③提取Win7 安装文g。用与②相同的方法将sources文gҎ(gu)贝到E盘中Q也可以攑ֈF盘等Q只要不攑֜Win7 要安装的D盘)?br><br><a onclick="window.open('viewpic.jsp?imgUrl=http%3A%2F%2Fimg.pconline.com.cn%2Fimages%2Fbbs4%2F20092%2F12%2F1234426073059.jpg');return false;" href="javascript:void(0);" target=_blank rel=nofollow><img onmouseenter="javascript:if(window.ubbImgWidth&&this.width>window.ubbImgWidth)this.width=window.ubbImgWidth;" alt=盘安装Win7全攻略(图解Q?src="http://img.pconline.com.cn/images/bbs4/20092/12/1234426073059.jpg" onload="javascript:if(window.ubbImgWidth&&this.width>window.ubbImgWidth)this.width=window.ubbImgWidth;" border=0></a> <br>    3、Win7 启动格式准备?br>    在XPpȝ打开行命令行H口Q方法是Q开?#8594;q行Q填入CMD然后回RQ,在命令行H口键入命o(h)q回车:(x)<br>c:\boot\bootsect.exe /nt60 c:<br><br>注:(x)如果安装64位的Win7/VistaQ因为系l镜像中的bootsect.exe?4位的Q不能在32位系l下q行。下面提供一?2位的l大家下载,免得又要到处找。请安装64位系l的|友下蝲使用Q解压后覆盖boot文g夹中?4位的bootsect.exep了?br><a target=_blank><u><font color=#0000ff>bootsect86.rar</font></u></a><br><br><a onclick="window.open('viewpic.jsp?imgUrl=http%3A%2F%2Fimg.pconline.com.cn%2Fimages%2Fbbs4%2F20092%2F12%2F1234426134215.jpg');return false;" href="javascript:void(0);" target=_blank rel=nofollow><u><font color=#0000ff><img onmouseenter="javascript:if(window.ubbImgWidth&&this.width>window.ubbImgWidth)this.width=window.ubbImgWidth;" alt=盘安装Win7全攻略(图解Q?src="http://img.pconline.com.cn/images/bbs4/20092/12/1234426134215.jpg" onload="javascript:if(window.ubbImgWidth&&this.width>window.ubbImgWidth)this.width=window.ubbImgWidth;" border=0></font></u></a> <a onclick="window.open('viewpic.jsp?imgUrl=http%3A%2F%2Fimg.pconline.com.cn%2Fimages%2Fbbs4%2F20092%2F12%2F1234426133448.jpg');return false;" href="javascript:void(0);" target=_blank rel=nofollow><img onmouseenter="javascript:if(window.ubbImgWidth&&this.width>window.ubbImgWidth)this.width=window.ubbImgWidth;" alt=盘安装Win7全攻略(图解Q?src="http://img.pconline.com.cn/images/bbs4/20092/12/1234426133448.jpg" onload="javascript:if(window.ubbImgWidth&&this.width>window.ubbImgWidth)this.width=window.ubbImgWidth;" border=0></a> <br>    4、启动Win7 的PEpȝ?br>    重启?sh)脑Q就?x)进入WinPE pȝ Q启动完成后弹出Win7 安装界面Q点“下一?#8221;→“修复计算?#8221;→“?#8221;→“下一?#8221;→“命o(h)提示W?#8221;Q弹出命令行H口?br><br><a onclick="window.open('viewpic.jsp?imgUrl=http%3A%2F%2Fimg.pconline.com.cn%2Fimages%2Fbbs4%2F20092%2F12%2F1234426305511.jpg');return false;" href="javascript:void(0);" target=_blank rel=nofollow><img onmouseenter="javascript:if(window.ubbImgWidth&&this.width>window.ubbImgWidth)this.width=window.ubbImgWidth;" alt=盘安装Win7全攻略(图解Q?src="http://img.pconline.com.cn/images/bbs4/20092/12/1234426305511.jpg" onload="javascript:if(window.ubbImgWidth&&this.width>window.ubbImgWidth)this.width=window.ubbImgWidth;" border=0></a> <a onclick="window.open('viewpic.jsp?imgUrl=http%3A%2F%2Fimg.pconline.com.cn%2Fimages%2Fbbs4%2F20092%2F12%2F1234426305685.jpg');return false;" href="javascript:void(0);" target=_blank rel=nofollow><img onmouseenter="javascript:if(window.ubbImgWidth&&this.width>window.ubbImgWidth)this.width=window.ubbImgWidth;" alt=盘安装Win7全攻略(图解Q?src="http://img.pconline.com.cn/images/bbs4/20092/12/1234426305685.jpg" onload="javascript:if(window.ubbImgWidth&&this.width>window.ubbImgWidth)this.width=window.ubbImgWidth;" border=0></a> <a onclick="window.open('viewpic.jsp?imgUrl=http%3A%2F%2Fimg.pconline.com.cn%2Fimages%2Fbbs4%2F20092%2F12%2F1234426305619.jpg');return false;" href="javascript:void(0);" target=_blank rel=nofollow><img onmouseenter="javascript:if(window.ubbImgWidth&&this.width>window.ubbImgWidth)this.width=window.ubbImgWidth;" alt=盘安装Win7全攻略(图解Q?src="http://img.pconline.com.cn/images/bbs4/20092/12/1234426305619.jpg" onload="javascript:if(window.ubbImgWidth&&this.width>window.ubbImgWidth)this.width=window.ubbImgWidth;" border=0></a> <br><br><a onclick="window.open('viewpic.jsp?imgUrl=http%3A%2F%2Fimg.pconline.com.cn%2Fimages%2Fbbs4%2F20092%2F12%2F1234426305574.jpg');return false;" href="javascript:void(0);" target=_blank rel=nofollow><img onmouseenter="javascript:if(window.ubbImgWidth&&this.width>window.ubbImgWidth)this.width=window.ubbImgWidth;" alt=盘安装Win7全攻略(图解Q?src="http://img.pconline.com.cn/images/bbs4/20092/12/1234426305574.jpg" onload="javascript:if(window.ubbImgWidth&&this.width>window.ubbImgWidth)this.width=window.ubbImgWidth;" border=0></a> <a onclick="window.open('viewpic.jsp?imgUrl=http%3A%2F%2Fimg.pconline.com.cn%2Fimages%2Fbbs4%2F20092%2F12%2F1234426306279.jpg');return false;" href="javascript:void(0);" target=_blank rel=nofollow><img onmouseenter="javascript:if(window.ubbImgWidth&&this.width>window.ubbImgWidth)this.width=window.ubbImgWidth;" alt=盘安装Win7全攻略(图解Q?src="http://img.pconline.com.cn/images/bbs4/20092/12/1234426306279.jpg" onload="javascript:if(window.ubbImgWidth&&this.width>window.ubbImgWidth)this.width=window.ubbImgWidth;" border=0></a> <br>    5、清理启动文件?br>    必须删除原来拯到C盘的bootmgr文g和boot、efi、sources文g夹,以免安装Win7 时启动文件؜乱导致失败。分别在命o(h)行窗口键入命令ƈ回RQ?br>del c:\bootmgr<br>rd /s c:\boot<br>rd /s c:\efi<br>rd /s c:\sources<br>    6、格式化D盘?br>    键入以下命o(h)q回车:(x)format d: /q /fs:ntfs<br>如果D盘已l是NTFS格式Q可以不?fs:ntfsq个参数?nbsp;如果D盘是I盘Q就不必格式化了Q蟩q这一步?nbsp;   <br>    7、运行win7 安装命o(h)?br>    键入以下命o(h)q回车:(x)<br>E:\SOURCES\setup.exe<br><br><a onclick="window.open('viewpic.jsp?imgUrl=http%3A%2F%2Fimg.pconline.com.cn%2Fimages%2Fbbs4%2F20092%2F12%2F1234426389027.jpg');return false;" href="javascript:void(0);" target=_blank rel=nofollow><img onmouseenter="javascript:if(window.ubbImgWidth&&this.width>window.ubbImgWidth)this.width=window.ubbImgWidth;" alt=盘安装Win7全攻略(图解Q?src="http://img.pconline.com.cn/images/bbs4/20092/12/1234426389027.jpg" onload="javascript:if(window.ubbImgWidth&&this.width>window.ubbImgWidth)this.width=window.ubbImgWidth;" border=0></a> <br>    8、完成安装?br>    按提CZ步步完成win7 安装Q其q程跟光盘安装是一L(fng)?br>    安装完成后,你就拥有Win7-XP双系l了?br><br><a onclick="window.open('viewpic.jsp?imgUrl=http%3A%2F%2Fimg.pconline.com.cn%2Fimages%2Fbbs4%2F20092%2F12%2F1234426427340.jpg');return false;" href="javascript:void(0);" target=_blank rel=nofollow><img onmouseenter="javascript:if(window.ubbImgWidth&&this.width>window.ubbImgWidth)this.width=window.ubbImgWidth;" alt=盘安装Win7全攻略(图解Q?src="http://img.pconline.com.cn/images/bbs4/20092/12/1234426427340.jpg" onload="javascript:if(window.ubbImgWidth&&this.width>window.ubbImgWidth)this.width=window.ubbImgWidth;" border=0></a> <br>要注意的是:(x)<br>①在提示选择“安装cd”时不要?#8220;升”Q要?#8220;自定义(高Q?#8221;Q?br>②在提示安装到哪一个盘旉?#8220;分区2”Q即D盘)Q不要搞错了Q?br>③在提示输入产品密钥Ӟ输入你申P搜烦...Q?_-Q到的密钥,或可以留I,直接?#8220;下一?#8221;Q等安装完成后,再想法激zR?br><br></p> <img src ="http://www.shnenglu.com/niewenlong/aggbug/88105.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/niewenlong/" target="_blank">聂文?/a> 2009-06-19 16:10 <a href="http://www.shnenglu.com/niewenlong/archive/2009/06/19/88105.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Windows下架设Subversion服务?/title><link>http://www.shnenglu.com/niewenlong/archive/2008/10/28/65285.html</link><dc:creator>聂文?/dc:creator><author>聂文?/author><pubDate>Tue, 28 Oct 2008 02:51:00 GMT</pubDate><guid>http://www.shnenglu.com/niewenlong/archive/2008/10/28/65285.html</guid><wfw:comment>http://www.shnenglu.com/niewenlong/comments/65285.html</wfw:comment><comments>http://www.shnenglu.com/niewenlong/archive/2008/10/28/65285.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/niewenlong/comments/commentRss/65285.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/niewenlong/services/trackbacks/65285.html</trackback:ping><description><![CDATA[<p style="FONT-FAMILY: q圆">作者:(x)indian</p> <p style="FONT-FAMILY: q圆">版本Qv1.2</p> <p style="FONT-FAMILY: q圆">修订Q?008q??4?1:45:35</p> <p style="FONT-FAMILY: q圆">出处Q?a ><font color=#1b6d5d><u>blog.kysf.net</u></font></a></p> <p style="MARGIN-LEFT: 31.5pt; TEXT-INDENT: -31.5pt; FONT-FAMILY: q圆">版权Q作者保留对本文的一切修攏V发布等权力。Q何h惌转蝲本文部分或全部内Ҏ(gu)Q必M留包括作者、版本、修订、出处、版权,׃信息。对本文的参考引用,则不受限制?/p> <p style="FONT-FAMILY: q圆"> </p> <p style="FONT-FAMILY: q圆">关键词:(x)subversion, 安装配置, 权限, 目录讉K</p> <p style="FONT-FAMILY: q圆"> </p> <p style="FONT-FAMILY: q圆">1 前言<br>2 基本概念<br> 2.1 什么是版本控制<br> 2.2 什么是 Subversion<br> 2.3 版本库(repositoryQ?br>3 安装配置<br> 3.1 安装独立服务?SVNServer<br> 3.2 安装 ApacheSVN 服务?br>4 FAQ<br>5 参考资?/p> <p style="FONT-FAMILY: q圆"> </p> <p style="FONT-FAMILY: q圆"> </p> <h1 style="TEXT-ALIGN: center">1、前 a</h1> <p style="FONT-FAMILY: q圆"> </p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">׃72时Q终于把 Subversion 初步掌握了。从一个连“什么是版本控制”都不知道的门外汉Q到配置出精至每目录访问的入门者,中间q卡了一天时间。其中费了许多气力,摸烦实验了多ơ,q差Ҏ(gu)弃了Q但是收h巨大的。现把我的配|和学习(fn)q程写下来,供大家参考,也让初学者少走弯路?/p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">׃本h不会(x) Unix/Linux Q正在学?fn)中Q,故仅?Windows q_Z讲解QUnix/Linux q_请参考相兌料。如其中有谬误的地方Q包括错别字Q请联系我修订?/p> <p style="COLOR: red; TEXT-INDENT: 2em; FONT-FAMILY: q圆"><strong>技术在分n中进步!</strong></p> <p style="FONT-FAMILY: q圆"> </p> <p style="FONT-FAMILY: q圆"> </p> <h1 style="TEXT-ALIGN: center" align=center>2、基本概?/h1> <p style="FONT-FAMILY: q圆"> </p> <p style="FONT-FAMILY: q圆">2.1、什么是版本控制</p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">单点来说Q版本控制就是数据仓库,它可以记录你Ҏ(gu)件的每次更改。这Pq你在昏天黑地的改了几个月后老板说不要了Q还是按照过去那P你也不会(x)抓狂Q简单的恢复版本操作搞定一切?/p> <p style="FONT-FAMILY: q圆"> </p> <p style="FONT-FAMILY: q圆">2.2、什么是 Subversion</p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">Subversion是一个自?开源版本控制系l,它管理文件和目录可以越旉。一l文件存攑֜中心版本库,q个版本库很像一个普通的文g服务器,只是它可以记录每一ơ文件和目录的修改,q便使你可以取得数据以前的版本,从而可以检查所作的更改。从q个斚w看,许多人把版本控制pȝ当作一U?#8220;旉机器”?/p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">Subversion可以通过|络讉K它的版本库,从而用户可以在不同的?sh)脑上用。一定程度上可以_(d)允许用户在各自的地方修改同一份数据是促进协作。进展可能非常的q速,q没有一个所有的改变都会(x)取得效果的通道Q由于所有的工作都有历史版本Q你不必担心׃失去某个通道而媄响质量,如果存在不正的改变Q只要取消改变?/p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">一些版本控制系l也是Y仉|管理(SCMQ系l,q种pȝl过特定的精巧设计来理源代码,有许多关于Y件开发的Ҏ(gu)—本w理解编E语a、或者提供构建程序的工具。然而,Subversion不是q样一个系l,它是一个通用pȝQ可以管理Q何类型的文g集,对你q可能是源代码,对别人,可能是一个货物报价单或者是书稿{?/p> <p style="FONT-FAMILY: q圆"> </p> <p style="FONT-FAMILY: q圆">2.3、版本库QrepositoryQ?/p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">Subversion 的核心就?rpository Q中文翻译成“版本?#8221;。就是位于服务器端,l一理和储存数据的地方?/p> <p style="FONT-FAMILY: q圆"> </p> <p style="FONT-FAMILY: q圆"> </p> <h1 style="TEXT-ALIGN: center">3、安装配|?/h1> <p style="FONT-FAMILY: q圆"> </p> <h3>3.1 安装独立服务?SVNServer</h3> <p style="FONT-FAMILY: q圆">环境</p> <p style="FONT-FAMILY: q圆">OSQWindows XP SP2</p> <p style="FONT-FAMILY: q圆">WebQApache 2.2.6</p> <p style="FONT-FAMILY: q圆">SVNQsvn-win32-1.4.6</p> <p style="FONT-FAMILY: q圆"> </p> <p style="FONT-FAMILY: q圆">一、准备工?/p> <p style="FONT-FAMILY: q圆">1、获?Subversion 服务器程?/p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">到官方网站(http://subversion.tigris.org/Q下载最新的服务器安装程序。目前最新的?.4.6版本Q具体下载地址在:(x)<a ><font color=#1b6d5d><u>http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=8100&expandFolder=8100&folderID=91</u></font></a> Q注意找 for apache 2.2.x 版本的?/p> <p style="FONT-FAMILY: q圆">2、获?TortoiseSVN 客户端程?/p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">从官方网?<a ><font color=#1b6d5d><u>http://tortoisesvn.net/downloads</u></font></a> 获取最新的 TortoiseSVN 。TortoiseSVN 是一个客L(fng)E序Q用来与 subvers 服务器端通讯。Subversion 自带一个客L(fng)E序 svn.exe ,?TortoiseSVN 更好操作Q提高效率?/p> <p style="FONT-FAMILY: q圆"> </p> <p style="FONT-FAMILY: q圆">二、安装服务器端和客户?/p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">首先安装 Apache 2.2.6 Q具体安装方法大家参考相兌料,或者参看我写的?a ><font color=#1b6d5d><u>Windows下安装Apache 2.2.x</u></font></a>》?/p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">其次安装 SubversionQ以下简USVNQ的服务器端和客L(fng)。下载下来的服务器端是个 zip 压羃包,直接解压~即可,比如我解压到 E:\subversion 。客L(fng)安装文g是个 exe 可执行文Ӟ直接q行按提C安装即可,客户端安装完成后提示重启?/p> <p style="FONT-FAMILY: q圆"> </p> <p style="FONT-FAMILY: q圆">三、徏立版本库QRepositoryQ?/p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">q行Subversion服务器需要首先要建立一个版本库QRepositoryQ。版本库可以看作是服务器上集中存攑֒理数据的地斏V?/p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">开始徏立版本库。首先徏?e:\svn I文件夹作ؓ(f)所有版本库的根目录。然后,q入命o(h)行ƈ切换到subversion的bin目录。输入如下命令:(x)</p> <div style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: silver; PADDING-BOTTOM: 4pt; MARGIN: 30pt 21pt; BORDER-LEFT: 1pt solid; PADDING-TOP: 4pt; BORDER-BOTTOM: 1pt solid; FONT-FAMILY: q圆">svnadmin create E:\svn\repos1</div> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">此命令在 E:\svn 下徏立一个版本库 repos1 。repos1 下面?x)自动生成一些文件夹和文件?/p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">我们也可以?TortoiseSVN 囑Ş化的完成q一步:(x)</p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">先徏立空目录 E:\svn\repos1 Q注意一定是要空的。然后在 repos1 文g夹上“右键->TortoiseSVN->Create Repository here...”Q然后可以选择版本库模式,q里使用默认的FSFS卛_Q然后就创徏了一pd文g夹和文gQ同命o(h)行徏立的一栗?/p> <p style="FONT-FAMILY: q圆"> </p> <p style="FONT-FAMILY: q圆">四、运行独立服务器</p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">此时 subversion 服务q没有开始,只是通过它的命o(h)建立了版本库。l在刚才的命令窗口输入:(x)</p> <div style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: silver; PADDING-BOTTOM: 4pt; MARGIN: 30pt 21pt; BORDER-LEFT: 1pt solid; PADDING-TOP: 4pt; BORDER-BOTTOM: 1pt solid; FONT-FAMILY: q圆">svnserve.exe --daemon</div> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">svnserve 会(x)在端?3690 {待hQ?-daemonQ两个短横线Q选项告诉 svnserve 以守护进E方式运行,q样在手动终止之前不?x)退出。注意不要关闭命令行H口Q关闭窗口会(x)?svnserve 停止?/p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">Z验证svnserve正常工作Q用TortoiseSVN -> Repo-browser 来查看版本库。在弹出?URL 对话框中输入Q?/p> <div style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: silver; PADDING-BOTTOM: 4pt; MARGIN: 30pt 21pt; BORDER-LEFT: 1pt solid; PADDING-TOP: 4pt; BORDER-BOTTOM: 1pt solid; FONT-FAMILY: q圆">svn://localhost/svn/repos1</div> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">?OK 按钮后就可以看见 repos1 版本库的目录?wi)结构了Q只不过q时 repos1 是个I库?/p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">你也可以使用--root选项讄根位|来限制服务器的讉K目录Q从而增加安全性和节约输入svnserve URL的时_(d)(x)</p> <div style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: silver; PADDING-BOTTOM: 4pt; MARGIN: 30pt 21pt; BORDER-LEFT: 1pt solid; PADDING-TOP: 4pt; BORDER-BOTTOM: 1pt solid; FONT-FAMILY: q圆">svnserve.exe --daemon --root drive:\path\to\repository</div> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">以前面的试作ؓ(f)例,svnserve 会(x)q行为:(x)</p> <div style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: silver; PADDING-BOTTOM: 4pt; MARGIN: 30pt 21pt; BORDER-LEFT: 1pt solid; PADDING-TOP: 4pt; BORDER-BOTTOM: 1pt solid; FONT-FAMILY: q圆">svnserve.exe --daemon --root e:\svn</div> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">然后TortoiseSVN中的版本库浏览器URL~减为:(x)</p> <div style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: silver; PADDING-BOTTOM: 4pt; MARGIN: 30pt 21pt; BORDER-LEFT: 1pt solid; PADDING-TOP: 4pt; BORDER-BOTTOM: 1pt solid; FONT-FAMILY: q圆">svn://localhost/repos1</div> <p style="FONT-FAMILY: q圆"> </p> <p style="FONT-FAMILY: q圆">五、配|用户和权限</p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">用文本编辑器打开E:\svn\repos1\conf目录Q修改svnserve.confQ?/p> <p style="FONT-FAMILY: q圆">:(x)</p> <div style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: silver; PADDING-BOTTOM: 4pt; MARGIN: 30pt 21pt; BORDER-LEFT: 1pt solid; PADDING-TOP: 4pt; BORDER-BOTTOM: 1pt solid; FONT-FAMILY: q圆"># password-db = passwd</div> <p style="FONT-FAMILY: q圆">改ؓ(f)Q?/p> <div style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: silver; PADDING-BOTTOM: 4pt; MARGIN: 30pt 21pt; BORDER-LEFT: 1pt solid; PADDING-TOP: 4pt; BORDER-BOTTOM: 1pt solid; FONT-FAMILY: q圆">password-db = passwd</div> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">卛_掉前面的 # 注释W,注意前面不能有空根{?/p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">然后修改同目录的passwd文gQ增加一个帐P(x)</p> <p style="FONT-FAMILY: q圆">:(x)</p> <div style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: silver; PADDING-BOTTOM: 4pt; MARGIN: 30pt 21pt; BORDER-LEFT: 1pt solid; PADDING-TOP: 4pt; BORDER-BOTTOM: 1pt solid; FONT-FAMILY: q圆">[users]<br># harry = harryssecret<br># sally = sallyssecret</div> <p style="FONT-FAMILY: q圆">增加帐号Q?/p> <div style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: silver; PADDING-BOTTOM: 4pt; MARGIN: 30pt 21pt; BORDER-LEFT: 1pt solid; PADDING-TOP: 4pt; BORDER-BOTTOM: 1pt solid; FONT-FAMILY: q圆">[users]<br>#harry = harryssecret<br>#sally = sallyssecret<br>test = test</div> <p style="FONT-FAMILY: q圆"> </p> <p style="FONT-FAMILY: q圆">六、初始化导入</p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">下面是我们的数据Q项目)导入到这个版本库Q以后就q本库理我们的数据。我们的M改动都回被版本库记录下来Q甚x们自׃失、改错数据时版本库也能帮我们扑֛数据?/p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">比如Q我?d:\wwwroot 下有?guestbook 文g夹,里面存放的是我编写的留言程序。在此文件夹?#8220;右键 -> TortoiseSVN -> Import...” Q在弹出对话框的“URL of repository”输入“svn://localhost/repos1/guestbook”。在“Import message”输入“导入整个留言?#8221;作ؓ(f)注释?br>?OK 后要求输入帐受我们在用户名和密码处都输入 test 。完成后 guestbook 中的内容全部导入C svn://localhost/svn/repos1/guestbook ?/p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">我们看到?e:\svn\repos1 没有M变化Q连?guestbook 文g多w没有建立Q唯一的变化就是e:\svn\repos1定w变大了。实际上我们源guestbook中的内容已经导入 repos1 版本库了Q源 guestbook 文g夹可以删除了?/p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">需要注意的是,q一步操作可以完全在另一台安装了 TortoiseSVN 的客h上进行。例如运行svnserve的主机的IP?33.96.121.22Q则URL部分输入的内容就?#8220;svn://133.96.121.22” ?/p> <p style="FONT-FAMILY: q圆"> </p> <p style="FONT-FAMILY: q圆">七、基本操作流E?/p> <p style="FONT-FAMILY: q圆">1、取出(check outQ?/p> <p style="FONT-FAMILY: q圆">取出版本库到一个工作拷贝:(x)</p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">来到LI目录下Q比如在f分区建立一个空文g?f:\work ?#8220;右键 -> SVN Checkout”。在“URL of repository”中输?#8220;svn://localhost/svn/repos1/guestbook”Q这h们就得到了一?guestbook 中内容的工作拯?/p> <p style="FONT-FAMILY: q圆">2、存入(check inQ?提交QcommitQ?/p> <p style="FONT-FAMILY: q圆">在工作拷贝中作出修改q提交:(x)</p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">?guestbook 工作拯中随便打开一个文Ӟ作出修改Q然?#8220;右键 -> SVN Commit... ”。这h们就把修Ҏ(gu)交到了版本库Q版本库Ҏ(gu)情况存储我们提交的数据?/p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">在修改过的文件上“右键 -> TortoiseSVN -> Show Log” Q可以看到对q个文g所有的提交。在不同?revision 条目?#8220;右键 -> Compare with working copy”Q我们可以比较工作拷贝的文g和所?revision 版本的区别?/p> <p style="FONT-FAMILY: q圆"> </p> <p style="FONT-FAMILY: q圆"> </p> <h3>3.2 安装 ApacheSVN 服务?/h3> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">Subversion的设计包括一个抽象的|络层,q意味着版本库可以通过各种服务器进E访问。理ZԌSubversion可以使用无限数量的网l协议实玎ͼ目前实践中存在着两种服务器?/p> <p style="FONT-FAMILY: q圆"> </p> <ul> <li>SVNServerQsvnserve 是一个小的(也叫d的)、独立服务器Q用自己定义的协议和客L(fng)。(作者注Q以下称q种服务器ؓ(f)“svnserver服务?#8221;Q上面的安装配置是安装svnserver服务器。)<br><br>  <li>ApacheSVNQApache是最行的web服务器,通过使用 mod_dav_svn 模块QApache可以讉K版本库,q且可以使客L(fng)使用HTTP的扩展协议WebDAV/DeltaVq行讉K。(作者注Q以下称q种服务器ؓ(f)“ApacheSVN服务?#8221;Q?</li> </ul> <p style="FONT-FAMILY: q圆"> </p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">通过 Http 协议讉K版本库是 Subversion 的亮点之一?strong>ApacheSVN服务?/strong> 具备了许?<strong>svnserve服务?</strong>没有的特性,使用上更加灵z,但是有一炚w于配|,灉|通常?x)带来复杂性?/p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">׃ Subversion 需要版本化的控Ӟ因此标准?Http 协议不能满需求。要?Apache ?Subversion 协同工作Q需要?WebDAVQWeb-based Distributed Authoring and VersioningQ)Web 分布式创作和版本控制Q。WebDAV ?HTTP 1.1 的扩展,关于 WebDAV 的规范和工作原理Q可以参?<a ><font color=#1b6d5d><u>IETF RFC 2518</u></font></a> ?/p> <p style="FONT-FAMILY: q圆"> </p> <p style="FONT-FAMILY: q圆">一、必备条?/p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">Z让你的版本库使用HTTP|络Q你必需具备以下几个条gQ?/p> <ol> <li>配置好httpd 2.2.xQƈ且用mod_dav启动? <li>为mod_dav安装mod_dav_svn插g? <li>配置你的httpd.confQhttp协议能访问版本库?</li> </ol> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">下面以我的配|过E详l讲解?/p> <p style="FONT-FAMILY: q圆">环境Q?/p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">OSQWindows XP SP2</p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">WebQApache 2.2.6</p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">SVNQsvn-win32-1.4.6</p> <p style="FONT-FAMILY: q圆"> </p> <p style="FONT-FAMILY: q圆">二、安?/p> <p style="FONT-FAMILY: q圆">1、安装Apache</p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">具体安装Ҏ(gu)见:(x)?a ><font color=#1b6d5d><u>Windows下安装Apache 2.2.x</u></font></a>?/p> <p style="FONT-FAMILY: q圆">2、安?Subversion</p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">下载下来的 svn-win32-1.4.6.zip 直接解压卛_Q比如我解压?e:\subversion ?br>从Subversion安装目录?bin 子目录将 intl3_svn.dll、libdb44.dll、mod_authz_svn.so、mod_dav_svn.so 拯到Apache的模块目录(Apache 安装目录?modules 文g夹)?/p> <p style="FONT-FAMILY: q圆"> </p> <p style="FONT-FAMILY: q圆">三、基本的Apache配置</p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">修改Apache的配|文?<em>httpd.conf </em>Q用LoadModule来加载mod_dav_svn模块?/p> <p style="FONT-FAMILY: q圆">:(x)</p> <div style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: silver; PADDING-BOTTOM: 4pt; MARGIN: 30pt 21pt; BORDER-LEFT: 1pt solid; PADDING-TOP: 4pt; BORDER-BOTTOM: 1pt solid; FONT-FAMILY: q圆">#LoadModule dav_module modules/mod_dav.so</div> <p style="FONT-FAMILY: q圆">Ҏ(gu)Q?/p> <div style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: silver; PADDING-BOTTOM: 4pt; MARGIN: 30pt 21pt; BORDER-LEFT: 1pt solid; PADDING-TOP: 4pt; BORDER-BOTTOM: 1pt solid; FONT-FAMILY: q圆">LoadModule dav_module modules/mod_dav.so</div> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">卛_掉前面的“#”受?/p> <p style="FONT-FAMILY: q圆">dQ?/p> <div style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: silver; PADDING-BOTTOM: 4pt; MARGIN: 30pt 21pt; BORDER-LEFT: 1pt solid; PADDING-TOP: 4pt; BORDER-BOTTOM: 1pt solid; FONT-FAMILY: q圆">LoadModule dav_svn_module modules/mod_dav_svn.so</div> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">一定确定它?mod_dav 之后?/p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">现在你已l设|了Apache和SubversionQ但是Apache不知道如何处理Subversion客户端,例如TortoiseSVN。ؓ(f)了让Apache知道哪个目录是用来作为Subversion版本库,你需要用编辑器Q例如记事本Q编辑Apache的配|文件?/p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">在配|文件最后添加如下几行:(x)</p> <div style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: silver; PADDING-BOTTOM: 4pt; MARGIN: 30pt 21pt; BORDER-LEFT: 1pt solid; PADDING-TOP: 4pt; BORDER-BOTTOM: 1pt solid; FONT-FAMILY: q圆"><Location /repository/><br>  DAV svn<br>  SVNPath e:/svn/repos1<br></Location></div> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">q个配置告诉Apache首先需要启?dav_moduleQ然后加?dav_svn_module 。版本库对外的URL是:(x)http://服务器IP/repository/ Q所有的Subversion版本库在物理上位于e:/svn/repos1/ ?/p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">配置完毕后重新启?ApacheQ打开览器,输入 http://服务器IP/ repository/ 会(x)看到如下画面Q?/p> <p style="MARGIN: 25pt; FONT-FAMILY: q圆; TEXT-ALIGN: center"><img height=104 alt="" src="http://img.blog.163.com/photo/94bq16Cb2CSM3YMOo_WcWQ==/880172252174552815.jpg" width=324 border=0></p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">q表C?Apache ?dav_svn 模块已经可以正常工作了。用户可以用Q何一U?Subversion 的客L(fng)通过 Http 协议讉K你的版本库?/p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">如果惌指定多个版本库,可以用多?Location 标签Q也可以使用 SVNParentPath 代替 SVNPathQ例如在 e:\svn 下有多个版本?repos1Qrepos2 {等Q用如下方式指定Q?/p> <div style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: silver; PADDING-BOTTOM: 4pt; MARGIN: 30pt 21pt; BORDER-LEFT: 1pt solid; PADDING-TOP: 4pt; BORDER-BOTTOM: 1pt solid; FONT-FAMILY: q圆"><Location /repository/><br> DAV svn<br> SVNParentPath e:/svn<br></Location></div> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">“SVNParentPath e:/svn ” 表示 e:\svn 下的每个子目录都是一个版本库。可以通过 http://服务器IP/repository/repos1/Qhttp://服务器IP/repository/repos2/ 来访问?/p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">现在你的版本库Q何h都可以访问,q且有完全的写操作权限。也是说Q何h都可以匿名读取,修改Q提交,以及(qing)删除版本库中的内?注:(x)q时不需要配|E:\svn\repos\conf\svnserve.conf 文gQƈ且也不需要启动E:\subversion\bin\svnserve.exe。因为提交是通过Apache的dav模块处理的,而不是由svnservice处理?。我们用 TortoiseSVN 客户端验证即知?/p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">昄大部分场合这是不W合需求的。那么如何进行权限设|呢QApache 提供了基本的权限讄Q?/p> <p style="FONT-FAMILY: q圆"> </p> <p style="FONT-FAMILY: q圆">四、认证选项</p> <p style="FONT-FAMILY: q圆">1、基?HTTP 认证</p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">最单的客户端认证方式是通过 HTTP 基本认证机制Q简单的使用用户名和密码来验证一个用L(fng)w䆾。Apache提供了一?htpasswd 工具来管理一个用hӞq个文g包含用户名和加密后的密码Q这些就是你希望赋予 Subversion 特别权限的用戗htpasswd 可以?Apache ?bin 安装目录下找到。具体用方法如下:(x)</p> <div style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: silver; PADDING-BOTTOM: 4pt; MARGIN: 30pt 21pt; BORDER-LEFT: 1pt solid; PADDING-TOP: 4pt; BORDER-BOTTOM: 1pt solid; FONT-FAMILY: q圆"> <p style="FONT-FAMILY: q圆">创徏用户文gQ?br>htpasswd -c E:\usr\Apache2.2\bin\passwd.conf username</p> <p style="FONT-FAMILY: q圆">d新用P-m 表示?MD5 加密密码Q可选项Q:(x)<br>htpasswd [-m] E:\usr\Apache2.2\bin\passwd.conf Newusername</p> <p style="FONT-FAMILY: q圆">更改用户密码Q?br>htpasswd [-m] E:\usr\Apache2.2\bin\passwd.conf username</p> <p style="FONT-FAMILY: q圆">删除用户Q要用大写的 D Q:(x)<br>htpasswd –D E:\usr\Apache2.2\bin\passwd.conf username</p> </div> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">接下来修?httpd.confQ在 Location 标签中加入如下内容:(x)</p> <div style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: silver; PADDING-BOTTOM: 4pt; MARGIN: 30pt 21pt; BORDER-LEFT: 1pt solid; PADDING-TOP: 4pt; BORDER-BOTTOM: 1pt solid; FONT-FAMILY: q圆">AuthType Basic<br>AuthName "svn repos"<br>AuthUserFile E:/usr/Apache2.2/bin/passwd.conf<br>Require valid-user</div> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">说明Q?/p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">AuthType BasicQ启用基本的验证Q比如用户名/密码寏V?/p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">AuthName "svn repos"Q当一个认证对话框弹出Ӟ出现在认证对话框中的信息。(最好用英文QTortoiseSVN 不支持中文,安装语言包除外。)</p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">AuthUserFile E:/usr/Apache2.2/bin/passwdQ指定E:\usr\Apache2.2\bin\passwd为用hӞ用来验证用户的用户名?qing)密码?/p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">Require valid-userQ限定用户只有输入正的用户名及(qing)密码后才能访问这个\?/p> <p style="FONT-FAMILY: q圆"> </p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">重新启动 Apache Q打开览器访问版本库。Apache ?x)提CZ输入用户名和密码来认证登陆了Q现在只?passwd 文g中设定的用户才可以访问版本库。也可以配置只有特定用户可以讉KQ替换上q?"Require valid-user" ?"Require user tony robert" 只有用h件中?tony ?robert 可以讉K该版本库?/p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">有的时候也怸需要这样严格的讉K控制Q例如大多数开源项目允许匿名的d操作Q而只有认证用h允许写操作。ؓ(f)了实现更为细致的权限认证Q可以?Limit ?LimitExcept 标签。例如:(x)</p> <div style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: silver; PADDING-BOTTOM: 4pt; MARGIN: 30pt 21pt; BORDER-LEFT: 1pt solid; PADDING-TOP: 4pt; BORDER-BOTTOM: 1pt solid; FONT-FAMILY: q圆"><LimitExcept GET PROPFIND OPTIONS REPORT><br>  require valid-user<br></LimitExcept></div> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">以上配置匿名用户有读取权限,而限制只?passwd 中配|的用户可以使用写操作?/p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">如果q还不能满你的要求Q你希望_的控制版本库目录讉KQ可以?Apache ?mod_authz_svn 模块Ҏ(gu)个目录进行认证操作?/p> <p style="FONT-FAMILY: q圆"> </p> <p style="FONT-FAMILY: q圆"> </p> <p style="FONT-FAMILY: q圆">2、用 mod_authz_svn q行目录讉K控制</p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">首先需要让 Apache ?mod_authz_svn 模块加蝲q来。在 Subversion 的安装目录中扑ֈ mod_auth_svn 模块Q将其拷贝到 Apache 安装目录?modules 子目录下。修?httpd.conf 文gQ添加:(x)</p> <div style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: silver; PADDING-BOTTOM: 4pt; MARGIN: 30pt 21pt; BORDER-LEFT: 1pt solid; PADDING-TOP: 4pt; BORDER-BOTTOM: 1pt solid; FONT-FAMILY: q圆">LoadModule authz_svn_module modules/mod_authz_svn.so</div> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">现在可以?Location 标签中?authz 的功能了。一个基本的 authz 配置如下Q?/p> <div style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: silver; PADDING-BOTTOM: 4pt; MARGIN: 30pt 21pt; BORDER-LEFT: 1pt solid; PADDING-TOP: 4pt; BORDER-BOTTOM: 1pt solid; FONT-FAMILY: q圆"><Location /repository/><br>  DAV svn<br>  SVNParentPath e:/svn<br><br>  # our access control policy<br>  AuthzSVNAccessFile E:/usr/Apache2.2/bin/accesspolicy.conf<br><br>  # try anonymous access first, resort to real<br>  # authentication if necessary.<br>  Satisfy Any<br>  Require valid-user<br><br>  # how to authenticate a user<br>  AuthType Basic<br>  AuthName "Subversion repository"<br>  AuthUserFile E:/usr/Apache2.2/bin/passwd.conf<br></Location></div> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">AuthzSVNAccessFile 指向的是 authz 的策略文Ӟ详细的权限控制可以在q个{略文g中指定。访问文?accesspolicy.conf 的语法与svnserve.conf?Apache 的配|文仉常相|以(#Q开头的行会(x)被忽略;在它的简单Ş式里Q每一节命名一个版本库和一个里面的路径Q认证用户名是在每个节中的选项名;每个选项的值描qC用户讉K版本库的U别QrQ只读)或者rwQ读写)Q如果用h有提到或者值留I,讉K是不允许的; * 表示所有用P用它控制匿名用户的访问权限;@W号区分l和用户。如Q?/p> <div style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: silver; PADDING-BOTTOM: 4pt; MARGIN: 30pt 21pt; BORDER-LEFT: 1pt solid; PADDING-TOP: 4pt; BORDER-BOTTOM: 1pt solid; FONT-FAMILY: q圆">[groups]<br>committers = paulex, richard<br>developers = jimmy, michel, spark, sean<br><br>[/]<br>* = r<br>@committers = rw <br><br>[/branches/dev]<br>@developers = rw <br><br>[/tags]<br>tony = rw <br>[/private]<br>* = <br>@committers= r<br> </div> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">使用 SVNParentPath 代替 SVNPath 来指定多个版本库的父目录Ӟ其中所有的版本库都按照这个策略文仉|。例如上例中 tony 对所有版本库里的 /tags 目录hd权限。如果要对具体每个版本库配置Q用如下的语法:(x)</p> <div style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: silver; PADDING-BOTTOM: 4pt; MARGIN: 30pt 21pt; BORDER-LEFT: 1pt solid; PADDING-TOP: 4pt; BORDER-BOTTOM: 1pt solid; FONT-FAMILY: q圆">[groups]<br>project1_committers = paulex, richard<br>project2_committers = jimmy, michel, spark, tony, Robert<br><br>[repos1:/] <br>* = r <br>@ project1_committer = rw<br><br>[repos2:/] <br>* = r <br>@ project2_committer = rw<br> </div> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">q样目1?project1_committer l只能对 repos1 版本库下的文件具有写权限而不能修改版本库 repos2 Q同样项??project2_commiter l也不能修改 repos1 版本库的文g?/p> <p style="FONT-FAMILY: q圆"> </p> <p style="FONT-FAMILY: q圆"> </p> <h1 style="TEXT-ALIGN: center">4、FAQ</h1> <p style="FONT-FAMILY: q圆">1、\径或权限不时将出现错误信息提示Q?/p> <p style="FONT-FAMILY: q圆">http://localhost Q\径不对)<br>Error * PROPFIND request failed on '/' PROPFIND of '/': 200 OK (http://localhost)</p> <p style="FONT-FAMILY: q圆">http://localhost/svn Q权限不I <br>Error * PROPFIND request failed on '/svn' PROPFIND of '/svn': 403 Forbidden (http://localhost)</p> <p style="FONT-FAMILY: q圆">http://localhost/svn/repos Q正常显C)</p> <p style="FONT-FAMILY: q圆">http://localhost/repos Q权限不允许Q?<br>Error * PROPFIND request failed on '/repos' PROPFIND of '/repos': 405 Method Not Allowed (http://localhost)</p> <p style="FONT-FAMILY: q圆"> </p> <p style="FONT-FAMILY: q圆"> </p> <p style="FONT-FAMILY: q圆">2、不启动E:\subversion\bin\svnserve.exe Q但启动了ApacheSVN Q访问(tortoiseSVN –> Repo – browserQ或提交QSVN CommitQ情形如下:(x)</p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">现象Qsvn://localhost/svn/repos 不能讉K或提交,提示QError * Can't connect to host 'localhost': ׃目标机器U极拒绝Q无法连接??file:///e:/svn/repos ?http://localhost/svn/repos 可以讉K或提交?/p> <p style="TEXT-INDENT: 2em; FONT-FAMILY: q圆">原因Qsvn:// 是独立服务器 svnserver 自己的协议。file:/// 是本地访问,x务器端和客户端在一个机器上?/p> <p style="FONT-FAMILY: q圆"> </p> <p style="FONT-FAMILY: q圆"> </p> <p style="FONT-FAMILY: q圆"> </p> <p style="FONT-FAMILY: q圆"> </p> <p style="FONT-FAMILY: q圆">参考资料:(x)<br><a ><font color=#1b6d5d><u>Subversion 官方|站</u></font></a>QSubversion 的官方网站,提供最权威的介l和最新的下蝲?br><a ><font color=#1b6d5d><u>Subversion 中文手册</u></font></a>QSubversion 体中文官方网站翻译的中文手册?br><a ><font color=#1b6d5d><u>TortoiseSVN 中文文</u></font></a>QSubversion 体中文官方网站翻译的 TortoiseSVN 中文文?br><a ><font color=#1b6d5d><u>我用SVN中文论坛</u></font></a>Q国内h气非常旺?SVN 中文交流论坛?br>?a ><font color=#1b6d5d><u>用Apache和Subversion搭徏安全的版本控制环?/u></font></a>》:(x)IBM 工程师写的基?Linux ?SVN 教程?br><a ><font color=#1b6d5d><u>癑ֺ癄</u></font></a>Q由全体|民共同撰写的百U全?/p> <p style="FONT-FAMILY: q圆"> </p> <p style="FONT-FAMILY: q圆"> </p> <p style="FONT-FAMILY: q圆">~ 全文完~</p> <p style="FONT-FAMILY: q圆"> </p> <p style="FONT-FAMILY: q圆">          印第?/p> <p style="FONT-FAMILY: q圆">      2007q?2?3?3:37:41 v1.0 初稿<br>      2007q?2?5?:24:53 v1.1 更新。更改了几处路径Q之更加便于Win下调试。全文重新排版,阅读条理更清晰?<br>      2008q??4?1:45:35 v1.2 修订。修改几处书写错误(谢谢׃南的网易博?42Q;修改1个关键配|\径?/p> <img src ="http://www.shnenglu.com/niewenlong/aggbug/65285.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/niewenlong/" target="_blank">聂文?/a> 2008-10-28 10:51 <a href="http://www.shnenglu.com/niewenlong/archive/2008/10/28/65285.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>svn版本控制http://www.shnenglu.com/niewenlong/archive/2008/10/28/65284.html聂文?/dc:creator>聂文?/author>Tue, 28 Oct 2008 02:49:00 GMThttp://www.shnenglu.com/niewenlong/archive/2008/10/28/65284.htmlhttp://www.shnenglu.com/niewenlong/comments/65284.htmlhttp://www.shnenglu.com/niewenlong/archive/2008/10/28/65284.html#Feedback0http://www.shnenglu.com/niewenlong/comments/commentRss/65284.htmlhttp://www.shnenglu.com/niewenlong/services/trackbacks/65284.html

文档规则
[本地工作区] Qwork copy Q本地工作副本;
[主项目]Q引用共用模块的新项目(工程Q?/td>
最新版本(HEAD revisionQ:(x)版本库里文g或目录的最新版?/td>
SA QSVN服务器的理?/td>
PRA Q单个项目库的管理员Q或者是目负责?/td>
User Q普通工作h?/td>
WC Qwork copy Q本地工作副?/td>


1. 版本控制原则
    SVNQ或者其他版本控制YӞ只是一个版本控制的辅助工具Q不可能把所有的问题都自动解x。尤Ӟ对于冲突q个ȝ事儿Q项目成员在目q程中要量通过优化程来解冻I而不是将希望寄托于Y件工h自动解决一切问题?br>的开发过E组l:(x)
  <1>. 随行市>
目刚开始阶D,单独开发;目E_阶段Q完整开发。项目开发初期,各个目成员负责自己的文件夹Q或者模块)Q与SVN服务器间的更新、提交等操作只需 要针对自p责的文g夹(或者模块)p了,他h的文件夹Q或者模块)可以不必兛_Q项目稳定阶D,也就是每天的变更量很了Q所有项目成员与SVN服务 器的更新、提交等操作需要针寚w目的所有文件夹Q或者模块)Q各个项目成员在其本地编译时本地工作区的全部目E序Q或者资料)均ؓ(f)最新的版本Q保证项?作ؓ(f)整体能够利q行?br>   <2>. 能躲p
量保证一份文件只有一个项目成员在~辑。D例说明:(x)E序员A负责底层中文?DBAccess.cs的编写,如果E序员B的工作要求他为DBAccess.cs增加两个Ҏ(gu)Q程序员B应该通知E序员A来增加而不是自己增加;如果?时A非常J忙需要B自己增加Q就需要B先更新本地的DBAccess.csQ然后开始修改,修改完成后立x交ƈ通知A更新本地的文Ӟ通过~短提交间隔 来减冲H?br>2. Z版本控制的开发流E?/strong>

版本控制下的软g开发基本流E?br>注意Q?/span>上述的流E中没有考虑试和审核的步骤?br>3.各阶D中svn的用方法介l?/strong>
<1>.安装后的常规讄
  (1). 中文界面的设|?br>TortoiseSVN的操作语a讄Z文,控制文g夹?#8220;_SVN”以便支持Asp.net目?br>
  (2).忽略文g
  为防止在提交操作时将不必要的文g上传到SVN服务器上Q可项目中不需要受SVN控制的文件和文g多w过讄忽略选项的方式排除掉。常被忽略的文g ?_* obj *.db *.resharper* *.Load *.pdb *.bak。可以根据实际需要来修改忽略参数Q?每个需要忽略的文gQ文件夹Q名UC间用I格作分隔符Q需要忽略的文g夹只要写文g夹名U就行,例如 objQ忽略obj文g夹及(qing)所包含文gQ_*忽略所有_Q下划线Q开头的文g夹及(qing)所包含文g。注意,q个讄仅对本机有效Q而且Ҏ(gu)机的所有项目的本地?作区有效Q对其他目l成员没有媄响。被忽略的文件仍可以通过“d”命o(h)使其受SVN控制?br>
操作界面如下图,只需忽略参数填写在“全局忽略模式”后的文本框中卛_?

  (3).配置强制注释
  目负责人通过讄目的TortoiseSVN:logminisize讄?Q以便强制注释。设|方法:(x)在项目的本地工作区文件夹上点击鼠标右 键选择“属?#8221;Q进?Subversion标签Q选中TortoiseSVN: logminisizeQ确保复选框“递归应用该属?#8221;选中Q取D?Q其意思是指提交的注释最短长度ؓ(f)五个字。注意,q个讄对其他项目成员的也有 效,但是对别的SVN客户端工P如AnkhSVNQ无效?
<2>. 初始化版本库
初始化版本库有两U常用的方式Q?br>  1. 直接“导入Import…”
对要执行导入操作得项目文件夹q行如下清理Q?br>    (1). 把项目中不需要的文g删除。(临时文g、编译器创徏的文Ӟ比如*.obj、二q制文g{。)
    (2). 把文件夹和子文g夹中的所有文件整理一遍。虽然你可以在导入之后再来进行重命名或删除等操作Q但是还是推荐你在导入之前把你的目整理好?br>在资源管理器Qwindows explorerQ中选择目(本地盘?的根文g夹,单击鼠标右键Q选择导入Import…命o(h)Q蟩Z个对话框Q?br>
  在这个对话框中你需要填写你要将目导入仓库的URL地址Qsvn必须写Q。导入信息(Important MessageQ是用来记录日志信息的。注意:(x)?#8220;忽略样式exclude pattern”匚w的文件或文g夹不?x)被导入Q除非选择?#8220;包含忽略的文?#8221;选项?br>按下“定”按钮后,TortoiseSVN开始把整个文gҎ(gu)(wi)Q包括所有文Ӟ导入C库。用来做“导入Import”操作的这个文件夹的名字不?x)?现在仓库中,只有文g夹中的内容会(x)出现。注意:(x)刚才用来?#8220;导入Import”操作的这个文件夹q没有处于版本控制下Q要获取一份处于版本控制之下的[?地工作区]副本Q你需要对刚导入的版本做一?#8220;(g)出Checkout”操作?br>  2.“(g)出Checkout”?gt;“提交Commit”
新徏一个空文g夹作为[本地工作区]的存放文件夹Q徏议与目同名Q,在文件夹上(或者文件夹里)单击鼠标右键后在命o(h)菜单中选择“(g)出Checkout…”Q出现操作窗口。注意:(x)只能(g)出CheckoutC个空文g夏V?br>
  把本地硬盘上的项目文件夹中的内容Q不要复刉目的Ҏ(gu)件夹Q全部复制到[本地工作区] 文g夹中QƈҎ(gu)件夹中进行清理操作(?#8220;导入Import”操作前的清理操作Q。然后选择[本地工作区] 文g夹单击鼠标右键蟩单,选择命o(h)“提交Commit…”Q?br>
提交对话框会(x)昄每一个有修改的文Ӟ包括新增的,删除的,q有没有版本控制的。如果不?#8220;提交Commit”某个有变更的文gQ只需取消N那个文件即可。相反,如果要提交某个未受版本控制的文gQ只需N它?yu)可以然?#8220;提交Commit”卛_?br>  3.日常开发中的SVN操作


0.版本L(fng)解释
SVNpȝ中的版本号准应该叫?#8220;修订版本?#8221;Q每当版本库接受了一个提交CommitQ文件系l进入了一个新的状态,叫做一ơ修订(revisionQ,每一个修订版本被赋予一个独一无二的、递增的自然数Q这个自然数是修订版本受?br>受控目中Q何一个受控文?文g夹进行了修改提交Commit操作Q项目的版本号就?x)提升一ơ,没有q行修改的文?文g夹其版本号不?x)发生变化。受?目每一个装态都包含目的所有文?文g夹,引v该次版本号增加的即修改了的文?文g夹保存新副本Q没有发生修改的文g/文g夹保存引用,因此目?的文?文g夹可能与目的版本号不同?br>
0.更新(Update)工作副本

  把他人做的修改融合到自己的本地副本当中,q个把改动从服务器拿到本地的q程是“更新Update”?#8220;更新Update”操作可以针对一个文Ӟ 或几个被选择的文Ӟ或某个文件夹中的所有文件。选择惌q行“更新Update”操作的文件和Q或Q文件夹Q单击鼠标右键,在菜单中选择“更新 Update”Q?执行H口昄正在“更新Update”的进度。他人做的修改会(x)合ƈ到自q文g中,而自己所做的修改?x)被保留。如果不能合qӞ会(x)出现冲突Q红色文字显 C)Q冲H的文g图标出现标志?br>命o(h) “更新至版本Update to Revision...” 可以使[本地工作区]更新到自己选择的一个特定版本?br>
0.解决冲突
  选择的文Ӟ点击鼠标右键菜单中选择“~辑冲突Edit Conflict”来打开合ƈ工具或冲H编辑器Q做一些必要的修改Q然后保存文件。然后选择菜单中的“已解决的Resolved”命o(h)执行Q接着提交commit修改C库?br>注意Q命?#8220;已解决的Resolved”q没有真正的解决冲突Q它只不q是?#8220;文g名称.扩展?mine” ?“文g名称.扩展?r*”Qr*中星号代表Q意位数字Q即版本P删除Qƈ允许你提交修改而已。因此,在有冲突发生时要先执?#8220;~辑冲突Edit Conflict” 再执?#8220;已解决的Resolved”Q如果确信自q修改是正的Q不需要保留他人的修改Q可文件名U?扩展?mineL“.mine”后缀Qƈ?“.r*”后缀的文件和“”的文件删除,然后正常“提交Commit”Q版本库中将保存自己的版本?br>
0.提交修改C?br>
  强烈在提交之前,应该认[本地工作区] 是最新的。可以直接作一?#8220;更新Update”操作Q或者先“(g)查更新Check for Modifications”看看在本地或在服务器上哪些文件修改过。如果没有这L(fng)操作直接提交的话Q很有可能出现冲H现象?#8220;(g)查更新Check for Modifications”操作后的l果界面如下Q?

  如果[本地工作区] 是最新的Qƈ且没有冲H,可以提交你的修改了。选中你想要提交的L文g或文件夹Q然后选择在菜单中选择“提交Commit…”在提交对话框中双M?有修改的文gQ可以启动外挂的比较工具来显CZ改细节?在按?#8220;定OK”按钮之后Q会(x)昄提交的进E情c(din)?br>
0.比较差异(Diff)

  [本地工作区] 修改后,被修改的文g出现标志Q选择 “比较差异Diff” 命o(h)Q可以查看该文g与版本仓库中文g具体差异Q选择命o(h)后出现对应的差异察看H口?

0.加入(Add)新文?新文件夹

  x在开发过E中创徏的新文g/文g夹加入到SVN控制之下Q可以这样做Q选中文g/文g夹(在新文g/文gҎ(gu)在父文g夹点d键)Q然后在菜单中选择“dAdd”命o(h)。不需要受SVN控制的文件请取消钩选?

在把文g或文件夹加入到控制之下后Q这些文件或文g夹就?x)显CZؓ(f)一个Added覆盖图标的样子,接下来必d[本地工作区] 执行提交commit操作Q以便其他团队成员能够看到这些文件或文g夏V?br>
0.删除、重命名、移?br>选择要删除(或重命名Q的文g/文g夹,点击鼠标右键选择相应命o(h)Q?

  如果使用TortoiseSVN?#8220;删除Delete”操作删除了一个文?文g夹,文g已l从[本地工作区]中删除了Q而被“删除Delete” 的文件夹显CZؓ(f)覆盖图标。要恢复?#8220;删除Delete”文g/文g夹,只需对他的上U文件夹q行“SVNq原revert”操作卛_?br>如果要在[本地工作区]内移动文Ӟ可以使用鼠标来拖拽:(x)
    1Q选中要移动的文g或文件夹?br>    2Q用鼠标右键拖拽他们到[本地工作区]中一个新的文件夹?br>    3Q松开鼠标右键?br>    4Q在跛_的菜单中选择相应命o(h)Q如下图Q?

  如果一个删除操作不是用TortoiseSVN?#8220;删除Delete”操作完成的,而是像q_删除文g那样删除的。提交时Q对话框H口q是?x)显C?q些删除的文Ӟq提C己把它们从版本控制下删除。所以如果忘C用TortoiseSVN“删除Delete”操作来删除这些文Ӟ仍可在这里补上?br>
0.取消改变(revert)
  如果要取消对一个文?文gҎ(gu)做的修改Q只需用鼠标右键单击该文g/文g夹,选择TortoiseSVN子菜单中?#8220;SVNq原revert”?令,在操作窗口中?x)显C需要还原的文g/文g夹,N文?文g夹后按下“定OK”按钮卛_。注意这里所做的取消修改只能q回到该文g/文g夹上?#8220;?新Update”后的状态?br>

0.修订日志H口
  每一ơ修改和提交Q都应该做好日志记录。这样开发过E中有了一个详l的记录Q以后便可找出每一个修Ҏ(gu)如何修改以及(qing)Z么这样修改的?日志对话框会(x)昄所有日志信息。显C分?个部分:(x)
    1.最上面部分昄的是所有被提交的版本列表。显C有日期旉、提交者、修订版本号和日志信息的前面一部分。用蓝色昄的行表示有某些文件被复制Cq个版本。(也许是从一个分支来的)
    2.中间部分昄的是选中版本的所有日志信息?br>    3.底部昄的是选中版本所做修改的文g和文件夹列表?br>q不仅仅是这些,对话框中q提供了很多的菜单命令可以用?br>

0.文g库浏览器
  选择“文g库浏览器”菜单Q就可以打开Subversion服务器上版本库的l构Qƈ可以对版本库中的文g/文g夹进行操作,如下图:(x)



]]>
开始用svn(subversion) http://www.shnenglu.com/niewenlong/archive/2008/10/28/65283.html聂文?/dc:creator>聂文?/author>Tue, 28 Oct 2008 02:41:00 GMThttp://www.shnenglu.com/niewenlong/archive/2008/10/28/65283.htmlhttp://www.shnenglu.com/niewenlong/comments/65283.htmlhttp://www.shnenglu.com/niewenlong/archive/2008/10/28/65283.html#Feedback2http://www.shnenglu.com/niewenlong/comments/commentRss/65283.htmlhttp://www.shnenglu.com/niewenlong/services/trackbacks/65283.html    windows下的客户端推荐用TortoiseSVN。TortoiseSVN是windowsq_下最l典的SVN客户?操作?qing)其便直?直接跟windowspȝl合,通过文g/文g夹右键菜单方式进行管理?zhn)的项?不过我喜Ƣ用它的命o(h)行,因ؓ(f)以前用CVS的时候就是用命o(h)行,而SVN的命令行方式几乎和CVS是一L(fng)Q所以很快上手了?br>
    ?/span>http://subversion.tigris.org获取subversion for windows的版本,安装之后有了svn.exeq个Z命o(h)行的客户端工兗当然服务器端的E序也有了,q里׃兛_如何配置SVN服务了。安装程序把svn.exe的\径加入了path环境变量,我们已经可以在命令行中直接输入svn可以用了?/span>

如果你不知道命o(h)怎么用svn命o(h),可通过如下方式查询Q?br>svn help
知道了子命o(h)Q但是不知道子命令的用法Q还可以查询Q?br>svn help ci

开发h员常用命?br>
导入目
svn import http://svn.chinasvn.com:82/pthread --message "Start project"

导出目
svn checkout http://svn.chinasvn.com:82/pthread

采用 export 的方式来导出一?#8220;q净”的项?br>svn export http://svn.chinasvn.com:82/pthread pthread

为失败的事务清场
svn cleanup

在本地进行代码修改,(g)查修改状?br>svn status -v
svn diff

更新(update)服务器数据到本地
svn update directory
svn update file

增加(add)本地数据到服务器
svn add file.c
svn add dir

Ҏ(gu)件进行改名和删除
svn mv b.c bb.c
svn rm d.c

提交(commit)本地文档到服务器
svn commit
svn ci
svn ci -m "commit"

查看日志
svn log directory
svn log file

相关的一些东西:(x)
1、在本地文g中,每个目录下都有一?svn文g?属性ؓ(f)隐藏)Q保存了相关的信息?br>2、注册环境变量SVN_EDITOR?E:\Program Files\Vim\vim71\gvim.exe"Q结果在svn ci的时候,出现错误:

'E:\Program' 不是内部或外部命令,也不是可q行的程?br>或批处理文g?br>svn: 提交p|(l节如下):
svn: system('E:\Program Files\Vim\vim71\gvim.exe svn-commit.tmp') q回 1

把SVN_EDITOR改ؓ(f)"gvim.exe"Qƈ且在path中添加\?E:\Program Files\Vim\vim71\",q样可以在提交的时候用vim~写注释了?br>
?
提供免费SVN服务的网?
http://www.svnhost.cn/(推荐)
http://www.chinasvn.com
http://www.javaforge.com
http://unfuddle.com
http://svn.coollittlethings.com/index.php(针对开源免费,针对Uh目收费)


]]>
SVN-Subversion快速指?/title><link>http://www.shnenglu.com/niewenlong/archive/2008/10/28/65282.html</link><dc:creator>聂文?/dc:creator><author>聂文?/author><pubDate>Tue, 28 Oct 2008 02:32:00 GMT</pubDate><guid>http://www.shnenglu.com/niewenlong/archive/2008/10/28/65282.html</guid><wfw:comment>http://www.shnenglu.com/niewenlong/comments/65282.html</wfw:comment><comments>http://www.shnenglu.com/niewenlong/archive/2008/10/28/65282.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/niewenlong/comments/commentRss/65282.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/niewenlong/services/trackbacks/65282.html</trackback:ping><description><![CDATA[<p class=cc-lisence style="FONT-SIZE: 14pt; LINE-HEIGHT: 180%; FONT-FAMILY: q圆" minmax_bound="true"><a target=_blank minmax_bound="true"><u><font color=#0000ff>版权声明</font></u></a>Q{载时请以链接Ş式标明文章原始出处和作者信息及(qing)<a target=_blank minmax_bound="true"><font color=#0000ff><u>本声?/u></font></a><br minmax_bound="true"><a minmax_bound="true"><u><font color=#810081>http://egeho123.blogbus.com/logs/18119163.html</font></u></a><br minmax_bound="true"><br minmax_bound="true"></p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">Subversion快速指?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">SubversionQ简写ؓ(f)SVNQ作为开源社A(ch)献的C代版本控制系l,已经得到来广泛的使用。我用过CVSQConcurent Version SystemQSVN的前w)和微软的VSSQVisual SourceSafeQ,相比之下QSVNh更强大的功能和更单的操作Ҏ(gu)?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">|上已有一些文章介lSVN的安装和使用Q不q我在第一ơ配|时仍然遇到了几个问题。这里,我按照自q思\来进行讲解,以期寚w些初ơ用SVNq且对一些问题存在疑问的朋友有所帮助?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">1. SVN?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">光说SVN好,那SVNI竟有什么优点呢Q在SVN的手册里有着详细的说明,下面单介l几个重要方面:(x)</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">1) Z目录的版本控?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">传统的CVS或VSS都是Z单个文gq行版本控制的,q实际上满不了实际需求,因ؓ(f)在实际应用中Q我们都希望按照目或者工E进行管理,例如假设我们惌取出某个历史旉点的整个目文gQ那么基于文件的版本控制pȝ存在弊端,只能单个单个文g的处理。而SVN则能很方便的做到q一点,你可以随意的取出M一个文件、Q何一个目录的M一个历史版本?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">SVNq允许对文g和目录进行增加、删除以?qing)复制和重命名等操作Q这些都?x)被记录到历史信息中Q实现真正的版本控制功能?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">2) 原子提交</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">SVN里的每次操作都是原子的,要么全部成功Q要么全部失败。假设你要提交多个文Ӟ如果有一个存在冲H,那么其它修改都不?x)被提交?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">3) 高效的分支(branchingQ与标签QtaggingQ功?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">先说标签功能Q通俗的讲Q标{ְ是某个时间点的快照(snapshotQ,我们可以在项目进行到一些重要的里程之时ؓ(f)之徏立标{,q样可以方便以后随时取出q些历史版本。我想你?x)有一个疑问:(x)SVN不是本n有随意取出M一个历史版本的功能吗?是的Q标{作用主要是ؓ(f)了给q些特定的历史版本取一个友好的名字Q以方便使用和维护?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">分支则是用于创徏多个q行的工作线Q比如,当我们的一个项目需要ؓ(f)某个用户提供一些特D的功能Ӟ那么可以ؓ(f)之创Z个分支,q样能够保正大部分代码的qQ也使得整个目变得Ҏ(gu)l护和管理?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">SVN对于分支和标{实现都是一L(fng)Qƈ且采用了与Unix/Linux链接(Hard-LinkQ类似的机制Q即是说Q当我们创徏分支或标{时QSVNq不?x)立即?f)之创Z份拷贝,而是创徏一个链接,只有当这些文件以后被修改时才?x)真正生一份副本。这U?#8220;~式拯”Ҏ(gu)是一U常见的优化Ҏ(gu)Q能够有效的节约I间?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">那分支和标签又有什么不同呢Q不同之处仅仅在于其“U定成俗”的含义,标签意味着你不?x)再对其q行修改Q而分支意味着你会(x)对它q行开发?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">4) 多种讉K方式</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">SVN提供了一个抽象的|络讉K层,可以通过不同的协议来对其q行讉K。首先,SVN提供了自定义的svn协议讉K方式Q通过形如svn://host/repository的URLp使用。再有,SVNq提供了与Apache Web服务器相集成的功能,q样Q我们就可以通过<a href="http://host/repository" minmax_bound="true"><font color=#005880 minmax_bound="true"><u>http://host/repository</u></font></a>的方式来讉KSVN了?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">5) 对二q制文g的支?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">CVS虽然对二q制文g也有支持Q但实现得ƈ不完善,你或?dng)R到过文本文g里有中文字符而被认ؓ(f)是二q制文g的事情,SVN则提供了对二q制文g全面的支持,使得非文本文件也能跟文本文g一栯行良好的版本控制?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">6) Windows下与资源理器集成的客户端:(x)TortoiseSVN</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">SVN本n只提供命令行的操作方式,TortoiseSVN是第三方开发的囑Ş化界面,它的出现使Windows下的版本理变得非常方便。不q,׃是嵌入到资源理器中Q它可能?x)媄响系l的速度——微乎其微,你可以自p一下?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">7) q_无关</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">SVNU承了开源Y件的一贯优点,无论是Windowsq是Linuxq_Q都可以怺讉KSVN服务器?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true"> </p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">如果你过LVSS用户Q那么这里还要提一点,与VSS相比QSVNq有一个理念不一PVSS版本冲H控制放在操作之前,你要操作某个目必须先执行CheckOut以进行锁定、防止他人同时修攏VSVN提供了同L(fng)Lock功能Q但通常情况下,我们只需各自独立的进行修改而无需锁定目Q如果有冲突在提交的时候再做处理,也就是说QSVN是将冲突控制攑֜操作之后、提交之时。也怽?x)觉得VSS更合理,但实际情况却相反Q因为在我们的实际用中l常发生有h整个项目CheckOut后忘了CheckInQ或者未选择Recursive忘了子目录中的文gCheckInQ这p其他人无法修改,于是不得不h为的通知其本人,非常ȝ?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true"> </p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">2. SVN服务器搭?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">本节是针对管理员写的Q普通用户可以蟩q本节。我q里只以Windows上的安装ZQLinux上可按类似方式进行(有些配置参数?x)存在差别,具体参考帮助手册)?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">1) 安装SVN服务?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">a. 下蝲</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">SVN的官方网站ؓ(f)<a minmax_bound="true"><font color=#005880 minmax_bound="true"><u>http://subversion.tigris.org/</u></font></a>Q当前最新版本ؓ(f)1.4.2。Windows下的二进制安装包分ؓ(f)两种Q一U是以setupl尾的安装文Ӟ另一U是普通的压羃包文Ӟsetup文g?x)自动注册一些信息,比如环境变量以及(qing)服务{,q些都是可以自己手动实现的。在我写q篇文章Ӟ官方|站上就只有普通二q制文gQ估计setup文gE晚些时候会(x)出来。特别注意,下蝲时要详细阅读注意事项Q看清与之配套的软g的版本号Q避免出现问题?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">我选择的版本ؓ(f)svn-win32-1.4.2.zip</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">b. 安装</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">svn-win32-1.4.2.zip解压~到安装目录下,我选择的是C:/Program Files/SubversionQ如果是setup文gQ直接运行安装文件即可。对于压~包Q我们可以将bin路径d到系l环境变量中Q以方便操作。可以看刎ͼbin目录下主要有如下几个文gQ?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">svnadminQ仓库管理工P包括创徏、修复和备䆾{操作?br minmax_bound="true">svnlookQ仓库查看工P包括信息、日志和锁定状态等内容Q不?x)造成仓库的改动?br minmax_bound="true">svnserveQsvn服务E序Q允?dng)R过svn|络协议来访问仓库?br minmax_bound="true">svnQSVN客户端,用于讉K仓库Q对目q行版本理?br minmax_bound="true">svnversionQ客L(fng)工具Q用于查看本地拷贝的修订信息?br minmax_bound="true">c. 创徏仓库QRepositoryQ?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">SVN是以仓库为版本控制单位的Q一个SVN服务器可以管理多个仓库,每个仓库拥有独立的修订号QREVISIONQ,仓库中的M一ơ更新都?x)带来修订号的递增。你可以Ҏ(gu)需要选择建立一个或者多个仓库,q里Q我以创建多个仓库ؓ(f)例子Q假设我们将仓库都放到D:/SVN_REPOS目录下,下面的命令将?x)在该目录下创徏一个Test仓库Q?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">svnadmin create D:/SVN_REPOS/Test <br minmax_bound="true">如果创徏成功QD:/SVN_REPOS/下将?x)多一个Test目录?<br minmax_bound="true">2) 搭徏svnserve讉K方式</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">svn和http是两Uƈ列的讉K方式Q你可以选择其中一U,也可以都采用?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">a. 注册服务</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">Z让SVN服务E序每次开机后自动q行Q我们需要将其注册ؓ(f)服务。在控制C执行如下命o(h)Q?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">sc create svnservice binPath= "\"C:\Program Files\Subversion\bin\svnserve.exe\" --service -r D:/SVN_REPOS" start= auto <br minmax_bound="true">注意Q上q命令均在一行中。sc.exe是Windows 2000以后pȝ自带的一个工P2000下没有,可以从XP上拷q来。svnservice为服务名Uͼ后面的参数格式有严格要求Q等号前面没有空D后面有。binPath本n带有多个参数Q因此用引号括v来,而由于\径里面又有空|因此又加上了一层引受?--service?r均ؓ(f)svnserve.exe的参敎ͼ前者要求它作ؓ(f)服务q行Q后者指明了仓库的根路径Q多仓库Z库的父目录)?<br minmax_bound="true">带安装包的SVN?x)自动注册服务,q时我们可能需要修?r参数Q命令如下:(x)</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">sc config svnservice binPath= "\"C:\Program Files\Subversion\bin\svnserve.exe\" --service -r D:/SVN_REPOS"<br minmax_bound="true">b. 讉K</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">注册完后Q通过q行sc start svnservice或者服务管理器Qservice.mscQ启动服务?br minmax_bound="true">接下来,我们可以通过下面的命令来试pȝ是否工作正常Q?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">svn info svn://localhost/Test<br minmax_bound="true">如果正确的显C出仓库的相关信息,那么大功告成了Q否则请(g)查服务的参数是否配置正确Q比如,如果未在服务参数中指定正的-r|׃(x)得到如下错误Q?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">No repository found in 'svn://localhost/Test'<br minmax_bound="true">如果安装了TortoiseSVNQ则可以直接在浏览器中输入svn://localhost/TestQ这样会(x)调出TortoiseSVN的Repos-Browser。到此,你就可以通过TortoiseSVN来导入工E进行版本管理了Q参见后文)?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">c. 权限配置</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">在进行权限配|前Q所有的用户都能q行M操作Q在很多情况下是不允许的。在创徏仓库Ӟ仓库目录下都?x)生成好几个文g夹,其中conf里面存储的是配置信息Q包括三个文Ӟ(x)</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">authzQ访问权限配|?br minmax_bound="true">passwdQ用户名和密码配|?br minmax_bound="true">svnserve.confQ基本配|信?br minmax_bound="true">先配|svnserve.confQ将里面几项配置前的注释LQ最后的内容如下Q?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">[general]<br minmax_bound="true">anon-access = read<br minmax_bound="true">auth-access = write<br minmax_bound="true">password-db = passwd<br minmax_bound="true">authz-db = authz <br minmax_bound="true">q些参数的含义文仉都有详细说明Q其中,anon-access和auth-access分别是对匿名用户以及(qing)认证用户的访问控Ӟpassword-db指明用户密码文g路径Qauthz-db指明权限配置文g路径。另外还有一个参数realm用于指明仓库所属的认证域,默认情况下每个仓库位于不同的域(每个仓库有一个唯一的uuidQ,因此我们可以不设|该,除非多个仓库需要共用同一份passwd配置?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">passwd文g的配|很单,格式如下Q等号前面ؓ(f)用户名,后面为密码)Q?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">[users]<br minmax_bound="true">harry = 123<br minmax_bound="true">sally = 123<br minmax_bound="true">guest = 123 <br minmax_bound="true">authz则可以创建用L(fng)q精配|某个用h用户l对某个文g或目录的讉K权限Q下面是一个例子:(x)</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">[groups]<br minmax_bound="true">harry_and_sally = harry,sally <br minmax_bound="true"> </p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">[/]<br minmax_bound="true">* = r</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">[/project1]<br minmax_bound="true">* =<br minmax_bound="true">harry = rw<br minmax_bound="true">sally = r</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">[/project1/foo]<br minmax_bound="true">sally = </p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">[/project2]<br minmax_bound="true">@harry_and_sally = rw<br minmax_bound="true">guest = r</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">文g内容其实很简单易懂,groups用于定义用户l,后面便是对资源的具体讉K控制Q?表示仓库根目录,*表示所有用P用户l前面需加上@W号Qr表示可读Qw表示可写Q等号右边ؓ(f)I则表示没有权限。注意对于目录结构,当用戯问某个资源时QSVN?x)先看有没有直接针对该资源的讉K控制Q如果没有找刎ͼ则会(x)l承上一U目录的讉K权限Q如此递推?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">再提一点,当我们有多个仓库Ӟ我们?x)发现这些仓库的用户帐号在大多数情况下都是相同的Q因此,我们可以passwd文g攑ֈ公共的地方,然后所有仓库的password-db配置都指向该文g。相应的Qauthz-db也可以共用一个文Ӟ不过需要在配置具体的访问控制时指明所属的仓库Q如下:(x)</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">[/]<br minmax_bound="true">* = r <br minmax_bound="true"> </p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">[repos1:/project1]<br minmax_bound="true">* = r<br minmax_bound="true">harry = rw</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">[repos2:/project1]<br minmax_bound="true">* = r<br minmax_bound="true">sally = rw</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">上述配置表明Q所有hҎ(gu)有仓库的根目录都有读权限Q但只有harry对仓库repos1里的project1有读写权限,只有sally对仓库repos2里的project1有读写权限?<br minmax_bound="true">3) 搭徏HTTP讉K方式</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">SVN可以通过Apache实现Web讉K方式Q但q不是必需的,除非你有此需求?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">a) 下蝲</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">Apache的官方网站ؓ(f)<a minmax_bound="true"><font color=#005880 minmax_bound="true"><u>http://www.apache.org/</u></font></a>Q注意不要用最新的2.2.xQ而要选择2.0.xQ这一点在SVN官方|站上有特别说明Q当初我没有注意到q一点,而导致Apache2.2启动时无法加载SVN的模块,出现“perhaps this is not an Apache module DSO”错误?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">我下载的版本为apache_2.0.59-win32-x86-no_ssl.msi</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">b) 安装和注?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">执行Apache安装E序。由?.0的版本不?x)自动注册?f)服务Q因此我们需要手工处理。运行cmd.exeQ进入apache安装目录下的bin文g夹,执行如下命o(h)卛_Q?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">apache -k install<br minmax_bound="true">更多的命令可以通过apache help查看?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">注册完后Q就可以通过pȝ托盘里的Apache Monitor来启动服务。如?0端口未被占用Q那么服务器应正常启动,通过<a minmax_bound="true"><font color=#005880 minmax_bound="true"><u>http://127.0.0.1</u></font></a>p看到Apache的测试页面?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">c) 配置</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">Apache是通过conf目录中的httpd.conf文gq行配置的,比如Q默认的监听端口?0Q在文g中搜索Listen 80Q将80Ҏ(gu)你所需的其它端口即可。配|完后必重起Apache才能生效。更多关于Apache的配|说明请参见其帮助手册或google之。下面网站ؓ(f)帮助手册的中文版本?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">Z让Apache支持SVNQ比如增加一些配|项Q一个典型的配置如下Q?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true"># 加蝲mod_dav模块Q它是对WebDAVQWeb-based Distributed Authoring and VersioningQ协议的支持Q由Apache自带<br minmax_bound="true">LoadModule dav_module modules/mod_dav.so</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true"> </p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true"># 加蝲mod_dav_svn模块Q它与mod_dav通信QApache支持SVNQ它位于SVN的bin目录下?br minmax_bound="true">LoadModule dav_svn_module "D:/Program Files/Subversion/bin/mod_dav_svn.so"</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true"> </p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true"># 加蝲mod_authz_svn模块Q用于进行权限管?br minmax_bound="true">LoadModule authz_svn_module "D:/Program Files/Subversion/bin/mod_authz_svn.so"</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true"> </p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true"># 配置SVN的访问\径以?qing)相关相兛_?br minmax_bound="true"><Location /svn/>                             # 通过<a href="http://host/svn/" minmax_bound="true"><font color=#005880 minmax_bound="true"><u>http://HOST/svn/</u></font></a>讉KSVN服务?br minmax_bound="true">    DAV svn                                  # 必需<br minmax_bound="true">    SVNParentPath D:/SVN_REPOS               # 说明D:/SVN_REPOS下的所有目录均Z?br minmax_bound="true">    SVNListParentPath on                     # 在网中列出D:/SVN_REPOS下的所有仓?br minmax_bound="true">    <br minmax_bound="true">    AuthType Basic                           # 基本的用户名密码验证方式<br minmax_bound="true">    AuthName "SVN REPOS"                     # 认证名称Q作提示?br minmax_bound="true">    AuthUserFile D:/SVN_REPOS/users          # 用户名密码文?br minmax_bound="true">    AuthzSVNAccessFile D:/SVN_REPOS/authz    # 权限控制文g</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">    Require valid-user                       # 只有通过认证才能讉K|页<br minmax_bound="true"></Location></p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true"> </p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true"># 重定向处理,用于?a href="http://host/svn" minmax_bound="true"><font color=#005880 minmax_bound="true"><u>http://HOST/svn</u></font></a>地址重定向ؓ(f)<a href="http://host/svn/" minmax_bound="true"><font color=#005880 minmax_bound="true"><u>http://HOST/svn/</u></font></a><br minmax_bound="true">RedirectMatch ^(/svn)Q?Q?/</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">下面对几个重要的地方作以说明Q?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">i. |上很多文章提到mod_dav_svn.so和mod_authz_svn.so两个文g直接拯到Apache的modules目录下,当初我按照这U方法做时结果在一台Windows 2000 Server上无法启动Apache服务Qؓ(f)此折腾了半天。后来才明白Q这些模块文件其实就是一些动态链接库Q它需要依赖SVN的bin目录下的其它几个dll文gQ可以把后缀改ؓ(f)dllQ然后通过VC带的depends查看其依赖关p)Q因此如果没有设|环境变量,那么Apache加蝲q些模块时就?x)失败,当然也可以把所有依赖文Ӟ主要是libdb43.dll Q拷贝过厅R实际上Q我们只需要通过l对路径来引用这些模块即可,q样SVN升后也不用再次拯?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">ii. URL的访问\径ؓ(f)/svn/而不?svnQ因为后者可能有问题Q导致通过<a href="http://host/svn" minmax_bound="true"><font color=#005880 minmax_bound="true"><u>http://HOST/svn</u></font></a>讉K出现如下错误信息</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">iii. SVNParentPath用于有多个仓库的情况Q如果只有单个仓库,可以直接用SVNPath指明仓库路径?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">iv. AuthUserFile指明用户名密码文Ӟ但它与前面提到的SVN仓库下的passwd文g不是同一个文ӞAuthUserFile是Apache的认证文件格式,二者的区别主要是用户名和密码的分割W不同,passwd是等Pq里的users是冒P当初我就是把它们当成一个文件而造成客户端无法访问(Z么SVN不把passwd的格式定义成和AuthUserFile的一样呢Q这样二者可以共用一个文Ӟ。如果要对密码加密,那么users文g需通过Apache附带的htpasswd工具生成Q实际上我们也可直接采用明文方式?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">v. 权限控制文gAuthzSVNAccessFile与前面SVN里的authz一P因此可以q?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">4) 其它理功能</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">a. 备䆾</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">b. 修复</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true"> </p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">3. SVN客户端?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">本节针对客户端用P主要介绍一些常用的操作Ҏ(gu)?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">1) 客户端安?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">客户端可以采用命令行方式Q也可以采用TortoiseSVN囑Ş化方式,个h认ؓ(f)q是后者方便些?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">TortoiseSVN?a minmax_bound="true"><font color=#005880 minmax_bound="true"><u>http://tortoisesvn.tigris.org/</u></font></a>上获取,注意版本应与服务器保持一致。如果是命o(h)行方式的话,那么?a minmax_bound="true"><font color=#005880 minmax_bound="true"><u>http://subversion.tigris.org/</u></font></a>下蝲一个SVN二进制包p了,此处不多讌Ӏ?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">TortoiseSVN属于囑Ş化的客户端YӞ其实前面的SVN安装包里已经含有客户端程序,只不q是命o(h)行方式的Q你可以Ҏ(gu)需要选择是否安装。TortoiseSVN的官方网站ؓ(f)<a minmax_bound="true"><font color=#005880 minmax_bound="true"><u>http://tortoisesvn.tigris.org/</u></font></a>Q同P注意选择与SVN服务器配套的版本?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">我这里用的版本为TortoiseSVN-1.4.0.7501-win32-svn-1.4.0.msi</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">安装完后Q会(x)提示重v机器Q实际上不用重vp直接使用Q只不过重v后会(x)更新SVN文g图标的显C。下图是SVN工作区的右键菜单内容Q?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true"><br minmax_bound="true">2) 主要操作</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">TortoiseSVN使用h很简单,所有操作都通过右键菜单来完成。命令内容也很直观,而且有非常详l的帮助手册Q这里只单的介绍一下?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">a) 导入目QImportQ?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">首先要把需要进行版本管理的工程Q目录)整理好,L不必要的文gQ比如编译器生成的(f)时文件。然后在最上层文g夹上单击右键Q选择“TortoiseSVN -> Import...”Q输入要存放的SVN服务器\径,认卛_。这样就本地的目导入C服务器上?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">命o(h)行:(x)svn import [PATH] URL</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">b) (g)出项目(CheckoutQ?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">目初次导入成功后,刚才本地的内容就没有用了Q我们需要徏立一个新的工作区Q重CSVN服务器下载受控的目文gQ执?#8220;TortoiseSVN -> Checkout...”Q选择或者输入项目的URLQ确认即可,以后的工作都应在q个工作区里q行?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">默认是获取项目的最新版本(HEADQ,如果要获取历史版本,指定相应的修订号QRevisionQ即可?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">命o(h)行:(x)svn checkout URL[@REV]... [PATH]</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">c) 更新与提交(Update and CommitQ?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">他h修改了项目,我们需要从服务器下载最新版本,q通过“SVN Update”右键菜单实现?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">命o(h)行:(x)svn update [PATH...]</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">如果是自己本C了修改,则应?qing)时修?gu)新到服务器上去,q通过“SVN Commit...”实现。一个好的习(fn)惯是每次提交都应注明修改内容Q以方便日后查证?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">命o(h)行:(x)svn commit [PATH...]</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">d) 增加和删除文ӞAdd and DeleteQ?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">如果我们要向一个受控项目中d新文件或文g夹,只需在目标上执行“TortoiseSVN -> Add”操作。注意,q里只是本地dQ要提交到服务器Q还必须执行Commit才行?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">命o(h)行:(x)svn add PATH...</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">同样Q要删除受控文g或文件夹只需执行“TortoiseSVN -> Delete”操作?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">命o(h)行:(x)svn delete PATH/URL...</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">TortoiseSVNq提供了一个重命名操作“TortoiseSVN -> Rename”Q这其实是添加和删除的组合?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">e) 撤销操作QRevertQ?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">有时候,我们可能q行了错误的修改或者增加和删除Q只要未q行提交Q我们都可以通过“TortoiseSVN -> Revert”命o(h)来撤销本地的所有更攏V?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">命o(h)行:(x)svn revert PATH...</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">f) 查看信息</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">SVN提供了几U信息查看方式,其中Show log用于昄每次版本变更的日志信息,Repo-brower是仓库浏览器Q类g资源理器,Revision graph则以囑Ş化的方式让我们很直观的看到版本的变更情况Q尤其是对于分支和标{理很有帮助?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">3) 其它操作</p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">a) 冲突解决QResolvedQ?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">如果我们本地q行了修改,而别人又把他的修Ҏ(gu)交到了服务器上,q时我们执行Update可能出现冲H(ConflictQ。Resolved的作用不是解军_H,它不q行M合ƈQ而是忽略掉他人的修改Q允许我们将自己的版本提交到服务器上?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">单的_(d)Revent是撤销本地修改Q而Resolved是保留本C攏V?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">b) 清除异常状态(CleanupQ?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">如果在执行某个命令的时候出现异常,比如服务器突然挂了,本地的工作区׃(x)处于一U异常状态,通过Cleanup能够清除q种状态,使工作区不受到媄响?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">c) 锁定QGet lockQ和解锁QRelease lockQ?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">冲突都是׃不同的开发h员同时修改了同一份文仉成的,因此Qؓ(f)了避免这U情况,我们可以锁定自己要修改的内容Q这样其他h在我们解锁前无法提交其修改?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">d) 分支和标{(Branch/tagQ?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">本文最开始就有说明,分支的目的是Z创徏q行的工作线Q标{作用是ؓ(f)了保存项目某个版本的快照。二者在实现上却是一L(fng)Q都是通过Branch/tag命o(h)执行?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">e) 导出QExportQ?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">Z实现版本理QSVN?x)在工作区的每个目录下都生成一个隐藏的.svn文g夹,而我们有时却希望得到一个干净的没?svn文g夹的目l构Q比如发布Y件时Q这U情况下可以用Export功能?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">f) 重定向(RelocateQ?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">有时候,SVN服务器的IP地址可能?x)发生变动,如果遇到q种情况Q我们每个h的本地工作区都要重新下蝲吗?不用Q只需通过Relocate重新配置一下本地工作区所对应的服务器地址可以?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">g) 补丁理QpatchQ?/p> <p style="FONT-SIZE: 14pt; FONT-FAMILY: q圆" minmax_bound="true">不要被patch的名U迷惑,实际上它不属于SVN版本理的范畴。这里所谓的patch是指那些寚w目没有写权限QCommitQ的人所作的修改Q通过“TortoiseSVN -> Create Patch”生成Q然后他们采用电(sh)子邮件等方式patch发给目理员,q理员执行“TortoiseSVN -> Apply Patch”q确认修改内容后再进行提交。该功能主要用于开源项目的理?/p> <img src ="http://www.shnenglu.com/niewenlong/aggbug/65282.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/niewenlong/" target="_blank">聂文?/a> 2008-10-28 10:32 <a href="http://www.shnenglu.com/niewenlong/archive/2008/10/28/65282.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Beyond Compare V3.0http://www.shnenglu.com/niewenlong/archive/2008/08/01/57732.html聂文?/dc:creator>聂文?/author>Fri, 01 Aug 2008 03:27:00 GMThttp://www.shnenglu.com/niewenlong/archive/2008/08/01/57732.htmlhttp://www.shnenglu.com/niewenlong/comments/57732.htmlhttp://www.shnenglu.com/niewenlong/archive/2008/08/01/57732.html#Feedback0http://www.shnenglu.com/niewenlong/comments/commentRss/57732.htmlhttp://www.shnenglu.com/niewenlong/services/trackbacks/57732.htmlBeyond Compare 是一ƾ不可多得的专业U的文g夹和文gҎ(gu)工具。用他可以很方便的Ҏ(gu)Z个文件夹或者文件的不同之处。ƈ把相差的每一个字节用颜色加以表示Q查看方ѝƈ且支持多U规则对比。对软g汉化者来_(d)q绝Ҏ(gu)一ƾ不可多得的工具?br>

注册?urKH3mXZVDiTNgCKQnFnfvaQB5tTtahv tUr5HqwT9YZu50+b3T9bkzYKwKsfjhhi DgzR9Dr5qbmJ2EmNzYfSAq4ocM7E8B0D kDvyvawgHd0gV-nFnVNBsqMgnxcKoJfZ 6WrrQotEiqs6H14Jk9Wjz+SLvovnUksb gT5K1ey7T7AV2C32NLt4gjavcM5tzDR0 GUbvAou+MKzhMHebccC+3fB0wwwKNPs0 fwCz3Xh16S6yB4xxeD2bS6JFV9JPZwkA



]]>
?Subversion 构徏版本控制环境http://www.shnenglu.com/niewenlong/archive/2007/10/12/34034.html聂文?/dc:creator>聂文?/author>Fri, 12 Oct 2007 07:51:00 GMThttp://www.shnenglu.com/niewenlong/archive/2007/10/12/34034.htmlhttp://www.shnenglu.com/niewenlong/comments/34034.htmlhttp://www.shnenglu.com/niewenlong/archive/2007/10/12/34034.html#Feedback0http://www.shnenglu.com/niewenlong/comments/commentRss/34034.htmlhttp://www.shnenglu.com/niewenlong/services/trackbacks/34034.html本文介l如何通过 Subversion 来构建小l开发过E中最为重要的版本控制环境Q包括Subversion 环境的安装配|以?qing)如何通过各种有效的客L(fng)工具来提高工作的效率?

一Q?首先我们先来认识一?Subversion

Subversion 目的初hZ替换现在开源社区最为流行的版本控制软g CVSQ在 CVS的功能的基础上有很多的提升同时也能较好的解决 CVS pȝ的一些不Iq些提升主要包括以下的一些方面:(x)

1Q?目录、文件以?qing)改名等元数据的版本?
不同?CVS 只关心文件的内容以及(qing)文g是否存在Q所有文件、目录的相关操作都是被版本化的,例如文g的改名、拷贝等{;

2Q?提交操作是真正的原子操作
?Subversion 中,提交操作是不可分割的Q修订版本号是基于每ơ提交操作而非文g。提交日志被附加在每个修订版本中Q而不是像 CVS 一样冗余的q行存储Q?

3Q?可通过 Apache 服务器提供基?WebDAV/DeltaV 协议的支?
该功能可?nbsp; 阅读全文

]]>
Subversion之\Q-实现_的目录访问权限控?/title><link>http://www.shnenglu.com/niewenlong/archive/2007/10/12/34033.html</link><dc:creator>聂文?/dc:creator><author>聂文?/author><pubDate>Fri, 12 Oct 2007 07:31:00 GMT</pubDate><guid>http://www.shnenglu.com/niewenlong/archive/2007/10/12/34033.html</guid><wfw:comment>http://www.shnenglu.com/niewenlong/comments/34033.html</wfw:comment><comments>http://www.shnenglu.com/niewenlong/archive/2007/10/12/34033.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/niewenlong/comments/commentRss/34033.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/niewenlong/services/trackbacks/34033.html</trackback:ping><description><![CDATA[     摘要: <br>?Subversion 的用当中,存在“认证”、“授权”两个概c(din)认证,?authenticationQ是指用户名与密码的认证。授权,?authorization Q是指某用户Ҏ(gu)个目录是否具备读、写权限的一U审核。这两者配合作用,q成了 Subversion 的整个帐L(fng)理体pR?<br> <br>在实际的工作当中Q我们有时候会(x)遇见需要控刉目目录的讉K权限的情况,比如说对目的一些关键模块进行限Ӟ仅允许少数授权h士才可以修改{。由于项目的目录本n是作ؓ(f)版本库的一个部分被 Subversion 所收管Q所以我们无法利用操作系l的帐户权限体系Q来实现授权控制。因此,q个问题只有让svn自己来解决了?<br> <br>Subversion 提供了面向目录的帐户权限理功能Q通过它,我们可以很_地实现项目目录的讉K控制。不q在 1.2 ?qing)其以前的版本,我们只能利?mod_authz_svn.so 模块Q结?Apache 服务器来实现目录讉K控制Q这对于?Apache 的配|与使用不是很熟(zhn)的人来_(d)׃是很方便了。而Subversionl于?1.3   <a href='http://www.shnenglu.com/niewenlong/archive/2007/10/12/34033.html'>阅读全文</a><img src ="http://www.shnenglu.com/niewenlong/aggbug/34033.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/niewenlong/" target="_blank">聂文?/a> 2007-10-12 15:31 <a href="http://www.shnenglu.com/niewenlong/archive/2007/10/12/34033.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>?Subversion 构徏版本控制环境http://www.shnenglu.com/niewenlong/archive/2007/10/12/34032.html聂文?/dc:creator>聂文?/author>Fri, 12 Oct 2007 07:24:00 GMThttp://www.shnenglu.com/niewenlong/archive/2007/10/12/34032.htmlhttp://www.shnenglu.com/niewenlong/comments/34032.htmlhttp://www.shnenglu.com/niewenlong/archive/2007/10/12/34032.html#Feedback1http://www.shnenglu.com/niewenlong/comments/commentRss/34032.htmlhttp://www.shnenglu.com/niewenlong/services/trackbacks/34032.html本文介l如何通过 Subversion 来构建小l开发过E中最为重要的版本控制环境Q包括Subversion 环境的安装配|以?qing)如何通过各种有效的客L(fng)工具来提高工作的效率?
一Q?首先我们先来认识一?Subversion
Subversion 目的初hZ替换现在开源社区最为流行的版本控制软g CVSQ在 CVS的功能的基础上有很多的提升同时也能较好的解决 CVS pȝ的一些不Iq些提升主要包括以下的一些方面:(x)
1Q?目录、文件以?qing)改名等元数据的版本?
不同?CVS 只关心文件的内容以及(qing)文g是否存在Q所有文件、目录的相关操作都是被版本化的,例如文g的改名、拷贝等{;

2Q?提交操作是真正的原子操作
?Subversion 中,提交操作是不可分割的Q修订版本号是基于每ơ提交操作而非文g。提交日志被附加在每个修订版本中Q而不是像 CVS 一样冗余的q行存储Q?

3Q?可通过 Apache 服务器提供基?WebDAV/DeltaV 协议的支?
该功能可?nbsp; 阅读全文

]]>
让Subversion和Visual Studio 2005一起工?/title><link>http://www.shnenglu.com/niewenlong/archive/2007/10/12/34028.html</link><dc:creator>聂文?/dc:creator><author>聂文?/author><pubDate>Fri, 12 Oct 2007 07:19:00 GMT</pubDate><guid>http://www.shnenglu.com/niewenlong/archive/2007/10/12/34028.html</guid><wfw:comment>http://www.shnenglu.com/niewenlong/comments/34028.html</wfw:comment><comments>http://www.shnenglu.com/niewenlong/archive/2007/10/12/34028.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/niewenlong/comments/commentRss/34028.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/niewenlong/services/trackbacks/34028.html</trackback:ping><description><![CDATA[     摘要: 工具准备QVS2005. <br>Subversion,撰写此文时的最新版本是1.4.2,官方|站http://subversion.tigris.org <br>TortoiseSVN,撰写此文时的最新版本是1.4.1.7992,官方|站http://tortoisesvn.net,该Y件有中文汉化?<br>VisualSVNQ让VS2005支持SVN的插件。该软g必须和TortoiseSVN配套使用。撰写此文时的版本是1.1.1Q官方网站是http://www.visualsvn.com,该Y件是商业E序Q未注册的话Q可以试?0天?<br> <br>安装步骤Q?<br>STEP1Q安装ƈ讄Subversion(服务? <br>׃可以下蝲SVN压羃包程序,不是安装E序Q其实SVN本就不需安装。只要配|对了,可以运行了。下面所涉及(qing)到的M安装路径或者设|\径,都仅仅是做演CZ用,可以Ҏ(gu)需求做L变化?nbsp; <a href='http://www.shnenglu.com/niewenlong/archive/2007/10/12/34028.html'>阅读全文</a><img src ="http://www.shnenglu.com/niewenlong/aggbug/34028.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/niewenlong/" target="_blank">聂文?/a> 2007-10-12 15:19 <a href="http://www.shnenglu.com/niewenlong/archive/2007/10/12/34028.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>svn服务器安装配|?/title><link>http://www.shnenglu.com/niewenlong/archive/2007/10/12/34024.html</link><dc:creator>聂文?/dc:creator><author>聂文?/author><pubDate>Fri, 12 Oct 2007 07:07:00 GMT</pubDate><guid>http://www.shnenglu.com/niewenlong/archive/2007/10/12/34024.html</guid><wfw:comment>http://www.shnenglu.com/niewenlong/comments/34024.html</wfw:comment><comments>http://www.shnenglu.com/niewenlong/archive/2007/10/12/34024.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.shnenglu.com/niewenlong/comments/commentRss/34024.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/niewenlong/services/trackbacks/34024.html</trackback:ping><description><![CDATA[     摘要: <br>1.安装svn-1.3.0-setup.exeQ可以在http://subversion.tigris.org/下蝲得到Q?<br>2.安装成功后,在命令行输入svnadmin create D:\svnhome\workflow,建立工程Qsvn自动?<br>在该目录下徏立若q文?<br>3.在该目录下有password文gQ在此文件中增加用户和密码格式如?<br>[users] <br>admin = 123 <br>在svnserve.conf文g中增?<br>[general] <br>anon-access = read <br>auth-access = write <br>password-db = passwd <br>realm = svnhome <br>到这一步svn服务器已l配|完成了Q下面是导入需要版本控制的工程 <br>4.在命令行执行import命o(h) <br>例如QD:\svnhome\workflow>svn import D:\eclipse\workspace\Workflow <br>file:///D:/svnhome\work  <a href='http://www.shnenglu.com/niewenlong/archive/2007/10/12/34024.html'>阅读全文</a><img src ="http://www.shnenglu.com/niewenlong/aggbug/34024.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/niewenlong/" target="_blank">聂文?/a> 2007-10-12 15:07 <a href="http://www.shnenglu.com/niewenlong/archive/2007/10/12/34024.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.kingvit.com.cn" target="_blank">һþ㽶</a>| <a href="http://www.shaoxing2010.cn" target="_blank">þøƬ</a>| <a href="http://www.ywmhwatch.cn" target="_blank">þþþþAVר</a>| <a href="http://www.zzzjjj.cn" target="_blank">þó鱬Ļ</a>| <a href="http://www.jihejingjia.cn" target="_blank">2021ƷۺϾþ</a>| <a href="http://www.meedow.cn" target="_blank">ƷȾþëƬ</a>| <a href="http://www.f1490.cn" target="_blank">޾Ʒþǧն</a>| <a href="http://www.dliif.cn" target="_blank">þþþavר</a>| <a href="http://www.bassaphoto.cn" target="_blank">91鶹Ʒ91þþþþ</a>| <a href="http://www.zhinvest.cn" target="_blank">Ʒþþ99</a>| <a href="http://www.sd43.cn" target="_blank">þˬƬav</a>| <a href="http://www.jrchen.cn" target="_blank">Сڵþþþþ</a>| <a href="http://www.mt4.net.cn" target="_blank">þ99Ʒžžžþ</a>| <a href="http://www.guwz.cn" target="_blank">˾þô߽avӰԺ </a>| <a href="http://www.bluecc.com.cn" target="_blank">þۺϹɫ88þþƷۺ </a>| <a href="http://www.hywsgc.cn" target="_blank">ŷþ18</a>| <a href="http://www.jmggc.com.cn" target="_blank">þ99ƷþֻоƷ</a>| <a href="http://www.yjtrade.cn" target="_blank">þþþùɫAVѿͼƬ</a>| <a href="http://www.4gbbs.cn" target="_blank">޾ƷҾþþþþ</a>| <a href="http://www.modellesson.cn" target="_blank">99þþþþѿ</a>| <a href="http://www.0532ks.cn" target="_blank">Ů޾Ʒþþۺ</a>| <a href="http://www.zmcgmih22.cn" target="_blank">þþۺϾɫۺ98</a>| <a href="http://www.bitpter.cn" target="_blank">þþþùƷ۲ӰԺ</a>| <a href="http://www.dpww.net.cn" target="_blank">ձɫۺϾþӰԺ</a>| <a href="http://www.cn987.cn" target="_blank">޾ƷҹVAþó</a>| <a href="http://www.busher.cn" target="_blank">ݾƷŮ˾þþþþ </a>| <a href="http://www.xyp020.cn" target="_blank">þþþþëƬѿ</a>| <a href="http://www.v0008.cn" target="_blank">Ʒþþ</a>| <a href="http://www.khdv.cn" target="_blank">ŷ˾þô߽ۺ</a>| <a href="http://www.pygsbdg.cn" target="_blank">ھƷþþþþòӰԺ</a>| <a href="http://www.ekgb.cn" target="_blank">þþþAVרJN</a>| <a href="http://www.tobeok.cn" target="_blank">ŮƷþþ</a>| <a href="http://www.yghzby.cn" target="_blank">97þ㽶߿ۿ</a>| <a href="http://www.9503miwang.cn" target="_blank">69ƷþþþAPP</a>| <a href="http://www.bddp.com.cn" target="_blank">99þwww˳ɾƷ</a>| <a href="http://www.one-8.cn" target="_blank">þþþþþ97</a>| <a href="http://www.diycook.cn" target="_blank">AVþþƷ</a>| <a href="http://www.262833.cn" target="_blank">˳ɵӰվþ</a>| <a href="http://www.beauty-queen.cn" target="_blank">þþþ99ƷƬëƬ</a>| <a href="http://www.west-data.cn" target="_blank">91Ʒþþþþ</a>| <a href="http://www.91share.com.cn" target="_blank">޾Ʒþþþþο</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>