svn的使用
文章目录
checkout 从服务器获取代码
- 普通的checkout
svn checkout http://192.168.1.207/svn/software/RG53262M/trunk RG53262M_rep
- checkout分支,值啊分支目录里checkout就行了。
svn checkout https://117.84.30.110:918/svn/software/RG53262M/branches/53128_53101 53128_53101
- checkout 特定版本的代码
svn checkout -r r205 https://192.168.1.10/svn/software/RG53262M/trunk bcm53262_r205
提交代码
svn commit -m "详细注释,都改了些什么,怎么改的。" /app/mstp/stp.c
提交代码的基本流程
- checkout代码到本地
- 找到问题修改或者开发
- 提交之前svn update 版本库上最新代码, 如果有冲突解决冲突。
svn status -q
查看所修改的所有内容,-q对于那些未版本管理的内容不显示,例如:.o文件。- 使用
svn add /app/mstp/api.c
添加新加的文件,使用svn commit -m "提交注释" /app/mstp/stp.c
提交修改和后添加的的文件。 - 提交完成
日志
查看日志
svn log -l 10 //查最近的10条日志
svn log -r 10:11 --diff //查看r10 和r11版本之间都改了些什么
svn log -r 10:12 --diff /app/mstp/stp.c //当然也可以查特定文件修改的内容
svn log -r 20 touched.txt --diff //r20都改了些什么
svn log -v -r 204 //查看204都改了哪些文件。
svn log -v -r 205:208 //看205到208的提交记录
怎么用命令修改log
svn propedit svn:log --revprop -r 295
(这时候会出现一个编辑器,在其中将原先的内容进行修改,然后保存,看到下面的输出信息就说明操作成功了)
Set new value for property ‘svn:log’ on revision 295
svn回滚
- 从r374 回滚到r373
svn merge -r 374:373 apps/rc/include/apps.h
- 从回退中恢复为最新的代码
svn revert -R ./ //这个目录和子目录下的所有代码全部回退
svn revert xxx.c //单独revert一个文件
TortoisSVN
拉分支
- 使用命令行拉分支
svn copy https://192.168.1.10/svn/software/RG53262M/trunk https://192.168.1.10/svn/software/RG53262M/branches/53128_53101 -m 'make branches for 53128 53101'
- 合并回主分支
命令:svn -r 分支版本号:HEAD 分支的URL
解释:HEAD为当前主干上的最新版本
示例:
cd trunk 要在主分支的代码上操作
svn merge -r 615:HEAD https://192.168.1.10/svn/software/RG53262M/branches/bcm_poe
在windows上拉分支
第一步:checkout一份代码
第二步:在刚刚checkout出的代码上鼠标右键,TortoiseSVN – Branch/tag。
第三步:选定分支所要放置的目录即可。
svn打补丁的方法
svn diff > patchfile
svn diff -r 20:21 /appDemo/boardConfig/gtRd_xCat_24GE_4HGS.c > XGport.patch
patch -p0 < patchfile //应用patch文件, -p0 选项要从当前目录查找目的文件(夹)
patch -p1 < test.patch // -p1 选项要从当前目录查找目的文件,不包含patch中的最上级目录(夹)
用户,密码相关
linux上切换svn用户的方法
-
怎么看出当前登录的用户是什么?
cd ~/.subversion/auth/svn.simple
cat 一下里边的文件就可以看到当前登录的svn账号了。 -
临时切换:
svn update –username quzhifeng –password 123456 -
永久切换:
删除目录 ~/.subversion/auth/ 下的所有文件。下一次操作svn时会提示你重新输入用户名和密码的。换成你想用的就可以了。然后系统默认会记录下来的。
修改登录时是否需要密码的配置项
服务器(visualsvn)上设置 log 可编辑的方法?
在要配置的Repositories上鼠标右键 -> 所有任务 -> Manage Hooks -> 点击hooks页签 –> 编辑Pre-revision property change hook , copy如如下的内容既可
if "%4" == "svn:log" exit 0
echo Property '%4' cannot be changed >&2
exit 1
如何修改svn的url 地址
在linux下用命令改
svn switch --relocate http://192.168.1.10/svn/Vitesse_CEservice/trunk/CE_ECOS http://192.168.1.10/svn/Vitesse_CEservice/branches/vitesse_cn_web
在windows下用TortoisSVN改
windows TortoisSVN客户端
在工作复本的根目录上右键->TortoiseSVN->重新定位(Relocate),然后修改URL。(要在最最上层目录鼠标右键,否则没有relocation这个选项啊。)
技巧
技巧1批量提交文件的方法
- 所有修改收集到一个文件中
svn status > tmp.txt //所有修改收集到一个文件中
- 使用notpad++的列编辑模式,把前边的内容去除掉,只留文件名称。
- 删除不需要提交的文件。
- 把tmp.txt中列出来的所有文件都提交上去
svn commit -m "提交注释信息" $(<tmp.txt)
ubuntu 下svn安装
sudo apt-get install subversion
- 是什么原因导致拉分支不成功?
svn copy https://192.168.1.10/svn/VitesseLinuxCEService/trunk/vitesse_linux_src https://192.168.1.10/svn/VitesseLinuxCEService/branches/vsc_linux_fix/ -m "fix demo problem."
svn: E175013: Access to '/svn/VitesseLinuxCEService/!svn/rvr/6/trunk/vitesse_linux_src' forbidden
解决:发现代码的trunk目录中,有部分代码我不能访问,没有读写权限,将docs目录配置有读写权限了,就可以拉分支出来了。
如何上传初始代码?
- 在svn服务上新建一个代码仓库,并记录下仓库的url访问地址。
- 在本地的电脑上,准备好代码目录,例如:svncode
- svn checkout http://svnserver/mycode svncode //checkout到这个目录
- 提交原始代码:
- cd svncode; svn add *; 添加所有代码
- svn commit -m “commit the first version of mycode”