svn入门手册

Subversion入门手册


本文只介绍linux版本的subversion的简单用法,至于windowssubversion则比较傻瓜化,对照本文的命令自己一看就懂,就不另作介绍了。

另外由于windows下不能区分文件名的大小写而linux则可以区分,因此建议日常维护时最好使用linux版本的subversion,以避免大小写的问题而造成的冲突,windows下的svn可以作为辅助,因为它用来查看确实要方便一些。



  1. 如何从SVN服务器上下载源码(svncheckoutsvnexport

有两种方式(在之后的例子中,命令都用简写,除非该命令不支持简写):

svn checkout [-r version] URL [PATH]

例如:svn co -r 180http://192.168.0.2/svn/netmoon/software/test/home/test

这里的-r是指定版本号的意思,如果缺省则会下载最新版本号,当然PATH也可以缺省,缺省时则自动创建文件夹或者文件。


svn export[-r version] URL [PATH]

例如:svn export -r 180http://192.168.0.2/svn/netmoon/software/test/home/test

svn exportsvncheckout的使用方法一样,所不同的是,前者下载下来的是一个纯净的代码树,不包含任何的svn控制信息,而svnchechout下载的代码树是包含有svn版本控制信息的。


这里提供一个把包含svn版本信息的代码树转变为纯净代码的一个方法,就是批量删除.svn文件夹,可以用以下命令实现:

find PATH -type d -name ".svn" | xargs rm -fr


  1. 下载完代码,当然就要编码了(svncommit

编码完毕,我们上传代码就用这个命令:

svn commit [PATH]

例如:svn ci /home/test -m "Commit my changes, I am Ben, Thanks"

当然如果你缺省PATH的话,则会对当前目录进行提交动作。前提是你现在所处的目录,是在svn的版本控制之下。

注意,我们的服务器端进行了限制,每次对服务器提交更改都需要用-m参数带上日志消息,且长度不小于5.


  1. 如何更新本地的代码(svnupdate

svn update [-r version] PATH

例如:svn up -r 180 /home/test

或者:cd/home/test

svn up -r 180

注意,你的/home/test目录必须是受svn版本控制,例如它是从服务器上svnco下来的。


  1. 如何把一个纯净代码树添加到SVN服务器?(svn import

当然是用导入命令了:

svn import [PATH] URL

例如: svn import /home/testhttp://192.168.0.2/svn/netmoon/software/test-m "add test"

老规矩,缺省PATH则会导入当前目录。

再注意,我们的服务器端进行了限制,每次对服务器提交更改都需要用-m参数带上日志消息,且长度不小于5.


  1. 如何在工作目录下添加删除文件和文件夹

前提是你的工作目录是受svn版本控制的。

svn add PATH

例如:svn add /home/test/newDir

svn add /home/test/nerFile

注意这个PATH既可以是文件夹,也可以是文件,而且是已经存在的文件或文件夹,svnadd不能创建文件或文件夹,它只是把已经存在的打上一个svn的添加标记,待之后的svnci再提交到服务器。


svn delete PATH

例如:svn del /home/test/oldDir


在进行了本地的添加删除标记之后,下一步就是svnci了,它则会真正地去把本地的更改提交到服务器上,给服务器添加或者删除文件。


  1. 如何撤销工作目录中的改动?(svn revert

当我们做了很多测试工作,或者做了错误的改动,就可以使用它:

svn revert PATH

例如:svn revert /home/test/file

svn revert /home/test/ -R


PATH可以是文件,也可以是文件夹,注意可以使用-R进行递归操作,另外本条操作可以不需要网络。

当然,你要撤销改动,还有另一种方法,删除文件,再svnup一下,就还原了。


  1. 如何撤销服务器中的改动?

首先把服务器中之前的版本merge到本地上,然后再commit即可

svn merge -r NEW:OLD URL PATH

例如:svn merge -r 391:370http://192.168.0.2/svn/netmoon/software/testtest

svn ci -m "rollback the version from 391 to 370 on server fortest"

上例即可将服务器上的test目录从版本391回滚到版本370


  1. 如何解决冲突?

冲突的产生:

SVN服务器上有一个ABC.txt的文本文件,此时用户A想要修改该文本内容为“1234”,用户B想修改为“5678”,在本地做好修改后,两人都进行提交。

当然对于服务器来说,两人肯定是有先后的,第一个提交的(假设是A)肯定是会成功。而第二个呢?当然是失败。


冲突的解决:

在第二个人提交返回失败时,服务器会提示你,你的版本已过期,请更新。

好,那我们来svnup一下,成功,但是服务器会提示文件仍然有冲突。

打开本地的ABC.txt文件,我们会发现,里面有一些<<<< >>>>这样的符号,而符号中间,就是有冲突需要我们解决的。

在跟A进行商议之后,按照商议的结果对冲突部分的文件进行更改,或者也可以保留A1234,直接在它的后面换行,再加上“5678”OK,就这样改动。

最后别忘了:删除<<<< >>>>符号,取消冲突标记。

最后svnci,提交成功!



小提示:

如果你第一次执行svn命令连接到一个服务器的话,在你输入账号密码后,它会提醒你是否保存密码,我一般是保存,这样以后就不用再输了;

如果你想换个账号密码登陆,那么你需要删除linux系统中保存svn密码的文件svn.simple,在我的电脑上,它的目录是/home/Ben/.subversion/auth/svn.simple,至于你自己的,你就慢慢找了。

Windows系统下,右键弹出TortoiseSVN菜单Settings->SavedData->Authentication data,Clearok。当然,前提是你安装的是TortoiseSVN客户端。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值