人妻蜜と1~4中文字幕月野定规 ,国产精品成人va在线播放,色优久久久久综合网鬼色,WWW插插插无码视频网站

【ARM】使用Keil中的SVCS來(lái)實(shí)現(xiàn)Keil和Git的集成

一、文檔背景

團(tuán)隊(duì)合作是許多現(xiàn)代微控制器開(kāi)發(fā)項(xiàng)目的基礎(chǔ),而且現(xiàn)如今也有很多團(tuán)隊(duì),分布在世界各地和不同的時(shí)區(qū)。如果通過(guò)打包壓縮或者電子郵件,將源碼從一個(gè)地方發(fā)送到另一個(gè)地方,是不方便且不安全的,所以在面對(duì)這種分散式工作流時(shí),需要盡可能為客戶提供版本控制系統(tǒng),比如如今廣為人知的git。本文將提供把Git集成在Keil的μvision中的方法,實(shí)現(xiàn)如圖1所示。

圖1


二、Keil和Git的集成

(1)、隨便打開(kāi)一個(gè)項(xiàng)目,點(diǎn)擊頂部菜單欄中的“SVCS”欄,接著在下拉框中找到并點(diǎn)擊“Configure Software Version Control ...”,在彈窗中,點(diǎn)擊“...”,選擇官方給出的GIT.SVCS文件。(μVision 5.15 為 Git 提供了一個(gè)SVCS 模板文件。它位于安裝目錄(例如 C:Keil_v5UV4)中,名為 GIT.SVCS,對(duì)于 5.15 之前的版本,下載地址為:https://developer.arm.com/documentation/kan279/latest/)


圖2


(2)、點(diǎn)擊OK添加完GIT.SVCS文件后,SVCS窗口就會(huì)出現(xiàn),如下圖3中的選項(xiàng),方便我們使用按鈕,來(lái)直接調(diào)用相關(guān)的git命令。


圖3


(3)、此時(shí)先不要著急直接開(kāi)始使用這些按鈕,如圖4所示,先找到并打開(kāi)“Select Software Packs…”,取消掉勾選“Use latest versions of all installed Software Packs.”,因?yàn)樗x軟件包版本的相關(guān)信息存儲(chǔ)在 Project.uvprojx 文件中,該文件也在使用此工作流程的版本控制之下,所以為了防止攜帶此信息到新環(huán)境后,而導(dǎo)致使用的最新版本不一致的問(wèn)題,建議把這個(gè)選項(xiàng)去掉。

圖4


(4)、本文到這里,默認(rèn)大家已經(jīng)閱讀過(guò):

周邊知識(shí)中的《https://alidocs.dingtalk.com/i/nodes/20eMKjyp81Ra5gZyujLrr0QqWxAZB1Gv?utm_scene=team_space》,知道如何安裝Git即可。

FAQ中的《https://alidocs.dingtalk.com/i/nodes/R1zknDm0WR3bOn1mIkmgj260VBQEx5rG?utm_scene=team_space》,知道基本Git的基本操作即可。


(5)、接下來(lái),為了激活keil中按鈕的使用,我們需要先去初始化一下git倉(cāng)庫(kù),如圖5所示:


圖5


(6)、接著在Github上創(chuàng)立一個(gè)遠(yuǎn)程倉(cāng)庫(kù),比如這里如圖6,取名叫:SVCS-Test。



圖6


(7)、如圖7所示,將創(chuàng)建好的遠(yuǎn)程倉(cāng)庫(kù)的地址:https://github.com/Emdoor-ELEC/SVCS-Test.git,通過(guò)Git命令,給遠(yuǎn)程倉(cāng)庫(kù)的HTTPS網(wǎng)址起個(gè)別名,方便我們待會(huì)直接調(diào)用Keil里的遠(yuǎn)程推送命令。



圖7


(8)、按照?qǐng)D8中的命令,進(jìn)行添加、提交以及推送我們的工程文件,這也是為了方便我們后續(xù)keil中的操作,所以把最基礎(chǔ)的操作,先用命令行做一遍,后續(xù)就可以完全交給keil來(lái)操作了。



圖8


提交完成后,也可以使用 git clone https://github.com/Emdoor-ELEC/SVCS-Test.git命令,把遠(yuǎn)程倉(cāng)庫(kù)里的工程給拷貝到本地,都是可以的,如圖9所示:



圖9


