这两篇文章(http://www.linuxidc.com/Linux/2011-08/40592.htm 与 http://www.linuxidc.com/Linux/2011-08/40593.htm)在Ubuntu和RedHat 5.5上搭建好了svnserve环境,下面总结一下svn的具体使用流程。服务器的搭建1)建立代码库。#svnadmin create /srv/svn/repos/myproject2)修改配置文件svnserve.confanon_access = noneauth_access = writepassword_db = passwd 其中passwd是一个文件,默认是当前文件夹下的passwd,如果要用其他的passwd需要制定路径名3)配置passwd文件添加用户名和密码: cobing = 1234)启动svnserve服务#svnserve -d -T -r /srv/svn/repos-d 表示把进程svnserve作为守护进程在后台运行-T 表示用多线程的方式处理数据-r 可以有效地改变文件系统的根位置,客户端可以使用去掉前半部分的路径,留下的要短一些的要想让svnserve在系统启动时自动启动,需要把它添加到/etc/rc.local文件中客户端1)将本地代码导入到svn代码库中#svn import test svn://192.168.146.128/myproject注意:当初建立代码库的路径时/srv/svn/repos/myproject,我们启动svn服务器指定的根目录是/srv/svn/repos,而现在客户导入代码的目录是/myproject。因为svnserve指定了根目录,所以用户在访问192.168.146.128是就相当于在访问服务器的/srv/svn/repos目录,所以这个时候我们只需要指出myproject目录即可。这个地方很容易出错,多家防范,我掉进去摸索了好久才出来。2)代码导入SVN代码库中以后,其他用户就可以从代码库下载代码进行修改了,这个操作由svn checkout 完成# svn checkout svn://192.168.146.128/myprojectcheckout之后,svn会在你的当前目录下生成一个myproject的文件夹,这个文件夹就是你将来进行各种操作、与svn服务器交互的地方3)之后就可以coding了,但是要注意:每次对myproject下文件的添加、删除、移动、复制操作都要告诉svn:a, 增加文件、目录 #svn add 文件或目录名b,删除文件、目录 #svn delete 文件或目录名c, 拷贝文件、目录 #svn copy 条目名1 条目名2d, 拷贝条目并删除原条目 #svn move 条目名1 条目名2svn项目本身已经存在的文件只需要对其修改即可,svn会自动检测到修改。4)修改完文件后不能马上提交,还有很多工作要做:a, 检验修改当你完成修改,你需要提交他们到版本库,但是在此之前,检查一下做过什么修改是个好主意,通过提交前的检查,你可以整理一份精确的日志信息,你也可以发现你不小心修改的文件,给了你一次恢复修改的机会。此外,这是一个审查和仔细察看修改的好机会,你可通过命令svn status浏览所做的修改,通过svn diff检查修改的详细信息。# svn status 会检测你做的所有文件和目录的修改A item 预定加入到版本库的文件、目录或符号链的item。C item 文件item发生冲突,在从服务器更新时与本地版本发生交迭,在你提交到版本库前,必须手工的解决冲突。D item 文件、目录或是符号链item预定从版本库中删除。M item 文件item的内容被修改了。#svn diff 会精确地检测到你做的修改b, 取消本地修改假定我们在看svn diff的输出,你发现对某个文件的所有修改都是错误的,或许你根本不应该修改这个文件,或者是从开头重新修改会更加容易。#svn revert 文件名c,手动解决冲突,把由冲突的文件手动改过来d, 接着用svn update查看本地版本与服务器版本由什么区别:#svn update这时有三个标示:U : 表示本地没有修改G: 表示本地已经修改,但是与版本库没有重叠的地方,可以合并C: 服务器上的改动同本地的改动冲突了,需要手动解决冲突或者用svn revert 放弃本地修改4)At Last,您的修改结束了,并且与服务器上的版本没有冲突,那就提交吧!#svn commit -m "LOGMSG"不知道你们看到这里有没有疑惑?是不是在想svn update 和 svn status 到底什么区别,不都是检验修改么?仔细翻翻svn用户手册就会发现,svn revert , svn status 和svn diff这三个命令在没有连接svn服务器的时候也可以进行,为什么呢?细心的用户或者在windows上用过svn的用户就会发现,当前工作的svn文件夹里有一个./svn的文件,官方文档是这样说的“Subversion通过在.svn管理区域使用原始的版本缓存来做到这一点,这使得报告和恢复本地修改而不必访问网络,这个缓存(叫做“text-base”)也允许Subversion可以根据原始版本生成一个压缩的增量(“区别”) 提交—即使你有个非常快的网络,有这样一个缓存有极大的好处,只向服务器提交修改的部分而不是整个文件”。也许你已经明白了,是的,svn status是本地修改与.svn中的数据对比,而svn update是本地修改与服务器数据对比。两者的冲突是不一样的,svn status下的冲突是你跟之前checkout时服务器数据冲突,svn update下的冲突是当前时刻与服务器数据冲突。以上操作均在redhat 5.5上测试通过。更高级的操作请查看用户手册,多看看,有益无害。Linux 下一个重量级的配置命令:CDPATH全局变量的配置CentOS下快速配置VNC Server相关资讯 svn svnserve
- Ubuntu下Apache+SVN+submin实现WEB (07月22日)
- CentOS6.4 搭建SVN管理服务 (05月02日)
- CentOS6.5安装SVN & 可视化管理工 (12/19/2015 13:50:24)
| - 基于SVN的项目管理——集中与分散 (05月16日)
- ReadHat Linux 5.5 安装SVN (01月11日)
- Apache Subversion 1.9.3/1.8.15 (12/16/2015 13:36:43)
|
本文评论 查看全部评论 (0)