linux下svn的用法小结

来源:互联网 发布:js继承例子 编辑:程序博客网 时间:2024/05/22 03:10
0.在使用svn进行某个项目代码版本管理时,这个项目有三种状态:
    (1)svn服务器中的状态
    (2)co到本地的状态(其中.svn隐藏目录中保存了很多版本控制的元信息)
    (3)工作目录(working copy)中的状态

1.svn diff
svn diff   filename   ——比较当前工作目录中的filename文件与base版本(就是最新co的版本或者最新update的版本)的差别
svn diff           ——比较当前工作目录中的所有文件与base版本的差别
svn diff -r head      ——比较当前工作目录中的文件和版本库(也就是svn服务器)中最新版本的差别,或svn diff -r HEAD
svn diff -r reversion1   ——比较当前工作目录中的文件和版本库中指定的reversion1的差别
svn diff -r reversion1:reversion2        ——比较版本号为reversion1和版本号为reversion2的两个版本的差别
svn diff -c reversion1 filename  --比较filename的reversion1版本和reversion1-1版本的差别
备注,svn diff不需要连接网络,是工作目录和.svn中的内容进行比较。

2.svn log
svn log                   ——查看当前工作目录的base版本的操作log
svn log filename     ——查看当前工作目录中的filename文件的base版本的操作log
svn log -r reversion1  ——查看当前工作目录中的指定的reversion1版本的操作log
svn log -r reversion1 -v    ——可以查看一些附加信息,比如在reversion1的时候,add了什么文件,modify了什么文件,delete了什么文件等等
注意,svn log -r head 好像用不了
备注:svn log不需要连接网络,文件的提交记录存储在.svn目录中。

3.svn up
svn up filename -r reversion1  ——将本地文件更新到指定的版本

备注,
A)与其它版本控制系统不同,Subversion 的版本号是针对整个目录树(应该是一个项目)的,而不是单个文件。每一个版本号代表了一次提交后版本库整个目录树(应该是一个项目)的特定状态,或者理解为版本 N 代表版本库已经经过了 N 次提交。需要注意的是,一个文件的版本 N 和 M 并不表示它必定不同。
B)在使用svn diff没有发现差别时,并不代表就和版本库中最新的版本没有diff。因为执行svn diff的时候是用工作目录中文件信息和本地.svn中保持的最新状态的比较。同理svn log也是这个原理。但是可以通过指定的版本号 reversion1的形式,来查看本地.svn还没有维护的版本库信息。
C)svn的目录结构说明
以https://svn.yinke.com/app/xiha/trunk/alpha/beta/yama.html为例,
https://svn.yinke.com是域名
/app/xiha就是产品名
/trunk这个字段可以是trunk/branches/tags
/alpha/beta就是项目的目录结构
yama.html就是具体的文件名

4.svn常用的操作有:
svn co   签出svn版本库中内容。如果后面带有PATH参数,那么会将签出的文件放到PATH下。如果没有PATH参数,那么会放到以URL的basename为名称的目录下。例如svn co URL wahaha
svn up   更新工作目录中到指定版本,默认为HEAD最新版本
svn add  向svn版本库中增加一个文件
svn del  删除svn版本库中的一个文件
svn rename 重名名svn版本库中的一个文件
svn ci   想svn版本库中提交工作目录中的修改
svn revert 在本地修改被svn ci之前,进行回滚操作。也就是回滚工作目录的某个文件的编辑
svn log  查看一个文件或目录的svn提交历史日志
svn cp   创建branches或tags
svn cleanup 清除失败的事务
svn status 查看当前工作目录的变更状态
svn resolved 当解决了冲突了之后,要通知svn解决了冲突
svn list  列出一个路径下的所有目录
svn blame filename 显示特定文件和URL的作者和修订版本信息,可以显示每一行源代码的作者和修订版本
svn mkdir wahaha 创建svn中新目录,如果wahaha是一个url,那么会在svn中创建一个新目录,且直接commit到svn了

备注:svn co和svn up都可以加上-r参数,checkout或者update到指定的revision

5.关于svn中一些属性的操作
(1)svn propset 设置目录、文件或版本的属性。
举例来说:
svn propset svn:executable on filename   #为filename文件设置有可执行权限,例如当我们往svn提交的文件忘赋x权限后,但是使用chmod +x也不太好使,这时我们可以使用该命令来给文件加可执行权限
svn propset svn:ignore "filename" . #将filename文件设置成忽略文件,即之后在本地work copy中ci时,会忽略ci这些文件
svn propset svn:mime-type image/jpeg filename.jpg  #设置文件filename.jpg的MIME类型为image/jpeg
(2)svn propdel 删除目录、文件或版本的属性
(3)svn propget 显示目录、文件或版本属性的值
(4)svn proplist 列出目录、文件或版本的属性
(5)svn propedit 使用外部编辑器编辑属性
参考学习资料来源于:http://ztgame.shenyu.me/env/svn/svn-ignore.html

6.svn切换账户的方法
在svn相关命令下强制加上--username 和--password选项。例如,
svn up --username zhangsan
0 0
原创粉丝点击