(9)、接下來(lái),我們就可以開(kāi)始使用Keil中SVCS列表內(nèi)的配置按鈕,來(lái)操作我們的項(xiàng)目了。如圖10所示,我們直接點(diǎn)擊Status按鈕,即可查看文件的狀態(tài)??梢钥吹轿覀兊捻?xiàng)目有了一處改動(dòng)。(打開(kāi)項(xiàng)目時(shí),μVision 會(huì)自動(dòng)生成一個(gè) uvguix.username 文件,所以該文件被標(biāo)記為未跟蹤,這個(gè)不需要管。)



圖10


(10)、點(diǎn)擊添加新組,命名為Document,并往里面添加一個(gè)Abstract.txt,隨便往txt中輸入一些內(nèi)容,如圖11所示,然后我們?cè)儆肧VCS中的Status按鈕來(lái)操作一下這個(gè)文件,即可看到該文件已被顯示為未跟蹤狀態(tài)。


圖11


(11)、要開(kāi)始跟蹤(或添加)Abstract.txt,需要我們點(diǎn)擊一下Abstract.txt,使他在項(xiàng)目窗口處是突出顯示的狀態(tài),然后才可以轉(zhuǎn)到SVCS中的Stage“Abstract.txt”,點(diǎn)擊Stage以后,可以看到輸出串口,自動(dòng)調(diào)用了git add命令,將我們新建的Abstract.txt添加到了暫存區(qū)。



圖12


(12)、此時(shí)再用SVCS中的Status去查看工程文件的狀態(tài)時(shí),就發(fā)現(xiàn),Abstract.txt已經(jīng)被添加進(jìn)暫存區(qū)了,目前已經(jīng)處于待提交的一個(gè)狀態(tài)了。



圖13


(13)、同樣的,如圖14所示,我們也可以在Blinky.c中刪除一行空行,再通過(guò)SVCS中的Status去查看工程文件的狀態(tài),發(fā)現(xiàn)未跟蹤,就再調(diào)用SVCS中的Stage“Blinky.c”,就會(huì)被添加進(jìn)暫存區(qū),處于待提交的狀態(tài)了。


圖14


(14)、需要注意的是,ARM官方提供的這個(gè)GIT.SVCS文件,是不提供git rm 命令的功能的,因?yàn)樵撁顣?huì)從暫存區(qū)域和工作目錄中刪除文件,但該文件又會(huì)在μVision 中仍然可見(jiàn)(尤其是在編輯器窗口中打開(kāi)文件時(shí))。這可能會(huì)導(dǎo)致意想不到的行為。要從 μVision 項(xiàng)目和工作資源庫(kù)中安全刪除文件,需要執(zhí)行以下操作:

①:在編輯器窗口中關(guān)閉文件。

②:在 "項(xiàng)目 "窗口中,右鍵單擊文件并選擇刪除文件 "MyFile.c"。

③:切換到 Windows 命令外殼,進(jìn)入文件目錄并發(fā)出命令:git rm MyFile.c

這樣,下一次提交時(shí),該文件將消失,不再被跟蹤。如果你在中間修改了文件,并已將其添加到索引中,則必須使用 -f 選項(xiàng)強(qiáng)制刪除。這一安全功能可防止意外刪除尚未成為快照一部分的、且無(wú)法從 Git 恢復(fù)的數(shù)據(jù)。


(15)、在我們開(kāi)始提交(commit)工程到本地倉(cāng)庫(kù)之前,有一個(gè)需要注意的事項(xiàng)就是,在git commit 命令之前,要檢查一下項(xiàng)目中是不是有未添加到暫存區(qū)的文件,比如,如圖15所示,可以看到我們的uvoptx文件、uvprotx文件都還沒(méi)有被添加到暫存區(qū),需要按照?qǐng)D16的方式,將這兩個(gè)文件加入到暫存區(qū)。


圖15


圖16


(16)、當(dāng)然,不是所有的文件都需要監(jiān)控和添加的,這里我列出官方文檔中需要我們關(guān)注的,和不需要我們關(guān)注的:

需要關(guān)注的:

? 所有用戶生成的源文件(*.c、*.cpp、*.h、*.inc、*.s)

? 項(xiàng)目文件:Project.uvprojx(用于從頭開(kāi)始構(gòu)建項(xiàng)目)

? 項(xiàng)目選項(xiàng)文件:Project.uvoptx(包含調(diào)試器和跟蹤配置信息)

? 用于多項(xiàng)目工作區(qū)的項(xiàng)目文件:Project.uvmpw

? 復(fù)制到項(xiàng)目中的運(yùn)行時(shí)環(huán)境配置文件(.RTE 以下的所有文件)

? 軟件組件創(chuàng)建的 #includes 列表:RTERTE_Components.h 文件

