由于不会svn命令行方式,总感觉少了点什么,最近正在看如何通过命令行来操作代码库,在这里记录下学习笔记,有的部分可能不正确,帮忙指正哈.
从svn help中我们能看到,svn 命令不是很多,常用的就这些
如果我们自己要联系这些命令的用法,最好先自己搭建一个svn服务器,如何搭建其实很简单,网上也有很多教程,我是在window上搭建的.
比如说:http://www.56.com/u21/v_OTM4Mzk1MTQ.html点击打开链接 这些视频教程.
如果不自己搭建的话,也可以使用网上的资源,比如:www.svnchina.com
资源下载可以在这里下载.
当我们搭建好svn服务器后,就可以自己上传工程代码,练习这些命令了.下面来逐一解释一下命令,其中更多关于Linux命令参数可以参考
http://www.linuxso.com/网站解释
这些命令可以带很多参数,这里值列出了常用的几个,其他的可以参考:http://www.lampblog.net http://www.subversion.org.cn/
先使用mkdir创建一个工程文件目录
1.mkdir 创建目录
该命令创建制定的目录名,要求创建目录的用户在当前目录有写权限,并且没有同名的目录,
可带参数 [-m] [-p]
-m :对创建的目录设置权限
-p: 可以是一个路径名,如果路径中有不存在目录,会自动创建,适用于一次创建多级目录
创建的目录可以使用rm删除
2.rm 删除文件或目录
该命令删除指定目录
可带参数: [-d] [-f] [-i] [-r] [-v]
-d: 删除可能仍有数据的目录 (超级用户)
-f: 略过不存在的文件,不提示信息
-i: 删除时提示确认
-r: 删除目录下所有的目录层
-v: 显示删除过程的信息
从代码库里检出代码,就是第一次下载所有的代码
3.checkout (co) 检出代码
可带参数: [--username --password]
例如: svn checkout svn://127.0.0.1/
svncheckout svn://127.0.0.1/ --username yourUsername --passwordyourPassword
更新代码
4.update (up) 更新
可带参数: [-r]
-r: 修正版本 将某个或多个文件修正到某个版本
例如: svn update //正常更新
svnupdate -r 1 test.txt // 将test,txt文件修正到 版本1
修改代码后提交修改, 提交之前需要先 update
5.commit (ci) 提交
必带参数 [-m]
-m: 备注信息
例如: svn commit -m "这里是备注"
当你新建文件或添加资源文件后,需要将新文件纳入版本控制中.
6. add 添加
可带参数 [--non-recursive]
--non-recursive 只添加目录而不添加目录内容
例如 svn add test.txt
svnadd --non-recursive test // test目录 不包含其中的文件
如果要添加所有没有添加的文件可以使用
svn st | awk '{if ( $1 == "?") { print $2}}' | xargs svn add // 在http://blog.csdn.net/spare_h/article/details/6677435中给出的
需要删除文件的时候可以使用delete
7. delete 删除文件或目录
可选参数 [--force] [-m] 等.
--force 强制删除
-m 添加备注信息
例如 svndelete test.txt
如果需要不带版本控制的文件使用export
8. export 产生一个无版本控制的目录树副本
可选参数: [--force] 强制操作
例如 svn export svn://127.0.0.1/
svnexport --force svn://127.0.0.1/
拷贝文件
9.copy(cp) 拷贝工作拷贝的一个文件或目录到版本库 (从源地址 到 目的地址)
例如: svn copy file///var/svn/repos/test/far-awaynear-here
当多人操作一个文件的时候有可能会有冲突,首先看两个版本之前的差距
比较两个版本间的差异
10.diff(di) 比较不同
可带参数 [-r] 用于比较不同版本
例如: svn diff //比较当前本地工作拷贝和代码库中的区别
svn diff -r reversion // 比较当前本地工作拷贝和某个版本的区别
svn diff -r aReversion:bReversion // 比较a和b两个版本间的区别
显示提交日志信息
11.log 显示提交日志信息
默认为你当前目录的路径,如果没有指定URL,默认打出当前目录下所有文件和目录的日志信息.
你也可以指定URL,只打印这个URL上的日志信息
例如: svn log
svnlog test.txt
列举文件
12. ls 列出当前目录下的所有文件和目录
例如: ls myFolder
未完待续...