用subversion进行版本控制
时间:2006-03-22 来源:xiaosuo
一直以来,在开放源代码的阵营中,CVS都是大家首选的版本控制系统,并且似乎也是唯一的版本控制系统。Subversion的出现改变了这种情况,它在一定程度上兼容CVS,也在一些地方对CVS进行了改进,使得它更加易于使用。Subversion的出现不只是给了用户另外一个选择,甚至有替代CVS的趋势,现在很多新近的项目也都是用它作为版本控制系统的。
Subversion也是以传统的CS(Client/Server)方式运作的,服务器端保存用户的代码仓库,并且只有导入的版本保存的是完整的代码,在以后的版本中只是保存修改的部分,并且自行更改版本号,以示区别。当用户需要更改源码时,首先用checkout命令取得最近的代码,(当然也可以取得特定版本的代码),然后在用户自己的代码副本上进行更改,如果确认自己的代码无误后,就可以用commit命令进行提交了。有了版本控制系统,我们就可以更加清楚的知道自己每次所更改的内容(只需要用diff -rM:N命令),也可以随时恢复到以前的版本,而不用每次都保存一个备份,浪费磁盘空间了。所以说,Subversion不仅对于多用户开发的团队是有积极意义的,并且对于个人用户也是大有裨益的。
赶紧体验吧!
1.安装Subversion,鉴于不同的Linux/Unix系统有不同的安装方式,这里也就不做介绍了。想必如果连软件都不会安装的人也不会用得到这个工具的。
2.建立一个代码仓库,你的所有代码都将保存在这个目录下面。
注:Subversion没有工程的概念,它只把这个目录作为一个虚拟的文件系统来进行管理,
所以你可以依照自己的习惯在这个目录下管理一个或者是多个工程。
3.导入工程到代码仓库:
现在假设已经有了一个称为exam的工程,工程的所有文件都保存在/data/exam目录下, 注意:工程目录下必须有以下三个目录:trunk,tags,branches,一般文件存放trunk
目录下。
现在我们把它纳入版本控制系统中,
4.上面的工作完成之后,我们就可以在另外的一个目录checkout出我们的工程了。
5.只后我们切换到我们刚刚checkout出的工程目录,做些修改(这里作为示例,添加了一 行),我们可以用diff命令看到自己的更改,
确认无误后,我们就可以提交了。
这里只是给出简单的示例,Subversion还有很多强大的功能,如果想了解更多,请参考以下的链接:
Version Control with Subversion
Subversion也是以传统的CS(Client/Server)方式运作的,服务器端保存用户的代码仓库,并且只有导入的版本保存的是完整的代码,在以后的版本中只是保存修改的部分,并且自行更改版本号,以示区别。当用户需要更改源码时,首先用checkout命令取得最近的代码,(当然也可以取得特定版本的代码),然后在用户自己的代码副本上进行更改,如果确认自己的代码无误后,就可以用commit命令进行提交了。有了版本控制系统,我们就可以更加清楚的知道自己每次所更改的内容(只需要用diff -rM:N命令),也可以随时恢复到以前的版本,而不用每次都保存一个备份,浪费磁盘空间了。所以说,Subversion不仅对于多用户开发的团队是有积极意义的,并且对于个人用户也是大有裨益的。
赶紧体验吧!
1.安装Subversion,鉴于不同的Linux/Unix系统有不同的安装方式,这里也就不做介绍了。想必如果连软件都不会安装的人也不会用得到这个工具的。
2.建立一个代码仓库,你的所有代码都将保存在这个目录下面。
[WORK] data # svnadmin create /data/svn/test [WORK] data # ls /data/svn/test/ conf dav db format hooks locks README.txt |
所以你可以依照自己的习惯在这个目录下管理一个或者是多个工程。
3.导入工程到代码仓库:
现在假设已经有了一个称为exam的工程,工程的所有文件都保存在/data/exam目录下, 注意:工程目录下必须有以下三个目录:trunk,tags,branches,一般文件存放trunk
目录下。
[WORK] data # ls -lR /data/exam/ /data/exam/: 总计 0 drwxr-xr-x 2 root root 48 03-22 20:14 branches drwxr-xr-x 2 root root 48 03-22 20:14 tags drwxr-xr-x 2 root root 120 03-22 20:14 trunk /data/exam/branches: 总计 0 /data/exam/tags: 总计 0 /data/exam/trunk: 总计 12 -rw-r--r-- 1 root root 101 03-22 19:54 Makefile -rw-r--r-- 1 root root 129 03-22 19:50 test.c -rw-r--r-- 1 root root 25 03-22 19:50 test.h |
[WORK] data # svn import /data/exam/ file:///data/svn/test/exam -m "A new test project" 新增 /data/exam/trunk 新增 /data/exam/trunk/test.c 新增 /data/exam/trunk/test.h 新增 /data/exam/trunk/Makefile 新增 /data/exam/branches 新增 /data/exam/tags 提交后的修订版为 1。 |
4.上面的工作完成之后,我们就可以在另外的一个目录checkout出我们的工程了。
[WORK] tmp # svn checkout file:///data/svn/test/exam/trunk exam A exam/test.c A exam/test.h A exam/Makefile 取出修订版 1。 [WORK] tmp # ls -lR exam/ exam/: 总计 12 -rw-r--r-- 1 root root 101 03-22 20:20 Makefile -rw-r--r-- 1 root root 129 03-22 20:20 test.c -rw-r--r-- 1 root root 25 03-22 20:20 test.h |
[WORK] exam # svn diff Index: test.c =================================================================== --- test.c (修订版 1) +++ test.c (工作拷贝) @@ -6,6 +6,7 @@ { printf("Hello world!\n"); printf("I am using %s\n", CS); + printf("I modified this.\n"); return 0; } |
[WORK] exam # svn ci -m "add a new line" 正在发送 test.c 传输文件数据. 提交后的修订版为 2。 |
这里只是给出简单的示例,Subversion还有很多强大的功能,如果想了解更多,请参考以下的链接:
Version Control with Subversion
相关阅读 更多 +