附加作業要求——版本控制總結
版本控制總結
0. 在吹牛之前,先回答這個問題: 如果你的團隊來了一個新隊員,有一臺全新的機器, 你們是否有一個文檔,只要設置了相應的權限,她就可以根據文檔,從頭開始搭建環境,並成功地把最新、最穩定版本的軟件編譯出來,並運行必要的單元測試?
有的,我們團隊使用了coding.net,將新的成員添加在當中,新老成員就可以一起工作了。之前的代碼可以通過coding.net下載到本地,再配合相應的開發工具,即可使用。
1.你的團隊的源代碼控制在哪裏?用的是什麽系統?如何處理文件的鎖定問題?
我們團隊的源代碼在coding.net托管,采用git的方式進行控制。使用的win7系統下Android Studio。文件鎖定可以checkout鎖定,其他人只讀,或者下載到本地修改後commit到分支,由管理員統一合並(這個方法是上一屆的師兄傳授的)。
2.如何看到這個文件和之前版本的差異? 如何看到代碼修改和工作項 (work item),缺陷修復 (bug fix) 的關系。
使用版本控制中的工具“commit”,就可以看到版本之間差異了。
3.如果某個文件在你簽出之後已經被別人修改,並且簽入了,那麽你在簽入你的修改的時候, 如何合並不同的修改(merge)? 你用了什麽工具來幫助你?
先更新本地服務器代碼,如果有沖突則對比解決沖突。工具是TortoiseGit。
4.你有20個文件都是關於同一個功能的修改,你要如何保證這些文件都同時簽入成功(修改的原子性),或者同時簽入不成功?
場景: 程序員果凍要簽入 20 個文件,他一個一個地簽入, 在簽入完5 個 .h 文件之後, 他發現一些 .cpp 文件和最新的版本有沖突,他正在花時間琢磨如何合並... 這時候, 程序員小飛從客戶端同步了所有最新代碼, 開始編譯, 但是編譯不成功 - 因為有不同步的 .h 文件和 .cpp 文件! 這時候, 別的程序員也來抱怨同樣的問題,果凍應該怎麽辦?
目前沒有出現過這種情況。如果出現了,首先會查閱相關方面的文獻。或是與團隊成員溝通,是否對文件進行鎖死操作。
5.你的PC 上有關於三個功能的修改, 但是都沒有完成,有很多文件處於半完工的狀態,這時你要緊急修改一個新的 bug,如何把本地修改放一邊,保證在幹凈的環境中修改這個 bug, 並成功地簽入你的修改 --- changelist management。
在原來的基礎上,重新建立一個分支,專門用來處理bug。
6.規範操作和自動化
你的團隊規定開發者簽入的時候要做這些事情: - 運行單元測試,相關的代碼質量測試。 - 代碼復審 (要有別的員工的名字) - 和這次簽入相關的issue 編號, 任務/task, 缺陷/bug 編號,等等, 以備查詢。
附加作業要求——版本控制總結