<p>在linux下开发文件,但是当有代码被删除的时候,有时候忘记立马提交命令到svn服务器删除相应的文件,</p> 

<p>但是svn本身没有提供相应的命令来批量删除,为此用python写了一个</p> 

<p></p> 

<p>import os<br> 

if __name__== '__main__':<br> 

 svnfiles = os.popen("svn ls").readlines()<br> 

 print svnfiles<br> 

 localfiles = os.popen("ls").readlines()<br> 

 print localfiles<br> 

 svninfo = os.popen("svn info").readlines()<br> 

 path = svninfo[1][:len(svninfo[1])-1]<br> 

 for i in range(0,len(svnfiles)-1):<br> 

 sourcefile = svnfiles[i][:len(svnfiles[i])-1] <br> 

 if sourcefile[len(sourcefile)-1:] == "/":<br> 

 sourcefile = sourcefile[:len(sourcefile)-1]<br> 

 #print sourcefile<br> 

 bDelete = True<br> 

 for j in range(0,len(localfiles)-1):<br> 

 localfile = localfiles[j][:len(localfiles[j])-1]<br> 

 #print localfile<br> 

 if sourcefile == localfile:<br> 

 bDelete = False<br> 

 break<br> 

 if bDelete == True:<br> 

 optstr = "svn delete %s/%s -m /"/" /n"%(path[5:],sourcefile)<br> 

 print optstr<br> 

 os.system(optstr)<br> 

 os.system("svn up")</p> 

<p></p> 

<p>删除.svn以脱离svn管理</p> 

<p>find ./ -name '.svn' -exec rm -rf {} /;</p> 

<p></p> 

<p style="color: #006666;"><span style="font-size: medium;"><strong>1、</strong> 

将文 

件checkout到本地目录</span> 

</p> 

<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; color: #006666; background-color: #eeeeee;"> 

<span style="font-size: medium;"><strong><span class="highlight">svn</span> 

 checkout</strong> 

 path(path是服务器上的目录)<br> 

例如:<span class="highlight">svn</span> 

 checkout <span class="highlight">svn</span> 

://<span style="font-weight: bold;">192.168</span> 

.<span style="font-weight: bold;">1.1</span> 

/pro/domain<br> 

简写:<span class="highlight">svn</span> 

 co</span> 

</div> 

<p style="color: #006666;"><span style="font-size: medium;"><strong>2、</strong> 

往版 

本库中添加新的文件</span> 

</p> 

<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; color: #006666; background-color: #eeeeee;"> 

<span style="font-size: medium;"><strong><span class="highlight">svn</span> 

 </strong> 

<strong>add</strong> 

 file<br> 

例如:<span class="highlight">svn</span> 

 add test.php(添加test.php)<br><span class="highlight">svn</span> 

 add *.php(添加当前目录下所有的php文件)</span> 

 </div> 

<p style="color: #006666;"><span style="font-size: medium;"><strong>3、</strong> 

将改 

动的文件提交到版本库</span> 

</p> 

<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; color: #006666; background-color: #eeeeee;"> 

<p><span style="font-size: medium;"><strong><span class="highlight">svn</span> 

 commit</strong> 

 -m “LogMessage“ <span style="font-weight: bold;">[</span> 

-N<span style="font-weight: bold;">]</span> 

 <span style="font-weight: bold;">[</span> 

--no-unlock<span style="font-weight: bold;">]</span> 

 PATH<img src="http://www.blogjava.net/Images/dot.gif" alt="">


(如果选择了保持锁,就使用–no-unlock开关)<br>

如:

<span class="highlight">svn</span> 

 commit -m “add test file for my 

test“ test.php<br> 

简写:<span class="highlight">svn</span> 

 ci</span> 

</p> 

</div> 

<p style="color: #006666;"><span style="font-size: medium;"><strong>4、</strong> 

加锁 

/解锁</span> 

</p> 

<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; color: #006666; background-color: #eeeeee;"> 

<span style="font-size: medium;"><strong><span class="highlight">svn</span> 

 lock</strong> 

 -m “LockMessage“ <span style="font-weight: bold;">[</span> 

--force<span style="font-weight: bold;">]</span> 

 PATH<img src="http://www.blogjava.net/Images/dot.gif" alt=""><br> 

例如:<span class="highlight">svn</span> 

 lock -m “lock test file“ test.php<br><strong><span class="highlight">svn</span> 

 unlock</strong> 

 PATH</span> 

 </div> 

<p style="color: #006666;"><span style="font-size: medium;"><strong>5、</strong> 

更新 

到某个版本</span> 

</p> 

<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; color: #006666; background-color: #eeeeee;"> 

