跳到主要内容

VIM、SVN基本使用

· 阅读需 3 分钟

vim、svn 在我的认知里,感觉都是上古时代的产物了。但是公司还是有用 SVN 管理的项目,也没有谁有动力去升级一下。VSCode 对SVN的支持可以说基本没有,连本地代码差异对比都不支持。没有办法,就只能自己记录一下这两个上古工具大致是怎么使用的了。

VIM

~/.vimrc
"显示行号
set number

SVN

拉取代码(将http://172.16.0.252/svn/DanKiV5/branches/B023_BJ_ALG拉取至B023_BJ_ALG 目录下):

svn checkout http://172.16.0.252/svn/DanKiV5/branches/B023_BJ_ALG B023_BJ_ALG

查看工作区状态

svn status

撤销工作区某个文件的修改

svn revert source/2.Software/src/netconfig/src/zNetStateThread.cpp

输出:

Reverted 'source/2.Software/src/netconfig/src/zNetStateThread.cpp'

查看某次提交修改的文件

svn diff --summarize -c r1015	# r1015 为某次提交号

输出:

M   source/2.Software/tools/hi3516dv500/start-app.sh
M   source/2.Software/config/DK-FSAN-HI3516DV500/conf.txt

回退本地代码至某次提交

用于在本地查看某次提交的代码。

svn update -r 1014 # 1015 为某次提交号

查看差异 vimdiff

创建 vimdiff.sh 文件:

~/.subversion/vimdiff.sh
#!/bin/sh
# 去掉前5个参数
shift 5
# 使用vimdiff比较
vimdiff "$@"

然后编辑 ~/.subversion/config 文件,在 [helpers] 找到 diff-cmd,取消注释并修改为:

~/.subversion/config
[helpers]
# 这里需要使用绝对路径
diff-cmd = /home/amass/.subversion/vimdiff.sh

然后我们使用 svn diff 文件路径 就可以通过 vim 查看比对差异了。使用 :qall 退出vimdiff。

git svn

使用git-svn将源Subversion库转换为本地Git存储库,后续的本地操作就完全基于 git,只有在需要跟远程 svn 交互时,才需要使用 git svn xxx 命令。

安装:

sudo apt install git-svn

从 SVN 仓库拉取代码:

git svn clone http://172.16.0.252/svn/DanKiV5/branches/B023_BJ_ALG

从 SVN 上获取最新代码:

git svn rebase

这个其实类似于 git 里面的 git pull --rebase

所以如果有发生冲突,同等于在rebase的时候发生冲突要处理的方式一样。

把 git 的 commit 推上 svn:

git svn dcommit