HelloX项目github协同开发指南
概述
為了提高協(xié)同開發(fā)效率,HelloX項(xiàng)目已托管到github網(wǎng)站上。根據(jù)目前的開發(fā)進(jìn)展,創(chuàng)建了下列幾個(gè)子項(xiàng)目:
HelloX操作系統(tǒng)內(nèi)核項(xiàng)目:https://github.com/hellox-project/HelloX_Kernel.git
HelloX操作系統(tǒng)GUI模塊項(xiàng)目:https://github.com/hellox-project/HelloX_GUI.git
面向STM32的移植版:https://github.com/hellox-project/HelloX_STM32.git
后續(xù)根據(jù)需要,再增加其它相關(guān)子項(xiàng)目,所有這些子項(xiàng)目都是HelloX項(xiàng)目的一部分。
本文檔對(duì)如何協(xié)同開發(fā)進(jìn)行描述,旨在幫助開源開發(fā)人員順利搭建起github協(xié)作開發(fā)環(huán)境,共同開發(fā)HelloX項(xiàng)目。
Github工作原理簡(jiǎn)介
嚴(yán)格來說,github是一個(gè)網(wǎng)站的名稱,真正的版本管理功能是由git實(shí)現(xiàn)的。為了簡(jiǎn)便,籠統(tǒng)的認(rèn)為github就是一個(gè)版本管理系統(tǒng)就OK了。
其實(shí),github的工作原理非常簡(jiǎn)單,借用我們?nèi)粘i_發(fā)時(shí)使用的策略類比,會(huì)很容易理解。比如,現(xiàn)在有一個(gè)開發(fā)項(xiàng)目,這個(gè)開發(fā)項(xiàng)目經(jīng)過長(zhǎng)時(shí)間積累,已經(jīng)有了數(shù)萬行代碼,并由一個(gè)組織或個(gè)人唯一管理(如果多個(gè)人同時(shí)管理,就亂套了)。你希望對(duì)這個(gè)項(xiàng)目進(jìn)行修改或者優(yōu)化。這時(shí)候,謹(jǐn)慎起見,你不可能直接在原項(xiàng)目上進(jìn)行修改,而是把原來的項(xiàng)目復(fù)制一份,在這個(gè)復(fù)制項(xiàng)目上進(jìn)行修改。修改完畢后,會(huì)總結(jié)出修改了哪些內(nèi)容(修改了哪些文件,添加了哪些文件,刪除了哪些文件等),然后把修改的內(nèi)容提交給管理者審核,審核通過后,管理者會(huì)逐一合并到原有項(xiàng)目中。
Github自動(dòng)化的實(shí)現(xiàn)了這個(gè)過程。原始項(xiàng)目存放在一個(gè)固定的位置,并由一個(gè)作者同意管理。比如對(duì)于HelloX項(xiàng)目的HelloX操作系統(tǒng)內(nèi)核源代碼,其固定存放位置是github.com/hellox-project/HelloX_Kernel,當(dāng)前的管理者是我本人。如果你希望參與開發(fā),對(duì)內(nèi)核進(jìn)行修改,那么就需要首先復(fù)制一份(github上叫做fork),到你自己的位于github網(wǎng)站的個(gè)人空間內(nèi)。這時(shí)候你就可以隨便修改這份copy了。但由于這份拷貝是在網(wǎng)上,無法直接修改,因此你必須把這份copy下載到本地(github叫做clone),然后在本地進(jìn)行修改。Github(嚴(yán)格來說,是github的本地工具)會(huì)監(jiān)控這個(gè)修改過程,把主要的修改內(nèi)容都記錄下來(之所以記錄過程,是方便倒回)。本地修改完之后,你告訴github(叫做commit),已經(jīng)修改完成了,github會(huì)把修改的內(nèi)容統(tǒng)一合并到本地代碼庫中。
注意,這時(shí)候你的修改還是停留在本地代碼庫中,尚未傳遞到你自己的網(wǎng)上空間內(nèi)。如果要把修改內(nèi)容上傳到你自己的github空間,需要執(zhí)行一個(gè)叫做push的操作,把本地commit的修改,推送到你自己的github空間內(nèi)。
一旦push完成,修改才同步到你自己的github空間中。為了把你的修改合并到原始代碼中,你必須發(fā)起一個(gè)pull request,告訴項(xiàng)目管理者,你做了哪些修改,為什么做這些修改,申請(qǐng)項(xiàng)目管理者合并到主流版本中。剩下的事情,就是項(xiàng)目管理者的事了,他會(huì)考慮這些修改申請(qǐng),必要時(shí)會(huì)發(fā)起討論,或者跟你聯(lián)系,討論這些修改的必要性。如果最終確定這些修改是有價(jià)值的,那么項(xiàng)目管理者會(huì)merge到主流版本中,并記錄你的contribution。
好了,通過上面的描述,記住并理解下面的關(guān)鍵詞,后面的操作就非常簡(jiǎn)單了:
Fork,clone,commit,push,merge
HelloX項(xiàng)目github協(xié)作開發(fā)指南
首先,你必須了解HelloX項(xiàng)目的背景及目標(biāo),判斷是否與您的背景或者意圖能夠匹配,以決定是否要投入開發(fā)。這個(gè)過程要慎重仔細(xì),一旦決定要投入,那么就需要遵循開源精神,有始有終,當(dāng)然,您的貢獻(xiàn)會(huì)被盡量精確的記錄下來(HelloX項(xiàng)目的每個(gè)子項(xiàng)目下,都有authors.txt文件,記錄了貢獻(xiàn)者的主要貢獻(xiàn)及個(gè)人信息)。
在決定投入開發(fā)之后,剩下的事情就很簡(jiǎn)單了。下面一步一步的介紹。
第一步:在github上注冊(cè)
在github上注冊(cè)一下,創(chuàng)建自己的user space。這個(gè)過程不細(xì)說,直接登錄github.com,點(diǎn)擊sign up即可。建議選擇注冊(cè)的用戶名、郵箱、密碼等信息,萬一您成為github上的大牛,一個(gè)很酷的名字會(huì)很重要。
第二步:fork待參與的項(xiàng)目
在github上注冊(cè)成功之后,會(huì)一直保持登錄。這時(shí)候,建議fork一下您希望參與開發(fā)的項(xiàng)目,比如您希望參與HelloX項(xiàng)目中的HelloX操作系統(tǒng)STM32版子項(xiàng)目,那么在瀏覽器地址欄中輸入https://github.com/hellox-project,即可連接到hellox項(xiàng)目的主頁下,頁面上會(huì)列出所有子項(xiàng)目。選擇其中的一個(gè),進(jìn)去之后,點(diǎn)擊頁面上的fork按鈕,即可復(fù)制一份到您自己的空間。
再回到您自己的個(gè)人頁面,即可看到fork過來的項(xiàng)目。
第三步:下載并安裝github客戶端
下列地址可以下載github客戶端:
https://help.github.com/articles/set-up-git
下載后,直接運(yùn)行即可。注意,根據(jù)我的經(jīng)驗(yàn),上面網(wǎng)頁上下載的只是一個(gè)launch程序,并不是真正的github安裝程序。這個(gè)launch程序會(huì)進(jìn)一步從github網(wǎng)站上(貌似托管在Amazon的云上)下載安裝程序。這個(gè)過程會(huì)比較長(zhǎng),網(wǎng)絡(luò)情況不好的話,可能會(huì)失敗。請(qǐng)多試幾次。
在安裝過程中,會(huì)提示您輸入第一步創(chuàng)建的github賬戶信息。
第四步:啟動(dòng)github命令行客戶端,下載項(xiàng)目
最新的github版本,提供圖形界面和命令行界面。雖然圖形界面做得很簡(jiǎn)潔很好看,但用起來還是感覺不太方便,我個(gè)人仍然傾向于github命令行客戶端。
按照缺省安裝,github會(huì)在桌面上生成一個(gè)git shell的圖標(biāo),雙擊即可進(jìn)入命令行界面。這個(gè)命令行界面整合了github的相關(guān)命令和windows相關(guān)命令,比原來的unix命令行風(fēng)格好用了很多。
創(chuàng)建一個(gè)本地工作目錄,比如D:\HelloX,然后使用CD等命令,定位到工作目錄,運(yùn)行下列命令:
D:\HelloX>git clone https://github.com/yourname/HelloX_STM32.git
即可把您在github上fork的項(xiàng)目,下載到本地。注意把上述URL中的用戶名,換成你自己的github用戶名。
下載完畢之后,進(jìn)入新創(chuàng)建的項(xiàng)目目錄(位于您的工作目錄下),然后會(huì)發(fā)現(xiàn)命令行提示符變了。運(yùn)行g(shù)it status命令,即可看到當(dāng)前項(xiàng)目的狀態(tài)。
第五步:對(duì)源代碼進(jìn)行編輯和修改
這一步是核心工作,使用編譯器打開下載的項(xiàng)目,比如用MDK,可以直接打開STM32版的HelloX內(nèi)核項(xiàng)目。遵循正常的程序編寫流程,對(duì)源代碼進(jìn)行修改即可。
第六步:提交本地修改
第五步修改完成之后,您所做的修改只是停留在源代碼文件中,尚未被github接納到它自己的數(shù)據(jù)庫中。這時(shí)候,必須在命令行下執(zhí)行commit操作。過程如下:
1.??????執(zhí)行g(shù)it status命令,會(huì)列做了修改的文件,包括增加的源代碼文件、刪除的源代碼文件;
2.??????執(zhí)行g(shù)it add . 命令(注意命令后面的點(diǎn)號(hào)),把修改增加到github管理的數(shù)據(jù)庫中;
3.??????執(zhí)行g(shù)it commit –m “修改描述” 命令,把修改提交到github本地庫中。注意,引號(hào)中的描述,是對(duì)本次修改的簡(jiǎn)要介紹,會(huì)呈現(xiàn)在源代碼文件的修改歷史中。
完成上述步驟之后,您所做的修改就記錄到github本地庫中了。
如果做進(jìn)一步的源代碼修改,修改完成后,重復(fù)上述操作,提交到本地庫中。
第七步:把本地修改上載到github
在本地代碼庫上完成提交之后,修改還是局限在本地庫,尚未上傳到github的個(gè)人空間內(nèi)。這時(shí)候執(zhí)行下列命令,把修改的代碼同步到您自己的github空間中:
D:\HelloX>git push –u origin master
其中的origin,代表代碼的原始版本,即是您自己在github上fork的版本(注意不是項(xiàng)目的最原始版本)。Master則是本地版本。
第八步:發(fā)起pullrequest,請(qǐng)求合并修改
Push到個(gè)人github空間之后,如果希望合并到項(xiàng)目的主版本中,必須發(fā)起pull request,讓項(xiàng)目管理員來審核您所做的修改,并決定是否合并到項(xiàng)目主版本中。具體操作是,在您自己的github項(xiàng)目頁面上,點(diǎn)擊pull request,會(huì)顯示出創(chuàng)建pull request的頁面。如果感覺頁面內(nèi)容很復(fù)雜,不要緊,直接點(diǎn)擊create pull request即可,大部分內(nèi)容,github已幫助您填好了。
到此,您的大部分工作就完成了,接下來就是項(xiàng)目管理員審核pull request,并討論是否最終合并到版本中。如果確定要合并,那么您的contribution會(huì)被記錄下來。
?
轉(zhuǎn)載于:https://www.cnblogs.com/fengju/p/6174197.html
總結(jié)
以上是生活随笔為你收集整理的HelloX项目github协同开发指南的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 翻译关于ViewController的一
- 下一篇: libgdx学习记录18——Box2d物