在吹牛之前,先回答這個問題: 如果你的團隊來了乙個新隊員,有一台全新的機器, 你們是否有乙個文件,只要設定了相應的許可權,她就可以根據文件,從頭開始搭建環境,並成功地把最新、最穩定版本的軟體編譯出來,並執行必要的單元測試? (在這過程中,不需要和老隊員做任何交流)
我們的團隊留有必要的文件,但不是每乙個細節都花大量筆墨描述——所以只要新隊員有充分的經驗和正常的智力水平,是能夠復現系統的(我們無法教會乙個0基礎的人布置這個系統)
你的團隊的源**控制在**?用的是什麼系統?如何處理檔案的鎖定問題?
場景: 程式設計師果凍正在對幾個檔案進行修改,實現乙個大的功能, 這時候,程式設計師小飛也要改其中乙個檔案,快速修復乙個問題。怎麼辦?
乙個**檔案被簽出 (check out) 之後,另乙個團隊成員可以簽出這個檔案,並修改,然後簽入麼?
有幾種設計,各有什麼優缺點?
例如,簽出檔案後,此檔案就加鎖,別人無法簽出; 或者, 所有人都可以自由簽出檔案
我們的團隊源**控制使用git,**倉庫位於github,我們在協作中約定盡量以檔案為單位,即每個檔案有乙個主要負責人,一般這個檔案由該負責人編寫更新,所以避免了上述情況的發生。如果另乙個人需要修改檔案,可以讓負責人修改,抑或確定負責人暫時不修改該檔案的前提下,再修改該檔案(通常是由於負責人沒有時間才採取這個行為)
如何看到這個檔案和之前版本的差異? 如何看到**修改和工作項 (work item),缺陷修復 (bug fix) 的關係。
場景: 程式設計師果凍看到某個檔案被修改了,他怎麼看到這個檔案在最近的修改究竟改了哪些地方?
場景: 程式設計師果凍看到某個檔案在最新版本被改動了100 多行, 那麼和這100多行對應的其他修改在什麼檔案中呢? 這個修改是為了解決哪些問題而作的呢? 那些問題有工作項 (work item,issue),或者bug 來跟蹤麼?
通過github的**變更提示以及每次commit的文字描述,即可大致了解該次改動的目的
如果某個檔案在你簽出之後已經被別人修改,並且簽入了,那麼你在簽入你的修改的時候, 如何合併不同的修改(merge)? 你用了什麼工具來幫助你?
使用git的merge功能,由於已經做出了(1)中所提到的約定,git軟體能夠自動merge兩個人的修改,無需人為merge
你有20個檔案都是關於同乙個功能的修改,你要如何保證這些檔案都同時簽入成功(修改的原子性),或者同時簽入不成功?
場景: 程式設計師果凍要簽入 20 個檔案,他乙個乙個地簽入, 在簽入完5 個 .h 檔案之後, 他發現一些 .cpp 檔案和最新的版本有衝突,他正在花時間琢磨如何合併... 這時候, 程式設計師小飛從客戶端同步了所有最新**, 開始編譯, 但是編譯不成功 - 因為有不同步的 .h 檔案和 .cpp 檔案! 這時候, 別的程式設計師也來抱怨同樣的問題,果凍應該怎麼辦?
同(1),不存在兩個人同時修改乙個函式中的相同**。如必須要這樣做,說明該檔案可一分為二。
你的pc 上有關於三個功能的修改,但是都沒有完成,有很多檔案處於半完工的狀態,這時你要緊急修改乙個新的 bug,如何把本地修改放一邊,保證在乾淨的環境中修改這個 bug, 並成功地簽入你的修改 --- changelist management。
命令:
git clone [email protected]:default1406/phylab.git
修復bugs
git push origin master
如何給你的源**建立分支?
場景:你們需要做乙個演示,所以在演示版本的分支中對各處的**做了乙個臨時的修改, 同時,主要的分支還保持原來的計畫開發。 你們怎麼做到的? 在演示之後,演示版本的有些修改應該合併到主分支中,有些則不用,你們是怎麼做到的?
場景: 你們的軟體發布了,有很多使用者,一天,乙個使用者報告了乙個問題,但是他們是用某個老版本,而且沒有條件更新到最新版本。 這時候,你如何在本地構建乙個老版本的軟體,並試圖重現那個問題?
本專案暫無分支,因為目前均是增量修改。同時,不存在老版本軟體,因為本專案是**專案,所有訪問必然是最新的。如果需要保留不同版本,可以使用git新建分支,該分支開發完成後,下乙個更新採用新的分支進行,那麼如果某老版本出現問題,可以使用該版本的分支修復。
乙個原始檔,如何知道它的每一行都是什麼時候簽入的,為了什麼目的簽入的 (解決了哪個任務,或者哪個bug)?
場景: 乙個重要的軟體忽然出現崩潰的情況, 程式設計師果凍經過各種debug手段,發現問題是在某乙個檔案中有一行**似乎顯然出了問題,但是這個模組被很多其他模組呼叫,這行**是什麼時候,為了什麼目的,經過誰簽入的呢?如果貿然修改,會不會導致其他問題呢? 怎麼辦?
手動查閱該變更前後的commit內容以及commit的說明
如何給乙個系統的所有原始檔都打上標籤,這樣別人可以同步所有有這個標籤的檔案版本?
**每天都在變, 有時質量變好,有時變差,我們需要乙個 last known good (最後穩定的好版本) 版本, 這樣新員工就可以同步這個版本, 我們如果需要發布,也是從這個版本開始。那麼如何標記這個 last known good 版本呢?
建立乙個分支。操作同(6)
你的專案的源**和測試這些**的單元測試,以及其他測試指令碼都是放在一起的麼? 修改源**會確保相應的測試也更新麼?你的團隊是否能部署自動構建的任務?
在簽入之前,程式設計師能否自動在自己的機器上執行自動測試,以保證本地修改不會影響整個軟體的質量?
在程式設計師提交簽入之後,伺服器上是否有自動測試程式, 完成編譯,測試,如果成功,就簽入,否則,就取消簽入?
團隊是否配置了伺服器,它自動同步所有檔案,自動構建,自動執行相關的單元測試,碰到錯誤能自動發郵件給團隊
本專案採取了自動部署到開發伺服器、手動部署到發布伺服器的模式,由於發布間隔比開發提交的間隔要長,因此手動發布(手動執行發布指令碼)也是可行的。測試程式與**原始檔一同發布,所有成員共享。但是目前測試不能夠自動化進行,只能逐個測試執行,發布到伺服器上也不會自動進行測試。對於本專案這個自動化測試不是十分必要。
week16 實驗A TT數鴨子
題目 這一天,tt因為疫情在家憋得難受,在雲吸貓一小時後,tt決定去附近自家的山頭遊玩。tt來到乙個小湖邊,看到了許多在湖邊嬉戲的鴨子,tt頓生羨慕。此時他發現每乙隻鴨子都不 一樣,或羽毛不同,或性格不同。tt在腦子裡開了乙個map 鴨子,整數 tong,把鴨子變成了 一些數字。現在他好奇,有多少只...
團隊部落格作業 Week3
團隊github 姓名生活照 角色自我介紹 github 嶽桐宇 測試我是嶽桐宇,喜歡coding,喜歡倒騰新事物,好玩的事總要玩過才知道!馮煒韜 架構乙個人的命運啊,當然要靠自我奮鬥,但是也要考慮到歷史的行程。楊子琛 後端i love programming 程富瑞 前端 略 鄧楚雲pm生活不止眼...
Week4 結對練習 團隊作業1
2017 10 14 10 00pm,以部落格發表日期為準。晚交 0分 遲交兩周以上 倒扣本次作業分數 抄襲 倒扣本次作業分數 閱讀calculator類,主要實現兩個運算元的加減乘除運算,結合calstring類,擴充套件calculator類實現四則混合運算。類的分析可用思維導圖,參考 附加題 ...