【转】Linux下svn的常用工作流程
原文网址:http://www.cnblogs.com/cobbliu/archive/2011/07/08/2389011.html
上篇文章在ubuntu和redhat5.5上搭建好了svnserve环境,下面总结一下svn的具体使用流程。
服务器的搭建
1)建立代码库。
#svnadmin create /srv/svn/repos/myproject
2)修改配置文件svnserve.conf
anon_access = none
auth_access = write
password_db = passwd 其中passwd是一个文件,默认是当前文件夹下的passwd,如果要用其他的passwd需要制定路径名
3)配置passwd文件
添加用户名和密码: cobing = 123
4)启动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/myproject
checkout之后,svn会在你的当前目录下生成一个myproject的文件夹,这个文件夹就是你将来进行各种操作、与svn服务器交互的地方
3)之后就可以coding了,但是要注意:每次对myproject下文件的添加、删除、移动、复制操作都要告诉svn:
a, 增加文件、目录 #svn add 文件或目录名
b,删除文件、目录 #svn delete 文件或目录名
c, 拷贝文件、目录 #svn copy 条目名1 条目名2
d, 拷贝条目并删除原条目 #svn move 条目名1 条目名2
svn项目本身已经存在的文件只需要对其修改即可,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下的冲突是当前时刻与服务器数据冲突。
以上操作均在redhat5.5上测试通过。
svn创建分支
有时候,我们在开发主分支trunk外创建另外的分支,这样可以保证主分支和另外的分支同时工作,当分支的任务完成之后就可以将分支合并到主分支上,继续前进。svn中的分支要创建在branches目录中。
1,创建分支时首先要复制主分支的一个版本到新分支中:
svn cp http://svn.ss.com/YStatTST/trunk http://svn.ss.com/YStatTST/branches/uvList2uvTree -m "we modified ..."
2,然后下载分支uvList2uvTree到你的目录下
svn co http://svn.ss.com/YStatTST/branches/uvList2uvTree
3,修改你的代码
4, 提交你的代码到分支uvList2uvTree上
svn commit -m "xxx"
svn删除分支
如果不小心创建错了一个分支,或者某个分支你不想用了,就可以删除分支
1, svn delete http://svn.ss.com/YStatTST/branches/uvList2uvTree -m "this comment must be pretty pretty long"
注意,日志必须足够长,如果这个日志信息不够20个字符的话,不能删掉分支呃~
svn分支对比
如果你想看看你的新分支跟其他分支(包括主分支)的区别,那就用svn diff吧
svn diff http://svn.ss.com/YStatTST/branches/uvList2uvTree http://svn.ss.com/YStatTST/trunk > filename.diff
【转】Linux下svn的常用工作流程的更多相关文章
- linux下svn的常用代码【转】
转自:http://www.2cto.com/os/201205/130192.html 1.将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例 ...
- linux下svn命令常用操作
1.将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain 简写:s ...
- linux下svn常用指令
windows下的TortoiseSVN是资源管理器的一个插件,以覆盖图标表示文件状态,几乎所以命令都有图形界面支持,比较好用,这里就不多说.主要说说linux下svn的使用,因为linux下大部分的 ...
- [转载]linux下svn常用指令
一下内容转载于:http://blog.chinaunix.net/space.php?uid=22976768&do=blog&id=1640924.这个总结的很好~ windows ...
- Linux下svn常用指令【转】
转自:http://blog.csdn.net/myarrow/article/details/8110858 Windows下的TortoiseSVN是资源管理器的一个插件,以覆盖图标表示文件状态, ...
- Linux下SVN命令
一下内容转载于:http://blog.chinaunix.net/space.php?uid=22976768&do=blog&id=1640924.这个总结的很好~ windows ...
- linux下svn版本控制的常用命令大全
1.将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain 简写:s ...
- 转载-Linux下svn搭建配置流程
Linux下svn搭建配置流程 一. 源文件编译安装.源文件共两个,为: 1. 下载subversion源文件 subversion-1.6.1.tar.gz http://d136 ...
- linux下svn命令使用大全
最近经常使用svn进行代码管理,这些命令老是记不住,得经常上网查,终于找了一个linux下svn命令使用大全:1.将文件checkout到本地目录 svn checkout path(path是服务器 ...
随机推荐
- html学习的一些问题
1,什么是 W3C标准?w3c 标准不是一个标准,而是一系列标准,包括:结构标准,表现标准,动作标准. 2,内链元素和块状元素的区别内链元素允许与其他内链元素位于同一行,没有宽和高,如果想设置宽和搞, ...
- 《转载》CSS中的三种样式来源:创作人员、读者和用户代理
CSS中的样式一共有三种来源:创作人员.读者和用户代理,来源的不同会影响到样式的层叠方式,很多第一次学习CSS的朋友,对这三种来源可能会存在一些困惑,下面我写一下自己的理解,若有错误的地方还请指正. ...
- JDBC、Hibernate、Mybaites处理数据的流程及对DAO的理解
以查询一个用户信息(id,name)为例: JDBC 1. 获取一个connection 2. 生成一个statement 3. 拼接SQL语句 4. 查询对象,获取结果集(假设已经找到我们需要的对象 ...
- android 微信分享没反应问题总结
一.废话 我必须说我再这个上面吃了很多的亏,所以希望有人不跟我一样吃亏.因为我本身不够仔细的原因,所以我希望能够做一些总结.---废话讲完. 这个文章已经过时了.是几年前写的.http://www. ...
- spring quartz 多次调用
背景:公司项目有一个定时任务,每月1号0点执行,用到了spring的定时任务.发下定时任务调用的方法执行了俩次.测试部署的客户现场不会有问题 (测试的server.xml不会变化,除非本身提供的tom ...
- ZOJ 2432 Greatest Common Increasing Subsequence(最长公共上升子序列+路径打印)
Greatest Common Increasing Subsequence 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problem ...
- [转] 《高性能HTML5》读后整理的Web性能优化内容
读后感 先说说<高性能HTML5>这本书的读后感吧,个人觉得这本书前两章跟书的标题完全搭不上关系,或者说只能算是讲解了“高性能”这三个字,HTML5完全不见踪影.个人觉得作者应该首先把HT ...
- iOS push全方位解析(二)【译文】"——生成OpenSSL证书,Provisioning Profile
这是一篇来自raywenderlich的教程,内容翔实!结构简单透彻.讲解循序渐进.文章质量上乘!是一篇难的的博文!使用半瓶的英语水平翻译了一下: 1.[iOS push全方位解析](一) push的 ...
- C#中标准Dispose模式的实现
http://www.cnblogs.com/luminji/archive/2011/03/29/1997812.html 需要明确一下C#程序(或者说.NET)中的资源.简单的说来,C#中的每一个 ...
- .Net C/S系统开发框架(楚楚原创)
C/S系统开发框架-企业版 V4.0 (Enterprise Edition) 简介: http://www.csframework.com/cs-framework-4.0.htm 视频下载: 百度 ...