本文作者:北京银行总行系统运营中心运维工程师
鉴于公司的服务器性能和编译速度好,我们选择在公司内网环境下对使用 OceanBase 时的 issue进行开发工作。
接下来,我会分享在开发和提交代码时的步骤。尽管流程稍显繁琐,但对于处于相似场景下的同学而言,或许能提供一定的参考价值。
开发步骤:
1、个人电脑中源码的feature分支进行打包,将此包发送至离线环境的服务器上,一旦发送完成,建议避免再对个人电脑中的该部分代码进行修改。
2、拷贝到了离线环境后,执行一次git commit,此时你的离线环境应当是一个干净的本地仓库,接下来你就可以开始在离线环境的分支写代码了。
3、写完了代码,再commit一下,
git diff <拷贝到离线环境后的第一次commit版本号> <改完代码后commit的版本号> > diff.patch
生成一个diff.patch文件。把patch文件传到你的个人电脑。
4、把patch文件应用到个人电脑本地的feature分支上,
git apply --whitespace=fix ..\diff.patch
能够在控制台看到哪些文件发生了变化,vscode中也能看到哪些文件发生了变化。
5、看一下哪些代码发生了变动,没什么问题就可以commit了。git status看一看状态。
(中间如果有你的多次commit,考虑通过git rebase压缩为一个commit,以便提交pull request)
6、切换到个人电脑的master分支,拉取远程fork仓库的最新版本,之后合并feature开发分支至master分支。
git merge feature分支
7、如有解决冲突。
8、merge之后会有如图所示情况。
注:tmp代表开发分支,merge前HEAD指向的版本号是8024d。
之后需要rebase,将中间的commit压缩。
git rebase -i HEAD~2
执行上述命令后,终端就自动显示rebase文件的编辑页面,不需要做任何改动。直接“冒号 q” 。
可看到那merge branch tmp的commit记录就没有了。
下次开发新的需求的时候还是如同上述8个步骤,不开发的时候没事儿的时候可以同步一下自己的远程fork仓库。
目前是我自己用的一个方法,如果有更好的离线环境开发和git使用的方式也请欢迎分享。