版本控制报告
小組名稱:nice!
組長(zhǎng):李權(quán)
成員:韓媛媛 ?于淼?劉芳芳?宮麗君
編寫(xiě)人:韓媛媛
項(xiàng)目名稱:約跑
版本控制的目的:
許多人習(xí)慣用復(fù)制整個(gè)項(xiàng)目目錄的方式來(lái)保存不同的版本,或許還會(huì)改名加上備份時(shí)間以示區(qū)別。這么做唯一的好處就是簡(jiǎn)單。不過(guò)壞處也不少:有時(shí)候會(huì)混淆所在的工作目錄,一旦弄錯(cuò)文件丟了數(shù)據(jù)就沒(méi)法撤銷恢復(fù)。
為了解決這個(gè)問(wèn)題,人們很久以前就開(kāi)發(fā)了許多種本地版本控制系統(tǒng),大多都是采用某種簡(jiǎn)單的數(shù)據(jù)庫(kù)來(lái)記錄文件的歷次更新差異。
?
問(wèn)題:
?
1、如果你的團(tuán)隊(duì)來(lái)了一個(gè)新隊(duì)員,有一臺(tái)全新的機(jī)器,?你們是否有一個(gè)文檔,只要設(shè)置了相應(yīng)的權(quán)限,她就可以根據(jù)文檔,從頭開(kāi)始搭建環(huán)境,并成功地把最新、最穩(wěn)定版本的軟件編譯出來(lái),并運(yùn)行必要的單元測(cè)試?(在這過(guò)程中,不需要和老隊(duì)員做任何交流)
??我們現(xiàn)階段沒(méi)有開(kāi)發(fā)文檔,因?yàn)榻M長(zhǎng)組員忙于進(jìn)展項(xiàng)目和上課寫(xiě)作業(yè)等,還沒(méi)有來(lái)得及寫(xiě)。但是我們可以將文件拷貝給新成員,新成員與組長(zhǎng)交流一下,知道流程后,就能很快搭載出來(lái)了,這樣可以更好的讓新成員明白軟件的制作流程,更加理解各個(gè)功能的構(gòu)成方式,有益于新成員的學(xué)習(xí),自主開(kāi)發(fā)與合作交流。
2.、你的團(tuán)隊(duì)的源代碼控制在哪里?用的是什么系統(tǒng)?如何處理文件的鎖定問(wèn)題?
場(chǎng)景:?程序員果凍正在對(duì)幾個(gè)文件進(jìn)行修改,實(shí)現(xiàn)一個(gè)大的功能, 這時(shí)候,程序員小飛也要改其中一個(gè)文件,快速修復(fù)一個(gè)問(wèn)題。怎么辦?
一個(gè)代碼文件被簽出 (check out) 之后,另一個(gè)團(tuán)隊(duì)成員可以簽出這個(gè)文件,并修改,然后簽入么?
有幾種設(shè)計(jì),各有什么優(yōu)缺點(diǎn)?
例如,簽出文件后,此文件就加鎖,別人無(wú)法簽出;? 或者, 所有人都可以自由簽出文件
回答:老師規(guī)定代碼在coding.net中托管。coding中有Git項(xiàng)目倉(cāng)庫(kù),通過(guò)計(jì)算機(jī)對(duì)其平臺(tái)的搭建,可以敏捷高效地管理項(xiàng)目版本。
小飛要改其中一個(gè)文件,只要記住組內(nèi)的賬戶,密碼,就可以對(duì)新寫(xiě)出來(lái)的文件進(jìn)行上傳,當(dāng)組內(nèi)成員,組長(zhǎng)通過(guò)后,對(duì)其進(jìn)行覆蓋。
加鎖后有Bug無(wú)法更改,好處是版本穩(wěn)定,不會(huì)造成混亂。
所有人可以自由簽出文件:好處是易于增加功能,更改Bug。壞處:軟件版本容易混亂。
用的是:win10 系統(tǒng)
文件不會(huì)鎖定,但是提交服務(wù)器之間要組內(nèi)通過(guò),才能提交。
3.如何看到這個(gè)文件和之前版本的差異?如何看到代碼修改和工作項(xiàng)(work item),缺陷修復(fù)(bug fix) 的關(guān)系。
?? 場(chǎng)景: 程序員果凍看到某個(gè)文件被修改了,他怎么看到這個(gè)文件在最近的修改究竟改了哪些地方??(例子)
?? 場(chǎng)景: 程序員果凍看到某個(gè)文件在最新版本被改動(dòng)了100 多行, 那么和這100多行對(duì)應(yīng)的其他修改在什么文件中呢? 這個(gè)修改是為了解決哪些問(wèn)題而作的呢? 那些問(wèn)題有工作項(xiàng) (work item,issue),或者bug 來(lái)跟蹤么?
? Git通過(guò)命令行,可以獲得兩個(gè)版本所有的增加,刪除,修改的文件列表。可以查看日志。
4.如果某個(gè)文件在你簽出之后已經(jīng)被別人修改,并且簽入了,那么你在簽入你的修改的時(shí)候,?如何合并不同的修改(merge)??你用了什么工具來(lái)幫助你?
?這種情況我一般的處理方式是備份本地自己開(kāi)發(fā)的一份代碼,先把別人簽入的代碼更新到本地,然后在本地手動(dòng)合并修改,用的工具是git?Bash。
5.你有20個(gè)文件都是關(guān)于同一個(gè)功能的修改,你要如何保證這些文件都同時(shí)簽入成功(修改的原子性),或者同時(shí)簽入不成功?
?場(chǎng)景: 程序員果凍要簽入 20 個(gè)文件,他一個(gè)一個(gè)地簽入, 在簽入完5 個(gè) .h 文件之后, 他發(fā)現(xiàn)一些 .cpp 文件和最新的版本有沖突,他正在花時(shí)間琢磨如何合并... 這時(shí)候, 程序員小飛從客戶端同步了所有最新代碼, 開(kāi)始編譯, 但是編譯不成功 - 因?yàn)橛胁煌降?.h 文件和 .cpp 文件!? 這時(shí)候, 別的程序員也來(lái)抱怨同樣的問(wèn)題,果凍應(yīng)該怎么辦?
?
6.你的PC 上有關(guān)于三個(gè)功能的修改,但是都沒(méi)有完成,有很多文件處于半完工的狀態(tài),這時(shí)你要緊急修改一個(gè)新的 bug,如何把本地修改放一邊,保證在干凈的環(huán)境中修改這個(gè) bug, 并成功地簽入你的修改 ---?changelist management。
回答:先還原成最新的版本,然后再由工具git?Bash,進(jìn)行對(duì)比和組合。
7.如何給你的源代碼?建立分支??
場(chǎng)景:你們需要做一個(gè)演示,所以在演示版本的分支中對(duì)各處的代碼做了一個(gè)臨時(shí)的修改, 同時(shí),主要的分支還保持原來(lái)的計(jì)劃開(kāi)發(fā)。 你們?cè)趺醋龅降?#xff1f; 在演示之后,演示版本的有些修改應(yīng)該合并到主分支中,有些則不用,你們是怎么做到的?
場(chǎng)景: 你們的軟件發(fā)布了,有很多用戶,一天,一個(gè)用戶報(bào)告了一個(gè)問(wèn)題,但是他們是用某個(gè)老版本,而且沒(méi)有條件更新到最新版本。 這時(shí)候,你如何在本地構(gòu)建一個(gè)老版本的軟件,并試圖重現(xiàn)那個(gè)問(wèn)題?
回答:通過(guò)TFS源代碼資源管理器可以為某一.java文件建立新的分支。在Github中,可以通過(guò)git log命令來(lái)查看歷史提交記錄??梢越⒎种?。
8.
一個(gè)源文件,如何知道它的每一行都是什么時(shí)候簽入的,為了什么目的簽入的(解決了哪個(gè)任務(wù),或者哪個(gè)bug)?
場(chǎng)景: 一個(gè)重要的軟件歷經(jīng)幾年,幾個(gè)團(tuán)隊(duì)的開(kāi)發(fā)和維護(hù),忽然出現(xiàn)在某個(gè)條件下崩潰的事故,?程序員果凍經(jīng)過(guò)各種debug手段,發(fā)現(xiàn)問(wèn)題是在某一個(gè)文件中有一行代碼似乎顯然出了問(wèn)題, 但是這個(gè)模塊被很多其他模塊調(diào)用, 這行代碼是什么時(shí)候,為了什么目的,經(jīng)過(guò)誰(shuí)簽入的呢? 如果貿(mào)然修改, 會(huì)不會(huì)導(dǎo)致其他問(wèn)題呢? 怎么辦?
回答:在Github頁(yè)面中可以直接查看到文件簽入的時(shí)間,和目的上面會(huì)有標(biāo)注。
9.如何給一個(gè)系統(tǒng)的所有源文件都打上標(biāo)簽,這樣別人可以同步所有有這個(gè)標(biāo)簽的文件版本?
代碼每天都在變, 有時(shí)質(zhì)量變好,有時(shí)變差,我們需要一個(gè) Last Known Good (最后穩(wěn)定的好版本) 版本, 這樣新員工就可以同步這個(gè)版本, 我們?nèi)绻枰l(fā)布,也是從這個(gè)版本開(kāi)始。 那么如何標(biāo)記這個(gè) Last Known Good 版本呢?
ast Known Good (最后穩(wěn)定的好版本)?版本可以理解為基線版本,通常情況下,每次正式上線的版本都會(huì)打基線,即備份這個(gè)版本的源代碼和發(fā)布包,可以通過(guò)標(biāo)簽快速定位到某一個(gè)變更集并對(duì)其進(jìn)行操作。這就是最后穩(wěn)定好版本。
10.你的項(xiàng)目的?源代碼和測(cè)試?這些代碼的單元測(cè)試,以及其他測(cè)試腳本都是放在一起的么? 修改源代碼會(huì)確保相應(yīng)的測(cè)試也更新么?你的團(tuán)隊(duì)是否能部署自動(dòng)構(gòu)建的任務(wù)?
在簽入之前,程序員能否自動(dòng)在自己的機(jī)器上運(yùn)行自動(dòng)測(cè)試,以保證本地修改不會(huì)影響整個(gè)軟件的質(zhì)量?
??? 在程序員提交簽入之后,服務(wù)器上是否有自動(dòng)測(cè)試程序, 完成編譯,測(cè)試,如果成功,就簽入,否則,就取消簽入?
??? 團(tuán)隊(duì)是否配置了服務(wù)器,它自動(dòng)同步所有文件,自動(dòng)構(gòu)建,自動(dòng)運(yùn)行相關(guān)的單元測(cè)試,碰到錯(cuò)誤能自動(dòng)發(fā)郵件給團(tuán)隊(duì)
回答:我們還沒(méi)有進(jìn)行測(cè)試,如果以后時(shí)間允許,我們會(huì)編寫(xiě)測(cè)試程序進(jìn)行測(cè)試。
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/liquan/p/6095584.html
總結(jié)
- 上一篇: 插画版 Kubernetes 指南
- 下一篇: 学计算机的心理300字,心理作文300字