跳到主要内容

源代码管理

· 阅读需 3 分钟
阅读量: 101
阅读人次: 102

源代码如何进行管理,是一个工程性的考量。通过互联网资料的查找,自始至今,也诞生了很多工具和方法。我个人比较喜欢纯依赖 Git 对项目源码进行管理。但工作当中,不免接触各种项目,了解其源代码的管理方式,可以让我们对项目更加游刃有余。

Repo

Repo 起源自 Android 项目,在 Android 这个开源项目中存在700个左右的 Git 仓库,当你下载 Android 源码时,如果手动同步这么多的 Git 仓库,必然很累又不可靠,所以即使没有 Repo,你也可能会想着通过一个脚本工具来同步 Android 的 Git 仓库,只不过现在 Google 帮你写了这个脚本,并且还加了很多其他的功能,你可以直接使用。

Repo 不是用于替代 Git,而是依赖于 Git 的工具,对仓库真正的操作还是通过 Git,只不过是通过 Repo 调用 Git 对每个仓库来进行操作。

Repo 的具体使用可以参考 Gitee 的 Repo 工具使用介绍 这篇文章。

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