1. 程式人生 > >附加作業要求——版本控制總結

附加作業要求——版本控制總結

它的 java 通過 方式 多用戶 之間 缺陷 中修改 鏈接

版本控制總結

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 編號,等等, 以備查詢。
請問你的團隊有這樣的自動化工具讓開發者方便地一次性填入所有信息然後提交麽? (高級功能, 代碼提交之後, 相關bug 的狀態會改動為 “fixed”, 並且有鏈接指向這次簽入。) 目前還沒有。 7.如何給你的源代碼建立分支? 場景1:你們需要做一個演示,所以在演示版本的分支中對各處的代碼做了一個臨時的修改, 同時,主要的分支還保持原來的計劃開發。 你們怎麽做到的? 在演示之後,演示版本的有些修改應該合並到主分支中,有些則不用,你們是怎麽做到的? 場景2: 你們的軟件發布了,有很多用戶,一天,一個用戶報告了一個問題,但是他們是用某個老版本,而且沒有條件更新到最新版本。 這時候,你如何在本地構建一個老版本的軟件,並試圖重現那個問題? 場景1:將修改的代碼進行“分類”,選擇出需要保留的和相對無用的,無用的可以先註釋掉(不確定之後是否會用得上這部分代碼,所以不進行刪除操作)。保留的部分進行commit。 場景2:找歷史記錄,並將歷史版本下載到本地。 8.一個源文件,如何知道它的每一行都是什麽時候簽入的,為了什麽目的簽入的 (解決了哪個任務,或者哪個bug)? 有簽入操作均會有相應的時間標記。如果方便查看也可自行增加註釋。 9.如何給一個系統的所有源文件都打上標簽,這樣別人可以同步所有有這個標簽的文件版本?  代碼每天都在變, 有時質量變好,有時變差,我們需要一個 Last Known Good (最後穩定的好版本) 版本, 這樣新員工就可以同步這個版本, 我們如果需要發布,也是從這個版本開始。 那麽如何標記這個 Last Known Good 版本呢? 可以在 Last know Good版本時建立分支,需要的時候從最後一個Last know Good版本導出。 10.你的項目的源代碼和測試這些代碼的單元測試,以及其他測試腳本都是放在一起的麽? 修改源代碼會確保相應的測試也更新麽?你的團隊是否能部署自動構建的任務? 團隊沒有進行單元測試和其他的測試腳本,測試一般會在新功能推出時找一些組員進行體驗(不知道這個算不算是單元測試)。 11.分析比較各種軟件構建環境: 小組項目使用的Android Studio構建環境。Android Studio,安裝方便,下載插件也很方便,而且Android Studioye也可使用Java語言。

附加作業要求——版本控制總結