linux下svn使用指南

 1.1 服务器端配置说明
1.1.3 配置用户和权限
1.1.4 导入工程到仓库中
1.2 客户端操作指南及使用规范
1.2.1 检出工作拷贝
1.2.2 svn update 更新别人做的更改
1.2.2.1 svn update 获取最新版本
1.2.2.2 svn update-r 获取特定的版本
1.2.3 svn st 查看文件状态信息
1.2.4 svn log 查看log信息
1.2.5 svn diff 查看文件修改详情
1.2.6 svn list 显示版本库的文件列表
1.2.8 svn add 增加目录或者文件
1.2.9 svn delete 删除目录或者文件
1.2.10 svn revert 取消本地修改
1.2.11 svn commit 提交本地做的更改
1.2.12 文件更新,提交时的冲突处理
1.2.13 打标签
1.2.14 清除缓存的认证信息,重新输入用户名和密码
=================
1.1 服务器端配置说明
1.1.1 ubuntu-8.10 svn服务器安装
sudo apt-get install subversion
1.1.2 建立版本库(Repository)
运行Subversion服务器需要首先要建立一个版本库(Repository),可以看作服务器上存放数据的数据库,在安装了Subversion服务器之后,可以直接运行
cd path_to_svn_root例如:/home/svn
svnadmin create --fs-type=fsfssmartphone
--fs-type 指定仓库类型,可以为fsfs或bdb 如果没有指定默认创建为fsfs类型smartphone为仓库名称
1.1.3 配置用户和权限
修改 path_to_svn_repos/conf/svnserve.conf 文件,打开下面配置项
---------------------------
#anon-access = read
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
anon-access 应设置等于 none ,否则没有log信息
修改path_to_svn_repos/conf/passwd 文件,添加用户和密码
----------------------------
[users]
wanghui=wanghui

