subversion
subversion基本操作
签出
第一次签出代码:
$ svn checkout --username=<username> <url> <localpath>
忽略文件与目录
未加入控制的文件夹
svn propset svn:ignore 'test' . svn update svn commit -m "add a ignore dir"
已经加入版本控制的文件夹
svn export test test_bak svn rm test svn commit -m "delete test" mv test_bak test svn propset svn:ignore 'test' . svn update svn commit -m "add a ignore dir"
多个文件
如果想要忽略一个目录下多个文件夹的话,需要有一点点技巧,如下
svn propset svn:ignore 'test test1 test2' .
即每一个文件夹要单独另起一行
更新代码
更新代码 :
svn update
修改
修改代码:
svn add foo # 添加文件或目录 svn add -n foo # 只添加目录,不添加目录内容 svn copy foo bar # 复制内容,下次提交时添加 svn copy --parents foo bar # 复制内容时自动加上中间目录 svn move foo bar # 移动 svn move --parents foo bar # 移动时自动加上中间目录 # mkdir blort ; svn add blort svn mkdir blort
检查修改
概况
svn status # 浏览所有的修改 svn status stuff/fish.c # 浏览指定的文件或路经
- A 新加入的内容
- C 冲突的内容
- D 删除的内容
- M 已经修改的内容
详细
svn status -v # 在本地显示所有的(包括有修改的和没有修改的)状态 # 标记 版本号 最后修改的版本号 修改人 文件名 M 44 23 sally README 44 30 sally INSTALL M 44 20 harry bar.c svn status -u -v # 与远程比对所有的(包括有修改的和没有修改的)状态 # 标记 远程有更新 版本号 最后修改的版本号 修改人 文件名 M * 44 23 sally README 44 30 sally INSTALL M 44 20 harry bar.c # 如果现在运行svn update,README会被更新
查看修改文件内容
检查文件修改的内容:
svn diff # 显示所有被修改的详细信息 svn diff -r m:n # 对比两个指定的版本 svn diff > patchfile # 生成补丁
取消修改
取消对某文件的修改:
snv revert README
冲突处理
冲突处理:
$ svn update U INSTALL G README Conflict discovered in 'bar.c'. Select: (p) postpone, (df) diff-full, (e) edit, (h) help for more options:
当更新代码时,U
表示文件更新,G
表示无冲突地合并。但有冲突的情况要用户指定
如何处理:
postpone # 保持冲突状态 diff # 显示区别 edit # 用环境变量Editor指定的编辑器编辑 resolved # 编辑完后,声明冲突已经解决 mine-full # 放弃更新,只用本地文件 theirs-full # 放弃本地,只有服务器 launch # 启动一个外部程序来解决冲突,这需要一点预先准备 help # 显示帮助
提交修改
svn commit -m "message"
导出
导出没有版本的代码:
svn export -r 版本号 版本路径 输出目录
例子:
svn export -r 20260 svn://333.333.333.333/prg/jsp ~/tmp/prg/source
分支
创建分支
从主干创建一个分支:
$ svn copy http://svn.example.com/repos/calc/trunk \ http://svn.example.com/repos/calc/branches/my-calc-branch \ -m "Creating a private branch of /calc/trunk."
取出分支
$ svn checkout http://svn.example.com/repos/calc/branches/my-calc-branch
切换到分支
$ svn switch http://svn.example.com/repos/calc/branches/my-calc-branch
比较两个不同的分支
svn diff --username=qwshan \ https://hpfs01.handpay.com.cn:8443/svn/mallModule_mvn/hpVoucherService/branches/hpVoucherService-voucher0303 \ https://hpfs01.handpay.com.cn:8443/svn/mallModule_mvn/hpVoucherService/trunk
删除所有的.svn目录
find . -type d -name ".svn" | xargs rm -rf