? 設(shè)備配置文件:例如 RTEDeviceLPC1857RTE_Device.h

? 鏈接器控制文件(Project.sct)(如果是手動(dòng)創(chuàng)建的)

? 所有相關(guān)軟件包文件(例如 ARM::CMSIS、Keil::Middleware、設(shè)備系列軟件包等)

不需要關(guān)注的:

?項(xiàng)目屏幕布局文件:Project.uvguix.username

? 屬于軟件包部分的所有文件(完整的軟件包將受版本控制,每個(gè)用戶在使用軟件包安裝程序安裝時(shí)都可使用該文件)

? 在 .Listings 和 .Objects 子目錄下生成的輸出文件

? 調(diào)試適配器的 INI 文件


(17)、接下來(lái),就可以嘗試提交我們的工程到本地倉(cāng)庫(kù),如圖17所示,可以看到,點(diǎn)擊SVCS中的“Commit staged changes”,會(huì)彈出一個(gè)提交窗口,我們可以使用這個(gè)窗口,來(lái)添加這次提交時(shí)需要添加的注釋,比如:添加了Abstract.txt,刪除了Blinky.c中的空行。點(diǎn)擊OK,會(huì)看到下方的輸出窗口中,keil自動(dòng)調(diào)用了git commit -m xxxxx命令,幫我們把暫存區(qū)的工程提交到了本地倉(cāng)庫(kù)。并且,下方還顯示了這次提交的工程數(shù)量為4,剛好對(duì)應(yīng)上一次使用status時(shí),暫存區(qū)出現(xiàn)的4個(gè)文件,并且創(chuàng)建的新文件也是我們手動(dòng)創(chuàng)建的那個(gè)Abstract.txt文件,都是對(duì)應(yīng)的。



圖17


(18)、最后,當(dāng)項(xiàng)目達(dá)到可以與他人共享的程度時(shí),就可以將其推送到上游(版本庫(kù)服務(wù)器),也就是github上了(或者有寫入權(quán)限的服務(wù)器上)。如圖18所示,點(diǎn)擊SVCS中的“Push Commits to server”,即可在輸出窗口看到,keil自動(dòng)調(diào)用了git push origin master的命令,該命令里的origin,就是我們?cè)诘谄卟街校瑒?chuàng)建好的遠(yuǎn)程倉(cāng)庫(kù)的地址。隨即我們可以轉(zhuǎn)到github倉(cāng)庫(kù)去進(jìn)行驗(yàn)證,發(fā)現(xiàn),我們的更改確實(shí)被推送上去了,也正好是我們修改的4個(gè)文件,現(xiàn)象也是完全對(duì)應(yīng)的。



圖18

(19)、要從遠(yuǎn)程服務(wù)器拉取最新版本,請(qǐng)調(diào)用SVCS中的“Pull latest version from server”,即可將遠(yuǎn)程倉(cāng)庫(kù)中的變更拉取到本地,如圖19所示,我在github上的遠(yuǎn)程倉(cāng)庫(kù)中加了一個(gè)txt文件,隨后在Keil中測(cè)試?yán)」δ?,在輸出窗口和文件夾中,可以看到,已被拉取到本地。

圖19


三、討論分析

問(wèn)1:集成只能使用官方提供的文件嗎?是否支持更多的相關(guān)功能?

答1:集成功能并不限于官方文件,可以自行更改,如圖20所示,分割線、按鈕、按鈕對(duì)應(yīng)的git命令,都是我們可以自定的,只要按照相同的格式去添加,即可實(shí)現(xiàn)對(duì)應(yīng)功能。也可以如圖22一樣,在軟件內(nèi)按照進(jìn)行快速修改。




圖20


圖21

問(wèn)2:為什么還有很多按鈕沒(méi)有講解?

答2:此文檔僅以實(shí)現(xiàn)基礎(chǔ)操作為目標(biāo),具體更多的繁復(fù)功能,不予進(jìn)行詳細(xì)的講解,自行按照官網(wǎng)文檔探索學(xué)習(xí)即可,官方下載鏈接為:https://developer.arm.com/documentation/kan279/latest/


四、結(jié)論

該功能在一定程度上彌補(bǔ)了keil軟件中沒(méi)有g(shù)it功能的空缺,且給予了開(kāi)發(fā)人員較大程度的自由度,去自行配置使用git命令。并且通過(guò)加載SVCS文件的方式,將命令以按鈕的形式,加載到了軟件IDE界面中,極大的方便了用戶在使用分散式工作流時(shí)的團(tuán)隊(duì)合作。