1.1.4 导入工程到仓库中
svn importsmartphone/svn://192.168.2.148/smartphone
1.1.5 运行svn服务器
svnserve -d -rpath_to_svn_root例如:/home/svn
1.2 客户端操作指南及使用规范
以我们服务器上 android 源代码为例,介绍svn常用操作。
1.2.1 检出工作拷贝
检出工作拷贝到 ~/svn/cupcake-jiangping
使用svn co url
cd ~/svn
svn co svn://192.168.2.148/smartphone/td0901/trunk/cupcake-jianpingcupcake-jianping
1.2.2 svn update 更新别人做的更改
1.2.2.1 svn update 获取最新版本
svn update cupcake-jiangping
或者进入目录更新
cd cupcake-jiangping
svn update
如果负责的应用与系统的关联性不是很大,通常不建议频繁进行更新。
1.2.2.2 svn update-r 获取特定的版本
直接在某目录下执行 svn update 获取当前目录下所有文件的最新版本,如果我们只需要获取某个文件或者目录的特定版本,可以通过-r 和 名称进行指定:
svn update –r 5cupcake-jianping/packages/apps/Phone/src/com/android/phone/xxxx.java
1.2.3 svn st 查看文件状态信息
Mcupcake-jianping/packages/apps/Phone/src/com/android/phone/xxxx.java
?cupcake-jianping/packages/apps/Phone/src/com/android/phone/yyyy.java
M表明文件已经有修改
? 表明文件没有受版本控制
1.2.4 svn log 查看log信息
svn log -r  查看所有版本的log信息
svn log -r 5  查看某一版本的log信息
svn log -r 5:19 查看某区间一系列版本的log信息
如果要查看log的详细信息可以加上 –v 选项,如:
svn log –v -r 5
1.2.5 svn diff 查看文件修改详情
显示单个文件或者某目录下所有文件的修改详情
svn diff有三种不同的用法
1. 检查本地修改
2. 比较工作拷贝与版本库
3. 比较版本库与版本库
不使用任何参数调用时,svn diff将会比较你的工作文件与缓存在.svn的“原始”拷贝,如:
svn diff cupcake-jianping/packages/apps/Phone
svn diff cupcake-jianping/packages/apps/Phone/src/com/android/phone/zzzz.java
如果传递一个—revision –r 参数,你的工作拷贝会与指定的版本比较。
svn diff -r 3 cupcake-jianping/packages/apps/Phone
如果通过--revision –r 传递两个通过冒号分开的版本号,这两个版本会进行比较。
svn diff -r 2:3 cupcake-jianping/packages/apps/Phone
如果你在本机没有工作拷贝,还是可以比较版本库的修订版本,只需要在命令行中输入合适的URL:
svn diff -r 33 svn://192.168.2.148/smartphone/td0901/trunk/cupcake-jianping/packages/apps/Phone
1.2.6 svn list 显示版本库的文件列表
svn list svn://192.168.2.148/smartphone/td0901
design/
hedoc/
pm/
release/
tag/
trunk/
svn list svn://192.168.2.148/smartphone/td0901/trunk
3src/
boot-a1/
cupcake-jianping/
linux-2.6.28-a1/
svn list 类似本机的ls命令,它查看的是服务器端的目录结构。
1.2.7 svn info 查看版本库信息
cd ~/svn/cupcake-jianping
svn infos
路径: .
URL: svn://192.168.2.148/smartphone/td0901/trunk/cupcake-jianping
版本库根: svn://192.168.2.148/smartphone
版本库 UUID: 1fac82c5-1665-442c-a8d6-2b3dd850438a
版本: 146
节点种类: 目录
调度: 正常
最后修改的作者: tangligang
最后修改的版本: 145
最后修改的时间: 2009-07-31 15:40:50 +0800 (五, 2009-07-31)
1.2.8 svn add 增加目录或者文件
svn add cupcake-jianping/packages/apps/Phone/src/com/android/phone/xxxx
svn add cupcake-jianping/packages/apps/Phone/src/com/android/phone/yyyy.java
1.2.9 svn delete 删除目录或者文件
svn delete cupcake-jianping/packages/apps/Phone/src/com/android/phone/xxxx
svn delete cupcake-jianping/packages/apps/Phone/src/com/android/phone/yyyy.java
在进行删除操作的时候要非常小心,假设我们要添加一个文件:
cupcake-jianping/packages/apps/Phone/src/com/android/phone/yyyy.java
但是在提交之前我们发现并不需要这个文件,这时候我们经常通过 svn delete 来撤销之前添加的文件:
svn delete cupcake-jianping/packages/apps/Phone/src/com/android/phone/yyyy.java
这样操作的后果往往导致本地的文件yyyy.java 被误删除掉,所以我们正确的做法是:
svnn delete cupcake-jianping/packages/apps/Phone/src/com/android/phone/yyyy.java –keep-local
1.2.10 svn revert 取消本地修改
1.当你发现对某个文件的所有修改都是错误的,或许你根本不应该修改这个文件,或者是从开头重新修改会更加容易的时候可以用这个命令。
2.通过svn add 添加了一个项目,如果想取消可以通过该命令。
1.2.11 svn commit 提交本地做的更改
通常只对自己负责的模块进行提交,如果负责电话模块,那么提交命令如下:
svn commit cupcake-jiangping/packages/apps/Phone
在提交之前建议用命令:
svn st cupcake-jiangping/packages/apps/Phone 查看状态
M cupcake-jianping/packages/apps/Phone/src/com/android/phone/xxxx.java
?cupcake-jianping/packages/apps/Phone/src/com/android/phone/yyyy.java
M表明文件已经有修改
? 表明文件没有受版本控制
1. 如果有 “?”存在,并且该文件或者目录是自己添加并且是工程的一部分,那么在提交之前必须先执行svn add 操作:svn add cupcake-jianping/packages/apps/Phone/src/com/android/phone/yyyy.java ;
2. 提交之前也必须解决冲突,否则会提交失败。
3. 提交之前必须写log
1.2.12 文件更新,提交时的冲突处理
$ svn update
Uxxxx
Gyyyy
Cxxxx.c
1. 更新的时候如果前面的状态为:C 表示有冲突存在。
2. 工作拷贝里做过修改,且服务器版本库在修改前工作拷贝的版本后被提交过其他修改;那么svn commit首先会失败并要求update,此时便会出现版本冲突的情况。
当你Update出现了冲突时,Subversion会产生三个文件
filename.mine :你更新前的文件,没有冲突标志,只是你最新更改的内容。
Filename.roldrev:就是你在上次更新之后未作更改的版本。
Filename.rnewrev:客户端从服务器刚刚收到的版本,这个文件对应版本库的HEAD版本。
冲突的文件内容,在冲突的地方将被使用“>>>>”标志出来,用户自己进行合并的取舍。
解决冲突之后,svn resolved path_to_name,Subversion删除冲突所产生三个文件删除,此时你才可以进行提交。( 也可以手动删除此三个文件。)
1.2.13 打标签
svn 的标签是通过copy命令完成,但是操作的路径必须是服务器的路径,打标签实际上类似于创建一个到特定版本的链接,如:
svn cp svn://192.168.2.148/smartphone/td0901/trunk/cupcake-jianping/
svn://192.168.2.148/smartphone/td0901/tags/cupcake-1.0.6
如果 svn://192.168.2.148/smartphone/td0901/trunk/cupcake-jianping 的当前版本为 5 ,/
那么 svn://192.168.2.148/smartphone/td0901/tags/cupcake-1.0.6 实际 /
上就是 svn://192.168.2.148/smartphone/td0901/trunk/cupcake-jianping 版本5的一个标签。

你可能感兴趣的:(工作,linux,SVN,服务器,delete,subversion)