版本控制器SVN的使用
前言:
偶然的机会见到了SVN这个东西,发现对写程序、管理程序相当有帮助,可以自动帮你备份不同阶段开发的程序,还可以比较不同版本间代码的异同,比起自己一个一个文件夹的备份要方便很多。下面讲一下怎么用,我是在本机做服务器和客户端两部分,因为我只自己用,当然也可以分开装在不同的机器上,供组内多个成员使用,恐怕后者是SVN的本意和优势吧,呵呵自己用也不错。一些开源软件项目的发布采用了SVN的方式,可以让其他人参与进来。
准备:
获取 Subversion 服务器程序,服务器端从http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=8100&expandFolder=8100&folderID=91下载,
获取TortoiseSVN 客户端程序,官网http://tortoisesvn.net/downloads,它们都可以从别的网站搜到。。
下载完按提示安装。主要的功能在右键菜单中有,如下图:
配置服务端:
在需要的地方建立存储文件夹(即是版本库Repository),如在D盘建立文件夹D:\svn。打开命令提示符,使用cd命令进入subversion的bin目录下,这里有它的所有命令,执行
svnadmin create D:\svn\repos
这样就在D:\svn下建立了版本库repos,里面会自动生成一些文件夹和文件。这一过程也可以使用TortoiseSVN图形化完成,略去。
建立好版本库后,就可以运行SVN服务了。同样在bin目录下,运行命令
svnserve.exe --daemon --root drive:\path_to_repository
这里,我们运行svnserve.exe --daemon --root D:\svn
这样svnserve就以守护进程方式运行,这样在手动终止之前不会退出。注意不要关闭命令行窗口,关闭窗口会把 svnserve 停止。
配置用户和权限:
用文本编辑器打开D:\svn\repos\conf目录,修改svnserve.conf:
将:
# password-db = passwd
改为:
password-db = passwd
即去掉前面的 # 注释符,注意前面不能有空格。
然后修改同目录的passwd文件,增加一个帐号:
将:
[users]
# harry = harryssecret
# sally = sallyssecret
增加帐号:
[users]
#harry = harryssecret
#sally = sallyssecret
usr = usr
项目初始化导入:
现在就可以将自己的项目导入建立的这个版本库,以后就由版本库管理我们的数据。任何改动都回被版本库记录下来,甚至我们自己丢失、改错数据时版本库也能帮我们找回数据。每提交一次版本号都会加1。
在项目文件夹上“右键 -> TortoiseSVN -> Import...” ,在弹出对话框的“URL of repository”输入“svn://localhost/repos/pro”。在“Import message”输入“初始化导入的工程xxx”作为注释。
点 OK 后要求输入帐号。我们在用户名和密码处都输入 usr 。完成后 pro中的内容全部导入到了 svn://localhost/svn/repos/pro。
回到目录中查看,在 D:\svn\repos 没有任何变化,连个 pro文件夹都没有建立,唯一的变化就是D:\svn\repos容量变大了。实际上我们源pro中的内容已经导入 repos 版本库了,源 pro文件夹可以删除了。需要注意的是,这一步操作可以完全在另一台安装了 TortoiseSVN 的客户机上进行。例如运行svnserve的主机的IP是172.16.166.50,则URL部分输入的内容就是“svn://172.16.166.50”。
客户端使用:
当然了我的客户端是和服务器端在一起的,不过并不影响方法的使用,我们用这个方法一样可以下载到别的机器上的代码。
1、取出(check out)
取出版本库到本地。在需要的位置建立一个空文件夹 E:\pro 。“右键 -> SVN Checkout”。在“URL of repository”中输入“svn://localhost/repos/pro”,输入用户名密码usr,开始下载,时间可能会很长,我下了一个东西花了20多分钟,完成后就得到了一份pro中内容的工作拷贝。取出的文件夹上面有个绿色的勾,如果你更改了里面任何一个文件的内容,文件夹就有一个红色的叹号标志,修改的文件也有叹号标志,提示你发生了更改。如下图:
2、提交(commit)
在工作拷贝中作出修改并提交:
在 pro工作拷贝中随便打开一个文件,作出修改,然后“右键 -> SVN Commit... ”。这样我们就把修改提交到了版本库,版本库根据情况存储我们提交的数据。
在修改过的文件上“右键 -> TortoiseSVN -> Show Log” ,可以看到对这个文件所有的提交。在不同的 revision 条目上“右键 -> Compare with working copy”,我们可以比较工作拷贝的文件和所选 revision 版本的区别,有比较友好的方式告诉你哪些部分发生了变化,是怎么变化的。
总结:
SVN版本控制器配置简单,功能齐全,如果和Apache一起使用,就可以在浏览器中以目录的形式显示,如下图示例: