目录
- 搜集官方相关帮助
- 基础准备
- 操作步骤
- Centralized Workflow Example
在开发keil单片机程序时,使用git进行源代码管理时,大多数时候使用外部工具或命令行进行处理,会来回切换.
其实uVision集成了源代码管理界面接口.
搜集官方相关帮助
1.application note
在Getting Started with MDK Veersion5.pdf中有SVCS描述
如上所示,uVersion还支持svn等其他源代码管理系统模版文件.
点击链接会导航到相关资料:Using Git for Project Management with uVision (arm.com)
这段文字说明了为何需要源代码管理工具,为何源代码管理工具需要用git,下载apnt_279.zip和pdf即可.
2.软件附带帮助文件
基础准备
根据上述资料,即可实现keil中SVCS的配置,但是这里还需要说明,防止不熟悉的人少走弯路.
git命令行
一定要对git命令比较熟悉,为什么需要命令行呢?因为keil uVersion对git的支持不太完善,需要命令行辅助.
快速熟悉git的地方在bilibili,很多视频教程免费,国内速度很快,可以在上面搜索git相关教程.
git官网https://git-scm.com/book/en/v2的Pro Git书籍,这是一本很好的书籍,有中文,英文等多种语言.
git权威指南:https://www.worldhello.net/gotgit/,也是一本非常不错的书籍,如果想更进一步的话.
MDK版本
我试了一下,主观感觉keil里面的SVCS做的不是太完善,感觉上像一个半成品,最主要的原因应该是uVersion的架构导致的,只能定义一些命令,每个相当于批处理脚本,在gui上调用一下.keil也没有太花费心思在上面.选择不同的版本可能会遇到不同的问题.
只要对git命令行比较熟悉,以上搜集到的官方资料就可以解决问题.
操作步骤
主要参考下载的文档<<Using Git for Project Management with µVision.pdf>>
这里目录结构也是按照这个文档进行
1.Abstract(摘要)
说明为什么使用源代码管理工具,为什么使用git.
2.Introduction
简介源代码管理工具和git.
需要已经安装了git,会使用windows cmd.exe命令行终端.
3.Workflows
git最重要的开发方式是利用分支,为了简化这里不使用分支.
git使用范围很广,这里使用最简单直接的方式:centralized workflow.
学习git可以知道有哪些 workflows和怎样使用.
3.1.Centralized Workflow
解释什么是中心化的工作流,使用git实现中心化的工作流比svn等其他工具的好处.
这些内容学习git基础后非常容易理解,建议先看完git视频后,再接下来学习.
列举了使用centralized workflow需要的工作步骤1-4.
4.Using Git with µVision
4.1.Project Files under Version Control
说明哪些文件需要进行版本控制.
4.2.Files that do not need to be monitored
哪些文件不需要版本控制.
4.3.Configure µVision’s SVCS
配置文件如下:
#配置文件
D:\Keil_v5\UV4\GIT.SVCS
#或者
apnt_279\GIT.SVCS
打开对话框SVCS -> Configure Software Version Control…
导入配置文件
点击OK
打开工程后,上述模版文件生成菜单
4.3.1.Accessing µVision Project Files
SVCS菜单项命令作用于光标选择的文件
项目相关文件选择
4.4.Version Control of Software Packs
保存software pack版本信息到Project.uvprojx文件中.
Centralized Workflow Example
例子中心化工作流,如果SVCS菜单没有对应命令,需要使用其他客户端gitGUI或git命令行.
1.Initialize the Central Repository
由于此文档2015年发布第一版本后就没有更新过,不按照教程操作,现在已经有了很好用的windows平台下的命令行客户端.
#提交检出均不转换
git config --global core.autocrlf false
git init
git add *
git commit -m 'Initial version'
#由于github国内上网不稳定,使用gitee作为托管仓库.
git remote add origin https://gitee.com/fedorayang/apnt_279.git
git push -u origin "master"
2.Clone a Repository from a Server
其他人可以clone服务器上的git仓库,你也可以以后clone
git clone https://gitee.com/fedorayang/apnt_279.git myapnt_279
3.Feature Work
先学好git基础知识,再继续下去,直接看这里会一头雾水.
Checking the File Status
运行菜单命令会出现一个cmd对话框闪烁一下,应该如下设置就不闪烁了.
Staging (Adding) an Untracked File
增加文件
暂存
Staging Modified Files
Removing a Tracked File
由于会导致Keil不稳定,默认模版没有集成git rm命令.
删除文件的步骤
#在uVersion的编辑器中关闭
#项目窗口中移除文件
git rm myfile.c
#如果修改暂存后移除需要使用命令
git rm -f myfile.c
处理其他文件
touch .gitignore
vim .gitignore
*.uvguix.*
Committing Changes
Pushing to the Repository
git push origin master
remote: Powered by [01;33mGITEE.COM [0m[1.1.5]
remote: Set trace flag 774194a1
To https://gitee.com/fedorayang/apnt_279.git
cfa1a40..96cbc5b master -> master
4.Manage Conflicts
Rebasing
rebase把本地提交一个一个的添加到远程仓库的最前面,保证提交历史的顺序递增.
制造两处冲突:
本地
远程
查看冲突文件
Blaming
Finishing the Rebase Process
手动修改冲突,并且add.
git rebase --continue
Stashing a Project
存储当前未完成的修改到一个栈上,切换到其他分支工作,完成其他分支工作后切换会当前分支,再次运用上次当前未完成的修改,继续当前工作.
需要其他命令行配合操作,参考(Pro git ->git 工具->贮藏与清理)
Pulling the Latest Version from the Server Repository
5.Conclusion
需要和其他GUI或命令行配合可以实现其他的工作流.
6.Appendix A: Software
- 安装windows下的git
- 对于老版本的MDK,使用这个appnote提供的git模版文件.
7.Appendix B: Links
Git server space providers: https://github.com/, https://bitbucket.org, https://about.gitlab.com/
现在不止这些了,非常多,国内比较好用的托管仓库有gitee.
自己搭建git仓库可以使用gitea,gitblit等.