SVN管理


1、安装kdiff3。跨系统且比较流行代码diff工具。
sudo apt-get install  kdiff3
2、安装svn工具。
1) sudo apt-get install subversion subversion-tools
2)降级安装svn(1.7),参考:  KUbuntu/Ubuntu 14.04 (降级)安装 svn 1.7

3、配置脚本。
1)下载svndiffwrapper.txt。http://download.csdn.net/detail/love254443233/7941913
2)复制:sudo cp svndiffwrapper.txt  /usr/bin/svndiffwrapper
3) 设置可运行权限。sudo chmod a+x /usr/bin/svndiffwrapper
4、修改svn配置信息
1)打开配置文件:vim ~/.subversion/config
2)修改diff工具及merge-tool-cmd工具的配置

1. ### Set diff-cmd to the absolute path of your 'diff' program.  
2. ###   This will override the compile-time default, which is to use  
3. ###   Subversion's internal diff implementation.  
4. # diff-cmd = diff_program (diff, gdiff, etc.)  
5. diff-cmd = svndiffwrapper  
6. ### Set diff3-cmd to the absolute path of your 'diff3' program.  
7. ###   This will override the compile-time default, which is to use  
8. ###   Subversion's internal diff3 implementation.  
9. # diff3-cmd = diff3_program (diff3, gdiff3, etc.)  
10. diff3-cmd = svndiffwrapper  
11. ### Set diff3-has-program-arg to 'yes' if your 'diff3' program  
12. ###   accepts the '--diff-program' option.  
13. # diff3-has-program-arg = [yes | no]  
14. ### Set merge-tool-cmd to the command used to invoke your external  
15. ### merging tool of choice. Subversion will pass 4 arguments to  
16. ### the specified command: base theirs mine merged  
17. # merge-tool-cmd = merge_command  
18. merge-tool-cmd =Kdiff3 "$1" "$2" "$3" -o "$4"  
5、merge主干。
1)命令行进入本地分支的工作目录,如/home/xx/work/svn/xx-hotel-image
提交分支(以防不测)。svn commit -m "merge trunk"

2)copy主干(trunk)url,如 http://svn.xx.xx.com/svn/xx/xx/xx-api/trunk
3)merge代码 (最后面的“.”号可省略,因为操作第1)步)。
svn merge  http://svn.corp.qunar.com/svn/mobile/mobfx/hms-api/trunk  .
4)运行过程中遇到冲突时会提示:
What would you like to do?
[M]erge [A]ccept [I]gnore [R]evert [D]efault [H]elp
选择(M)erge进入kdiff3界面操作,该界面跟windows下面使用小乌龟(TortoiseSVN)进行merge大致一样。
附:
1、界面操作方法
1)第一栏为分支新建的版本文件。第二栏是分支正在开发的文件。第三栏为trunk的文件。下面一栏是比较后输出的文件(output)。
2)output文件可以编辑,当不能满足merge需要时可以人为的修改。
2、svn merge其它常用命令
1)merge主干到本地分支:svn merge  http://svn.xx.xx.com/svn/xx/xx/xx-api/trunk .
2)merge出错时使用回退该操作:
svn revert — 取消所有的本地编辑。恢复一整个目录的文件,可以使用--depth=infinity选项:
Svn revert --depth=infinity .

svn revert -R 在服务器端,将删除的文件恢复

******************************************************************
3)提交本地修改到服务器:
svn commit -m "merge trunk"     
4)遇到如下错误:
svn: E155015: 提交失败(细节如下): 
svn: E155015: 提交终止: “/home/xx/work/svn/xx-hotel-image/versions.mapping” 处于冲突状态
解决方法:svn resolved /home/xx/work/svn/xx-hotel-image/versions.mapping

回退到上一个版本
svn merge -r rHEAD:109 http://example.com/repository/trunk/src/
说明:
rHEAD:109 从哪个版本回复到哪个版本,例子中的意思就是从当前最新版本回退到109
http://example.com/repository/trunk/ 待回退的分支
操作完成后,本地的working copy会更新为trunk的109版本的代码

******************************************************************
SVN创建代码库,上传代码,下载代码:
创建版本库:
终端输入: svnadmin create [路径]
该路径可以是相对路径,例如,当前在home/user/svn/目录下,输入svnadmin create myproject,则该版本库会被创建在home/user/svn/目录下,新建一个文件夹名为myproject,其中便是版本库的文件了。

将文件导入版本库:
终端输入: svn import [源路径] [目标版本库路径] -m [日志信息]
源路径可以是相对路径,导入时会递归导入源路径下的所有文件和文件夹,目标版本库路径需要绝对目录(反正我试验是这样的),例如版本库的目录是:home/user/svn/myproject/。则应该这样写:file:///home/user/svn/myproject/
例如将当前目录导入版本库myproject:
svn import . file:///home/user/svn/myproject -m "导入文件"

从版本库导出:
导入后原文件并未被纳入版本管理,若想获得受版本控制的文件,就需要从版本库导出
终端输入: svn co [版本库路径] [导出目标路径]
例如将myproject库中的文件导出到当前目录:svn co file:///home/user/svn/myproject .
******************************************************************
将代码上传到服务器
若服务器上已经创建了svn代码服务库,则对于要上传的代码,到代码根路径下,执行
svn co svn://192.168.13.196/dos-pad
然后,会出现检出版本0,或1,然后上传代码:
svn add * --force

svn add android/* art/* bootable/* cts/* developers/* device/* external/* gen/* libcore/* Makefile pdk/* sdk/* tools/* android/* bionic/* build/* dalvik/* development/* docs/* frameworks/* hardware/* libnativehelper/* ndk/* packages/* prebuilts/* system/* vendor/* --force

在上传过程中,会出现冲突,显示某部分代码版本过旧,此时,可以针对出现问题的路径,执行
svn upgrade 路径
然后继续执行上传指令,当完成后,执行
svn commit -m "提交说明"
******************************************************************
对比代码,查看修改
svn diff -r 新版本号:旧版本号
******************************************************************
查看提交的log
svn log
svn log -l3 最近三次提交
svn log -v -l3 最近三次提交涉及到的文件
******************************************************************







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值