jasmine214--love

只有当你的内心总是充满快乐、美好的愿望和宁静时,你才能拥有强壮的体魄和明朗、快乐或者宁静的面容。
posts - 731, comments - 60, trackbacks - 0, articles - 0

SVN使用培训-备课笔记 by kiki

Posted on 2011-04-07 17:19 幻海蓝梦 阅读(613) 评论(0)  编辑  收藏 所属分类: 版本管理配置管理

SVN 备课笔记(2011.4.7-kiki

*******************************************************************************

好的,我们现在开始,为了照顾新员工,我先介绍一下接下来如何进行我们的培训内容。

首先,我会先带大家过一遍SVN 的常用命令,然后,我们实际演示一下SVN在开发过程中的实际使用周期及中间会遇到什么问题。

*******************************************************************************

首先,我们了解一下什么是Subversion,以及Subversion的历史由来。

SVN 是一个自由/开源的版本控制系统,SVN 让你的文件和目录可以超越时空,允许你的数据恢复到早期版本,可以检查所有的历史。所以我们将SVN理解成一个时间机器。

现在我们知道SVN是一个版本控制系统,(有一些版本控制系统也是SCM系统,可以用来管理源码树,并且具备很多与软件开发有关的特性-比如对编程语言的支持或者提供程序构建工具,)不过SVN不是这样的系统,大家有兴趣可以了解下其他的版本管理工具。

*******************************************************************************

这就是Subversion的产生历史,从2000年开始,2001年完成第一个完整版本,到现在有1.6版了。

*******************************************************************************

Subversion的架构,我们可以看到:可以有3中方式来访问SVN库。我们现在最多使用的是通过Apache的这种URL的方式来访问。

*******************************************************************************

SVN它有一个与大多数版本控制工具不一样的特点:在SVN中,修订号是针对代码库中所有对象的,包括:目录/子目录/文件。修订号的实际意义是对代码库的第几次提交。

*******************************************************************************

接下来,我们看一下SVN客户端经常使用的一些命令。下面我会给大家演示。

测试库:/home/kikitest

访问路径:http://10.58.100.247/kikitest/

演示服务器:10.58.100.198

 

1.       svn co s204代码 1分钟)(1-4518

2.       svn info ---------查看代码库的属性信息。

3.       svn st--------查看文件的修改信息(M,U,C,?,?代表这个文件是不受控的。

4.       svn log –r 100  -v --------查看代码库的日志信息,-r,-v,两个参数show出某个版本的时候具体修改了哪些文件。

*******************************************************************************

5.       svn cp MakeFile makefile1---------

6.       svn st -----------会发现本地的工作拷贝WC中多了一个文件makefile1,前面的/代表这个文件目前是不受控的。

7.       svn ci ---------提交

8.       svn delete------------删除一个文件(是库中的文件,状态不在中间状态如M,C),提交之后库中文件将真正被删除。

9.       svn revert testfile2---------我们试图修改一个文件,会看到状态变成M,在testfile2修改之后,我们考虑将他进行提交,如果发现修改很多是有问题的话,可以使用svn revert 取消这个文件的所有更改。

10.   svn blame Makefile ----------我们可以查看某个文件的修改历史,可以具体到每行代码的修订号和修改者。

 *******************************************************************************

11.   svn cat Makefile –r 400 ---------查看某个版本的文件内容。在我们的WC中,一个文件只存在一个修订号,想要看其他任一修订号的某个文件,可以用svn cat 加上版本号即可。

12.   svn diff Makefile –r 2298:3322-----------查看一个文件在两个修订号之间的差异。

*******************************************************************************

13.   svn co s204 –r 4500---------co s204代码

14.   svn info --------------我们看到是4500版本的代码了

15.   svn up –r 4518---------想更新到4518版本代码,从这里我们看到从4500-4518,变化过程中修改了一些文件,删除过一些文件,同事新增了一些文件,最终产生了4518版本的代码。

*******************************************************************************

16.   svn export url 目录名-----------从某个其他库的源码导出一个干净的目录树。

17.   svn import /目录名  目的地/库名--------导入到库中。

18.   svn mv bcm963xx trunk/----------搬移目录内容

19.   svn copy  url1  url2 –m “………” ---------创建新分支,可以加版本号-r,linux下的WC目录中就可以执行创建分支了。

*******************************************************************************

20.   处理冲突的方法:

下面我说一个,通用的解决冲突的办法,还不会覆盖代码,以test.php为例

1,修改文件后提交不了,大多是因为版本不一致造成的。更新一下,不产生冲突的情况,就可以提交了。

2,更新文件,如果出现冲突的情况,打开冲突文件test.php会看到类似以下的内容

<<<<<<<<<<<<<<<
asdfadfadfadf
11111111111111
=======
asdfadfadfadf
111111111111111
222222222222
>>>>>>>>>>>>>>>>

结合别人修改的内容和自己修改的内容,然后把文件中 <<<<<,=====,>>>>>>>这类冲突符号去掉。去掉后,还是不 能提交的,为什么?因为冲突时会产生三个文件,有这三个文件存在肯定提交不了。

客户端用的tortoisesvn(这个估计程序员用的最多),冲突时会多产生,三个文件

test.php.mine   是冲突前自己的文件

test.php.版本号   是冲突前本地的版本文件

test.php.服务器的版本号   是冲突后服务器版本文件

提交的时候,把这三个文件删除掉就可以提交了。

3,产生覆盖的原因。

a),在修改冲突文件test.php时,把别人代码都删除掉了,只留下了自己的代码。这样就会产生覆盖了。

b),把test.php.mine中的内容直接copytest.php文件,这样也会产生代码覆盖。

上面二种情况都是我亲眼看到新手这样操作的,要避免这二种操作方法。

 

21.   合并

svn merge test.php –r 200:205 (将版本200205之间的差异合并到当前文件,通常会产生冲突,需要处理一下。)

End.


只有注册用户登录后才能发表评论。


网站导航: