項目名稱:歡迎來怼
組名:部落格園Android版
組長:田繼平
成員:李圓圓,葛美義,王偉東,姜珊,邵朔,阚博文
問題
0. 在吹牛之前,先回答這個問題: 如果你的團隊來了一個新隊員,有一台全新的機器, 你們是否有一個文檔,隻要設定了相應的權限,她就可以根據文檔,從頭開始搭建環境,并成功地把最新、最穩定版本的軟體編譯出來,并運作必要的單元測試?
回答:沒有這個文檔,因為隻來了一位新隊員,而且我們用的是eclipse隻需配置JDK和一些Android開發環境即可,由于隻有一個新隊員,自認為通過隊員教另一個隊員的效率會更高一點,然後去我的coding.net去下載下傳我們可運作的代碼,運作程式設計即可,同時還能讓新老隊員更加彼此熟悉,更加的有利于團隊接下來的運作,更好的實作我們軟體的功能。
1、你的團隊的源代碼控制在哪裡?用的是什麼系統?如何處理檔案的鎖定問題?
回答:我們團隊的源代碼在coding.net托管,采用git的方式進行控制。使用的win7系統。檔案鎖定可以checkout鎖定,其他人隻讀,或者下載下傳到本地修改後commit到分支,由管理者統一合并。
2、如何看到這個檔案和之前版本的差異? 如何看到代碼修改和工作項 (work item),缺陷修複 (bug fix) 的關系。
回答:TortoiseGit中有與上一版本比較差異的功能,可以看到兩個版本間的變化。檢視日志中的送出說明,及代碼中對修改作出的相應注釋可以看到代碼修改和工作項,缺陷修複的關系。
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:在coding.net上建立分支,每一段修改都進行傳遞。将不需要的修改的地方删除。
場景2:在coding.net上建立分支,找曆史傳遞版本,将其下載下傳到本地,需要哪個版本都可以進行安裝,繼而重制使用者報告的問題。
8、一個源檔案,如何知道它的每一行都是什麼時候簽入的,為了什麼目的簽入的 (解決了哪個任務,或者哪個bug)?
回答:根據傳遞資訊來知道它是什麼時候簽入的,為什麼簽入的,在我們簽入的時候,會有簽入的時間,後面的備注會寫着什麼目的簽入的。
9、如何給一個系統的所有源檔案都打上标簽,這樣别人可以同步所有有這個标簽的檔案版本?
代碼每天都在變, 有時品質變好,有時變差,我們需要一個 Last Known Good (最後穩定的好版本) 版本, 這樣新員工就可以同步這個版本, 我們如果需要釋出,也是從這個版本開始。 那麼如何标記這個 Last Known Good 版本呢?
回答:可以在 Last know Good版本時建立分支,需要的時候從最後一個Last know Good版本導出。
10、你的項目的源代碼和測試這些代碼的單元測試,以及其他測試腳本都是放在一起的麼? 修改源代碼會確定相應的測試也更新麼?你的團隊是否能部署自動建構的任務?
回答:我們項目的源代碼和測試這些代碼的單元測試,以及其他測試腳本都是放在一起的。 修改源代碼不會確定相應的測試也更新。我的團隊不能部署自動建構的任務。
11、分析比較各種軟體建構環境:
回答:coding,net:個人認為Coding 的目标是做一個雲端的軟體開發平台,就是把軟體開發搬到雲上,隻需要一個浏覽器就能完成各種軟體開發的工作。
碼雲:個人認為他是一款線上代碼托管平台,基于git開發,類似于常用的github,可以把自己寫的程式代碼托管上去,這樣其他人就可以下載下傳使用,當然,你也可以建立私人倉庫來儲存自己的私人代碼。
github:個人認為Github 的價值在于它是人類軟體的基因庫,目前的地位已經不可能再有競争者出現。
17計算機技術 田繼平