SVN常用命令

记一个完整的使用流程:

一、将本地代码加入svn库

svn import test svn://192.168.146.128/myproject

注意:当初在svn代码管理库中建立项目的路径是/srv/svn/repos/myproject,我们启动svn服务器指定的根目录是/srv/svn/repos,所以我们现在导入代码的路径是/myproject,而不是完整的/srv/svn/repos/myproject路径。这个地方很容易出错,多家防范,我掉进去摸索了好久才出来。


二、从svn库中下载代码

代码导入SVN版本管理库中以后,其他用户就可以从svn库下载代码进行修改了,使用svn  checkout /co来完成

svn checkout svn://192.168.146.128/myproject
或者简写:
svn co svn://192.168.146.128/myproject

checkout之后,svn会在你的当前目录下生成一个myproject的文件夹,这个文件夹就是你将来进行各种操作、与svn服务器交互的地方


三、对代码进行版本管理操作

每次对myproject下文件的添加、删除、移动、复制操作都要告诉svn:

1、增加文件、目录
svn add 文件或目录名

2、删除文件、目录           
svn delete 文件或目录名

3、拷贝文件、目录
svn copy 条目名1 条目名2

4、移动文件、目录
svn move 条目名1 条目名2
例:添加新文件
svn add test.php   //添加test.php 
svn commit -m "添加我的测试用test.php" test.php
svn add *.php      // 添加当前目录下所有的php文件
svn commit -m "添加我的测试用全部php文件" *.php

注:svn add告诉SVN服务器要添加文件了,但最终还要用svn commint -m真实的上传上去!


四、提交代码

代码在提交前还有一些工作要做:

1、检查修改
当你完成修改,提交版本库前,还需要检查一下做过什么修改。通过提交前的检查,你可以整理一份精确的日志信息,你也可以发现你不小心修改的文件,给了你一次恢复修改的机会。此外,这是一个审查和仔细察看修改的好机会,你可通过命令svn status浏览所做的修改,通过svn diff检查修改的详细信息。

svn status/svn st #会检测你做的所有文件和目录的修改

状态标志:
    “ ” 无修改
    “A” 增加
    “C” 冲突
    “D” 删除
    “I” 忽略
    “M” 改变
    “R” 替换
    “X” 未纳入版本控制的目录,被外部引用的目录所创建
    “?” 未纳入版本控制
    “!” 该项目已遗失(被非 svn 命令删除)或不完整
    “~” 版本控制下的项目与其它类型的项目重名


svn diff #会精确地检测到你做的修改

2、取消本地修改
假定我们在看svn diff的输出,你发现对某个文件的所有修改都是错误的,或许你根本不应该修改这个文件,或者是从开头重新修改会更加容易。

svn revert 文件名

3、手动解决冲突,把有冲突的文件手动改过来

4、接着用svn  update查看本地版本与服务器版本有什么区别:

svn update
这时有三个标示:
    U: 表示本地没有修改
    G: 表示本地已经修改,但是与版本库没有重叠的地方,可以合并
    C: 服务器上的改动同本地的改动冲突了,需要手动解决冲突或者用svn  revert   放弃本地修改


5、At Last,您的修改结束了,并且与服务器上的版本没有冲突,那就提交吧!

svn commit -m "LOGMSG"
或者简写:
svn ci -m "LOGMSG"

五、svn  update 和 svn status 的区别

不知道你们看到这里有没有疑惑?是不是在想svn  update 和 svn status 到底什么区别,不都是检验修改么?仔细翻翻svn用户手册就会发现,svn  revert  , svn  status 和svn diff这三个命令在没有连接svn服务器的时候也可以进行,为什么呢?

细心的用户或者在windows上用过svn的用户就会发现,当前工作的svn文件夹里有一个./svn的文件,官方文档是这样说的:“svn通过在.svn管理区域使用原始的版本缓存来做到这一点,这使得报告和恢复本地修改而不必访问网络,这个缓存(叫做“text-base”)也允许svn可以根据原始版本生成一个压缩的增量(“区别”) 提交——即使你有个非常快的网络。使用这个缓存有极大的好处,只向服务器提交修改的部分而不是整个文件”。

也许你已经明白了,是的,svn status是本地修改与.svn中的数据对比,而svn  update是本地修改与服务器数据对比。两者的冲突是不一样的,svn status下的冲突是你跟之前checkout时服务器数据冲突,svn  update下的冲突是当前时刻与服务器数据冲突。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值