<span style="font-size: medium;"><strong><span class="highlight">svn</span> 

 update -r </strong> 

m path<br> 

例如:<br><span class="highlight">svn</span> 

 update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。<br><span class="highlight">svn</span> 

 update -r 200 

test.php(将版本库中的文件test.php还原到版本200)<br><span class="highlight">svn</span> 

 update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为<strong>冲突,需要先update,修改文件</strong> 

, 

然后清除<strong><span class="highlight">svn</span> 

 resolved</strong> 

,最后再提交 

commit)<br> 

简写:<span class="highlight">svn</span> 

 up</span> 

 </div> 

<p style="color: #006666;"><span style="font-size: medium;"><strong>6、</strong> 

查看 

文件或者目录状态</span> 

</p> 

<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; color: #006666; background-color: #eeeeee;"> 

<span style="font-size: medium;">1)<strong><span class="highlight">svn</span> 

 status</strong> 

 path<img src="http://www.blogjava.net/Images/dot.gif" alt=""> 

(目录下的文件和子目录的状态,正常状态不显示)<br> 

【?: 

不在<span class="highlight">svn</span> 

的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁 

定】<br> 

2)<strong><span class="highlight">svn</span> 

 status -v</strong> 


path<img src="http://www.blogjava.net/Images/dot.gif" alt=""> 

(显示文件和子目录状 

态)<br> 

第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。<br> 

注:<span class="highlight">svn</span> 

 status、<span class="highlight">svn</span> 


diff和 <span class="highlight">svn</span> 

 revert这三条命令在没有网络的情况下也可以执行的,原因是<span class="highlight">svn</span> 

在本地的.<span class="highlight">svn</span> 

中保留了 

本地版本的原始拷贝。<br> 

简写:<span class="highlight">svn</span> 

 st</span> 

 </div> 

<p style="color: #006666;"><span style="font-size: medium;"><strong>7、</strong> 

删除 

文件</span> 

</p> 

<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; color: #006666; background-color: #eeeeee;"> 

<span style="font-size: medium;"><strong><span class="highlight">svn</span> 

 delete</strong> 

 path -m “delete test fle“<br> 

例 

如:<span class="highlight">svn</span> 

 delete <span class="highlight">svn</span> 

://192.168.1.1/pro/domain/test.php 

 -m “delete test file”<br> 

或者直接<span class="highlight">svn</span> 

 delete 

test.php 然后再<span class="highlight">svn</span> 

 ci -m ‘delete test 

file‘,推荐使用这种<br> 

简写:<span class="highlight">svn</span> 

 (del, remove, rm)</span> 

</div> 

<p style="color: #006666;"><span style="font-size: medium;"><strong>8、</strong> 

查看 

日志</span> 

</p> 

<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; color: #006666; background-color: #eeeeee;"> 

<span style="font-size: medium;"><strong><span class="highlight">svn</span> 

 log</strong> 

 path<br> 

例如:<span class="highlight">svn</span> 

 log test.php 显示这个文件的所有修改记录,及其版本号的变化</span> 

</div> 

<p style="color: #006666;"><span style="font-size: medium;"><strong>9、</strong> 

查看 

文件详细信息</span> 

</p> 

<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; color: #006666; background-color: #eeeeee;"> 

<span style="font-size: medium;"><strong><span class="highlight">svn</span> 

 info</strong> 

 path<br> 

例如:<span class="highlight">svn</span> 

 info test.php</span> 

</div> 

<p style="color: #006666;"><span style="font-size: medium;"><strong>10、</strong> 

比 

较差异</span> 

</p> 

<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; color: #006666; background-color: #eeeeee;"> 

<span style="font-size: medium;"><strong><span class="highlight">svn</span> 

 diff</strong> 

 path(将修改的文件与基础版本比较)<br> 

例如:<span class="highlight">svn</span> 

 diff test.php<br><strong><span class="highlight">svn</span> 

 diff</strong> 

 -r m:n path(对版本m和版本n比较差异)<br> 

例 

如:<span class="highlight">svn</span> 

 diff -r 200:201 test.php<br> 

简写:<span class="highlight">svn</span> 

 di</span> 

 </div> 

<p style="color: #006666;"><span style="font-size: medium;"><strong>11、</strong> 

将 

两个版本之间的差异合并到当前文件</span> 

</p> 

<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; color: #006666; background-color: #eeeeee;"> 

<span style="font-size: medium;"><strong><span class="highlight">svn</span> 

 merge -r</strong> 

 m:n path<br> 

例如:<span class="highlight">svn</span> 

 merge -r 200:205 

test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)</span> 

</div> 

