版本控制 回答問題

2022-07-15 10:27:14 字數 3887 閱讀 7873

此作業要求參見:

一,問題回答

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

回答:

是的,我們開發完小程式後,我們都會把需要搭建的環境和操作相關的步驟都會寫在相應的文件上,這樣做不僅可以節省新隊員熟悉專案的時間,而且以後還會把專案和文件分享到github上,供更多人進行開源共享。

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

回答:專案在 github上,使用 git 進行版本控制。使用 win10 系統。我們團隊的在處理檔案的鎖定問題時沒有加鎖,我們的專案比不上大型企業的專案,所以沒有對檔案遷入遷出進行過多的限制。將檔案在遷入遷出時加鎖,顯然可以保證源**修改的同步性,減少不必要的衝突和錯誤,但是這樣的缺點是顯而易見的,由於缺乏了並行性,專案開發的效率就被極大地降低了,以我們小組現在的專案規模就不需要加鎖。當然對於檔案鎖定問題:可以這樣,在主分支master中,若要實現乙個大的功能,可以在當前master分支開乙個新的分支使用者對檔案進行改寫。下乙個人也開在當前master分支開乙個分支新的使用者分支進行bug的修復,修復完成之後與master進行合併,完成了功能的實現之後再與master分支進行合併。

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

回答:通過檢視日誌來了解各個版本的差異,可以看到相關的變化。我們在提交時會在修改的原始碼上新增修改備註,這樣就能看到**修改和工作項 (work item),缺陷修復 (bug fix) 的關係了。

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

回答:一般不會出現這樣的情況,大家都只負責自己的功能版塊,修改自己的部分,因為都是提前商量好,不會和別人的產生衝突,即使產生了問題,也會即使與對方交流然後解決。

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

回答:通過組員之間私下交流,保證檔案與檔案之間同步。

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

回答:在原來的基礎上,重新建立乙個分支,專門用來處理bug。

6. 規範操作和自動化

你的團隊規定開發者簽入的時候要做這些事情:

- 執行單元測試,相關的**質量測試。

- **複審 (要有別的員工的名字)

- 和這次簽入相關的issue 編號,任務/task,缺陷/bug 編號,等等, 以備查詢。

請問你的團隊有這樣的自動化工具讓開發者方便地一次性填入所有資訊然後提交麼? (高階功能, **提交之後, 相關bug 的狀態會改動為 「fixed」, 並且有鏈結指向這次簽入。)

回答:我們目前還沒有使用這樣的工具。

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

回答:

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

回答:在github上每次提交,都會留下commit記錄,也可以通過工作日誌來了解什麼時候解決了哪個任務或者哪個bug;或者通過新增相關注釋備註來解決。

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

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

回答:在github上每次提交的時候將自己所寫的內容標記好是什麼,然後在後同步的時候就能夠清晰。當然也可以在 last know good版本時建立分支,需要的時候從最後乙個last know good版本中匯出。

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

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

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

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

回答:我們團隊目前沒有配置伺服器,團隊組員進行了一部分單元測試,由於專案部分新增的功能還尚未完全實現,所以後期整個專案完成後會對整個專案進行逐個測試。

二.作業題,分析比較各種軟體構建環境:

①github

優勢:

劣勢:

1.github 使用 git 分布式版本控制系統,於windows不太友好。

2.國內訪問速度太慢,經常出現connect time-out。

3.不能很好的解決gb2312/gbk,對中文不夠友好。

4.**保密性差。

②coding

優勢:

1.某分支開發完成後向主分支提交合併請求,得到管理者允許後才可合併到主分支,設定合併請求,便於多人協作管理,保護**質量。

2.除了 git 分布式控制系統,還支援通過 svn 客戶端訪問,滿足使用 svn 做**管理的團隊需求。

3.支援建立、編輯、篩選**分支,並可將特定分支設為保護分支,方便版本管理。

4.可選擇不同的分支版本進行對比,檢視**改動前後版本差異和檔案改動。

劣勢:

1.需要遵守一定的格式來編寫模組,也就是說開源的模組大部分都不適用,所以 coding 適合組織自己的**,就像 jquery 一樣。

2.每個模組即乙個變數,會匯入到全域性之中,所以模組之間需要避免重名,但是支援設定 global,設定了的話所有變數會匯入到 global 下。

3.網域名稱需要備案,需要申請。

③visual studio team foundation server

優勢:

1.資料庫建模功能包括概念工具、邏輯工具和實體設計工具,以及對使用儲存過程、索引、檢視等等(涵蓋企業資料庫開發的各個方面)的整合支援。

2.強大的語義錯誤檢查功能簡化了建立完全相容模型的過程。

3.強健而靈活的軟體建模

4.綜合資料庫開發功能

劣勢:

1.介面設計沒有充分考慮空間占用

2.輸出顯示過於單調

3.設定**格式不夠靈活

讀程式,回答問題

閱讀下面程式,請回答如下問題 問題1 這個程式要找的是符合什麼條件的數?問題2 這樣的數存在麼?符合這一條件的最小的數是什麼?問題3 在電腦上執行這一程式,你估計多長時間才能輸出第乙個結果?時間精確到分鐘 電腦 單核cpu 4.0g hz,記憶體和硬碟等資源充足 問題4 在多核電腦上如何提高這一程式...

讀程式回答問題

問題1 這個程式要找的什麼條件的數?問題2 這樣的數存在嗎?符合這一條件的最小的數是什麼?問題3 在電腦上執行這一程式,你估計多長時間才能輸出第乙個結果?時間精確到分鐘 電腦 單核cpu 4.0g hz,記憶體和硬碟等資源充足 問題4 在多核電腦上如何提高這一程式的執行效率?程式 using sys...

閱讀程式,回答問題

using system using system.collections.generic using system.text namespace findthenumber for int64 i 1 i int64.maxvalue i else if hit 2 else break if h...