團隊部落格 Week14

2022-07-29 03:48:06 字數 2882 閱讀 7820

0. 在吹牛之前,先回答這個問題: 如果你的團隊來了乙個新隊員,有一台全新的機器,你們是否有乙個文件,只要設定了相應的許可權,她就可以根據文件,從頭開始搭建環境,並成功地把最新、最穩定版本的軟體編譯出來,並執行必要的單元測試? (在這過程中,不需要和老隊員做任何交流)

答:文件並沒有寫。

因為我們的環境並不是很複雜,android studio, api22,以及從android studio上直接登入github拷貝最新**,就可以正常使用。

圖為我們的**結構規範。

1. 你的團隊的源**控制在**?用的是什麼系統?如何處理檔案的鎖定問題?

場景:程式設計師果凍正在對幾個檔案進行修改,實現乙個大的功能, 這時候,程式設計師小飛也要改其中乙個檔案,快速修復乙個問題。怎麼辦?

乙個**檔案被簽出 (check out) 之後,另乙個團隊成員可以簽出這個檔案,並修改,然後簽入麼?

有幾種設計,各有什麼優缺點?

例如,簽出檔案後,此檔案就加鎖,別人無法簽出;  或者, 所有人都可以自由簽出檔案

我們團隊的要求是:自己更新的**在push之前先pull下來已有的最新**,避免發生衝突。

用stash隱藏更改,pull之後再取消隱藏。

2. 如何看到這個檔案和之前版本的差異? 如何看到**修改和工作項 (work item),缺陷修復 (bug fix) 的關係。

場景: 程式設計師果凍看到某個檔案被修改了,他怎麼看到這個檔案在最近的修改究竟改了哪些地方? 

場景: 程式設計師果凍看到某個檔案在最新版本被改動了100 多行, 那麼和這100多行對應的其他修改在什麼檔案中呢? 這個修改是為了解決哪些問題而作的呢? 那些問題有工作項 (work item,issue),或者bug 來跟蹤麼?

答:在commit的時候要求協商issue的編號。修改記錄在commit的記錄中能看到。

3. 如果某個檔案在你簽出之後已經被別人修改,並且簽入了,那麼你在簽入你的修改的時候,如何合併不同的修改(merge)?你用了什麼工具來幫助你?

答:如果是自己的**用accept yours.如果是別人的**選擇accept theirs.

4. 你有20個檔案都是關於同乙個功能的修改,你要如何保證這些檔案都同時簽入成功(修改的原子性),或者同時簽入不成功?

場景: 程式設計師果凍要簽入 20 個檔案,他乙個乙個地簽入, 在簽入完5 個 .h 檔案之後, 他發現一些 .cpp 檔案和最新的版本有衝突,他正在花時間琢磨如何合併... 這時候, 程式設計師小飛從客戶端同步了所有最新**, 開始編譯, 但是編譯不成功 - 因為有不同步的 .h 檔案和 .cpp 檔案!  這時候, 別的程式設計師也來抱怨同樣的問題,果凍應該怎麼辦?

答:5. 你的pc 上有關於三個功能的修改,但是都沒有完成,有很多檔案處於半完工的狀態,這時你要緊急修改乙個新的 bug,如何把本地修改放一邊,保證在乾淨的環境中修改這個 bug, 並成功地簽入你的修改 ---changelist management

答:使用stash,修改所有修改或者選擇指定部分的隱藏。

附參考部落格:

6. 如何給你的源**建立分支

場景:你們需要做乙個演示,所以在演示版本的分支中對各處的**做了乙個臨時的修改, 同時,主要的分支還保持原來的計畫開發。 你們怎麼做到的? 在演示之後,演示版本的有些修改應該合併到主分支中,有些則不用,你們是怎麼做到的?

場景: 你們的軟體發布了,有很多使用者,一天,乙個使用者報告了乙個問題,但是他們是用某個老版本,而且沒有條件更新到最新版本。 這時候,你如何在本地構建乙個老版本的軟體,並試圖重現那個問題?

答:可以checkout出來乙個用來演示的分支,修改完了再merge回原分支。

7. 乙個原始檔,如何知道它的每一行都是什麼時候簽入的,為了什麼目的簽入的(解決了哪個任務,或者哪個bug)?

場景: 乙個重要的軟體忽然出現崩潰的情況,程式設計師果凍經過各種debug手段,發現問題是在某乙個檔案中有一行**似乎顯然出了問題,但是這個模組被很多其他模組呼叫,這行**是什麼時候,為了什麼目的,經過誰簽入的呢?如果貿然修改,會不會導致其他問題呢? 怎麼辦?

答:可以在github上看到最後一次修改的資訊,通過這個資訊可以知道誰的鍋……

8. 如何給乙個系統的所有原始檔都打上標籤,這樣別人可以同步所有有這個標籤的檔案版本?

**每天都在變, 有時質量變好,有時變差,我們需要乙個 last known good (最後穩定的好版本) 版本, 這樣新員工就可以同步這個版本, 我們如果需要發布,也是從這個版本開始。那麼如何標記這個 last known good 版本呢? 

9. 你的專案的源**和測試這些**的單元測試,以及其他測試指令碼都是放在一起的麼? 修改源**會確保相應的測試也更新麼?你的團隊是否能部署自動構建的任務?

在簽入之前,程式設計師能否自動在自己的機器上執行自動測試,以保證本地修改不會影響整個軟體的質量?

在程式設計師提交簽入之後,伺服器上是否有自動測試程式, 完成編譯,測試,如果成功,就簽入,否則,就取消簽入?

團隊是否配置了伺服器,它自動同步所有檔案,自動構建,自動執行相關的單元測試,碰到錯誤能自動發郵件給團隊

week14限時模擬

解題思路 用兩段時間分別記錄睡覺和活動 貓貓在兩段劇的間隔為a,那麼要判斷連續睡覺時間a與a的關係,如果ab那就直接no。注意熬夜的情況需要另外算,在計算的時候全部轉化成分鐘計算,比較方便。include include using namespace std const int maxn 25 c...

程式設計 week14 貓睡覺

解題思路 把時間轉換成分鐘,好進行比較 設定乙個ptp結構體,記錄一段開始結束的時間 一開始的輸入,記錄在rem陣列裡面 並且按照start的公升序排列 並且因為每天的表都是一樣的 所以要把第乙個番的時間填到最末尾 這樣就可以前後2天聯絡起來 然後找出合法的睡覺時間 記錄下來 並且把超出今天的部分,...

WEEK14限時大模擬

思路 大體思路是把所有的間隔小於a的區間合併作為活動的時間,然後再看合併完的時間是否超過了b。但是在實現的時候有很多細節。首先定義乙個時間類,過載小於號。然後以此定義時間區間類。有一種特殊情況是合併之後剩下的乙個區間小於a,也是不可以的。include include include include...