<p style="color: #006666;"><span style="font-size: medium;"><strong>12、</strong> 

<span class="highlight">SVN</span> 

 帮助</span> 

</p> 

<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; color: #006666; background-color: #eeeeee;"> 

<span style="font-size: medium;"><strong><span class="highlight">svn</span> 

 help<br><span class="highlight">svn</span> 


help ci</strong> 

</span> 

</div> 

<p style="color: #006666;"><span style="font-size: medium;">——————————————————————————</span> 

</p> 

<p style="color: #006666;"><span style="font-size: medium;">以上是常用命令,下面写几个不经常用的</span> 

</p> 

<p style="color: #006666;"><span style="font-size: medium;">——————————————————————————</span> 

</p> 

<p style="color: #006666;"><span style="font-size: medium;"><strong>13、</strong> 

版 

本库下的文件和目录列表</span> 

</p> 

<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; color: #006666; background-color: #eeeeee;"> 

<span style="font-size: medium;"><strong><span class="highlight">svn</span> 

 list </strong> 

path<br>


显示path目录下的所有属于版本库的文件和
目录<br>
简写:<span class="highlight">svn</span>
ls</span>
</div>
<p style="color: #006666;"><span style="font-size: medium;"><strong>14、</strong>

建纳入版本控制下的新目录</span>
</p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; color: #006666; background-color: #eeeeee;">
<span style="font-size: medium;"><strong><span class="highlight">svn</span>
mkdir</strong>
: 创建纳入版本控制下的新目录。<br>
用法:
1、mkdir PATH…<br>
2、mkdir URL…<br>
创建版本控制的目录。<br>
1、每一个以工作副本 PATH
指定的目录,都会创建在本地端,并且加入新增<br>
调度,以待下一次的提交。<br>
2、每个以URL指定的目录,都会透过立即提交于仓库中创建。<br>

这两个情况下,所有的中间目录都必须事先存在。 </span>

</div> 

<p style="color: #006666;"><span style="font-size: medium;"><strong>15、</strong> 

恢 

复本地修改</span> 

</p> 

<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; color: #006666; background-color: #eeeeee;"> 

<span style="font-size: medium;"><strong><span class="highlight">svn</span> 

 revert</strong> 

: 恢复原始未改变的工作副本文件 

(恢复大部份的本地修改)。revert:<br> 

用法: revert PATH…<br> 

注意: 

本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复<br> 

被删除的目录 </span> 

</div> 

<p style="color: #006666;"><span style="font-size: medium;"><strong>16、</strong> 

代 

码库URL变更</span> 

</p> 

<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; color: #006666; background-color: #eeeeee;"> 

<span style="font-size: medium;"><strong><span class="highlight">svn</span> 

 switch (sw):</strong>


更新工作副本至不同的URL。<br>
用法:
1、switch URL [PATH]<br>
2、

switch –relocate FROM TO [PATH...] </span> 

<p><span style="font-size: medium;">1、更新你的工作副本,映射到一个新的URL,其行为跟“<span class="highlight">svn</span> 

 update”很像,也会将<br> 

服务器上文件与本地文件合并。这是将工作副本对应到同一仓库中某个分支或者标记的<br> 

方法。<br>


2、改写工

作副本的URL元数据,以反映单纯的URL上的改变。当仓库的根URL变动<br> 

(比如方案名或是主机名称变动),但是工作副本仍旧对映到同一仓库的同 

一目录时使用<br> 

这个命令更新工作副本与仓库的对应关系。</span> 

</p> 

</div> 

<p style="color: #006666;"><span style="font-size: medium;"><strong>17、</strong> 

解 

决冲突</span> 

</p> 

<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; color: #006666; background-color: #eeeeee;"> 

<span style="font-size: medium;"><strong><span class="highlight">svn</span> 

 resolved:</strong> 

 移除工作副本的目录或文件的“冲突”状态。<br> 

用 

法: resolved PATH…<br> 

注意: 本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的<br> 

相关文件,然后让 

PATH 可以再次提交。 </span> 

</div> 

<p style="color: #006666;"><span style="font-size: medium;"><strong>18、</strong> 

输 

出指定文件或URL的内容。</span> 

</p> 

<p> 

<span style="font-size: medium;"><span style="color: #006666;"><strong><span class="highlight">svn</span> 

 </strong> 

<strong>cat</strong> 


目标[@版本]…如果指定了版本,将从指定的版本开始查找。<br><span class="highlight">svn</span> 

 cat 

-r PREV filename > filename (PREV 是上一版本,也可以写具体版本号,这样输出结果是可以提交的)</span> 

</span> 

</p> 

<p></p>