GIT結合jira使用以及程式碼稽核規範

一、開發週期和sprint概述

1。1 sprint週期

按照固定週期(一個sprint,通常是1周或者2周)釋出新版本。

目前規劃:每一到二週一個sprint,最長不超過1個月

全部code提交、合併至release,部署到測試環境並開始整合測試

1。2 每個週期開始(或者上個週期快結束)時,大致確定下來下一srpint週期要完成的任務。通常有一些新feature,也有一些舊bug。

feature的分解:一個大的feature,通常不會在一個sprint裡完成。一個sprint裡,也不會只做一個新feature。為此,需要各feature小組把該feature分解成若干階段,方便在各個sprint分別提交。

各bug均可在自己的分支裡工作,快速修復並提交。不用多個bug擠在一個分支裡。

bug的選取:通常按照優先順序。優先順序同樣的,優先修復新近發現的。(注意,這裡的bug指的是backlog裡已有的、某種程度上不是火燒眉毛的那種bug,可以不太緊張地排期來修。還有一種bug是在線上系統發現的、火燒眉毛的、必須立即修復並上線的,通常叫hotfix。)

1。3 每天早上都要同步(更新)一下code,把本feature小組別人已經提交的code同步下來,及早發現和解決衝突。

1。4 一個sprint裡,每個開發人員都要對該spirnt的deadline心裡有數。在臨近deadline時,注意提交程式碼的質量。

1。5 每個feature小組,每次push到自己的遠端分支,都應該對此次提交的程式碼的質量有足夠信心(也就是說,經過了足夠的自測)。

1。6 臨近sprint deadline時,各組協調一下,把各自遠端分支按一定順序依次合併到release分支。後合併的,要先同步一下code,預防衝突。

1。7 所有feature分支、bug分支都合併到release分支後,部署到SIT環境上,進行一定程度的整合測試,並修復發現的bug。

1。8 若測試量大:測試人員測試若干天,開發人員同時開發下一sprint的任務。

1。9 上線。

1。10 線上發現問題:回滾 vs。 hotfix。

二、具體git操作概述

GIT結合jira使用以及程式碼稽核規範

gitlab上長期保留兩個branch:

master

release

。並臨時保留若干

feature-{jira編號}-{date}

,例如:feature-SEH-2-20211231,分支,用於新功能開發。

每次有新功能要開發,要從release拉出新分支(命名為

feature-{jira編號}-{date}

)。該功能開發小組的各成員都在

feature-{jira編號}-{date}

分支上工作,在本地

feature-{jira編號}-{date}

分支上commit上並push到遠端

feature-{jira編號}-{date}

分支上。

注意:

這裡的jira編號為

story

feature

編號,當專案上線之後,分支會保留留一段時間(一般一週左右,最長不不超過1個月),直至最終刪除

2。1 新功能開發完成後,從遠端feature-{jira編號}-{date}分支上合併到遠端release分支上。

大致工作流程如下:

gitlab上長期保留兩個分支:master、release。

release分支是定時更新的相對穩定的版本,從各feature、bugfix分支合併而來,生命週期是一個sprint。

master分支是保持永遠穩定的版本,從release分支合併而來,落後release一個版本。

每次有新功能要開發,要從遠端release分支拉出遠端新分支(命名為

feature-{jira編號}-{date}

),由各個feature的負責人或者主力開發人員負責,過程如下:

從遠端倉庫clone到本地:

git clone git@gitlab2。ciics。cn:zyf-service/zyf-service-claim。git

建立本地feature-{jira編號}-{date}分支,跟蹤遠端release分支:

git checkout -b feature-{jira編號}-{date} origin/release

從本地feature-{jira編號}-{date}分支push到遠端,以建立遠端feature-{feature_name}-{date}分支:

git push -u origin feature-{fjira編號}-{date}

注意:

feature的負責人有以下職責:

負責建立feature-{jira編號}-{date}分支

開發完成後合併feature-{jira編號}-{date}分支到release分支,解決衝突

其他每個小組成員也在feature-{jira編號}-{date}分支上工作:

從遠端倉庫clone到本地:

git clone git@gitlab2。ciics。cn:zyf-service/zyf-service-claim。git

checkout 到分支feature-{jira編號}-{date}:

git checkout feature-{feature_name}-{date}

在本地feature-{jira編號}-{date}分支上工作、開發、修改,及時提交到本地:

git add xxx。file

git commit -m “JIRA-CODE commit log”

工作過程中,經常從遠端同步程式碼:

git remote update

git rebase origin/feature-{jira編號}-{date} //發生衝突要及時解決

把本地改動push到遠端同名分支。要經常:

git remote udpate

git rebase origin/feature-{jira編號}-{date} //發生衝突要及時解決

git push origin feature-{jira編號}-{date}

在適當時候,把遠端

feature-{{jira編號}-{date}

分支合併到遠端release分支。

什麼是“適當時候”?如果feature較小,兩三天就做完,則“feature做完時”是合適的。若feature較大,需要跨若干sprint,則“每個sprint結束時”是合適的。每個sprint是多長時間則可視具體情況而定。

這個merge過程,需要在gitlab的web頁面上提交一個“Merge Request”。該請求會發出一個code review請求。

過程如下:

在我們工程頁面下點選New Merge Request

選擇source和target branch,填寫相關內容,並提交

提交merge request,如果想從新選擇分支,可以點選Change branches,請求被接受後,gitlab上自動完成merge過程,不用人工再輸入命令。

release程式碼只有所屬小組的組長有許可權合交,組長在收到merge request的時候做code review,code review規範見第四章經過若干次從

feature-{jira編號}-{date}

分支合併到release分支及相應測試,可認為release分支穩定,可以正式對外發布,此時將release分支合併到master分支,並在master分支上打tag,如 v2。0。0等。可以同時有若干 feature 分支和或

bugfix-{jira編號}

分支進行工作,流程類似。若master分支上上線後發現了bug需要緊急修復,可從master分支拉出

hotfix-{jira編號}

,例如

hotfix-{SEH-100}

,分支工作,經過測試過後合併到master分支上,每次合併到master分支,都要把修改同時提交到release分支,同時通知所有feature分支都同步這次修改:

打TAG版本號管理

GIT結合jira使用以及程式碼稽核規範

在release分支上執行以下命令以把hotfix的修改提交到release分支上:

git remote update

git rebase origin/release

git push

各個feature分支也要合併這次修改:

git remote update

git rebase origin/release

git push

三、關於commit程式碼提交

正確的版本控制系統的使用方法是,一次提交只幹一件事:或是完成了一個新功能,或是修改了一個Bug、或是寫完了一節的內容,或是添加了一幅圖片,就執行一次提交。不要在下班時才想起來要提交,那樣的話版本控制系統就被降格為檔案備份系統了。

如果一件事提交了多次,把多次合交為一個commit,

比如修復了一個hotfix,那麼應該只是針對一個commit。

git關聯jira的ISSUE提交示例,提交方式如下所示:

git commit -m ISSUE_KEY comment _string

例如:

git commit -m ‘SHE-2 修復空指標BUG’

注意:

這裡的ISSUE_KEY是指JIRA的TASK ID 或 BUG ID