<em id="pn7p8"><acronym id="pn7p8"><u id="pn7p8"></u></acronym></em>

    <th id="pn7p8"></th>

    <button id="pn7p8"></button>

      <dd id="pn7p8"></dd>
      <progress id="pn7p8"><track id="pn7p8"></track></progress>

      Linux培訓
      達內IT學院

      400-111-8989

      使用版本控制系統的3個建議

      • 發布:Linux培訓
      • 來源:網絡
      • 時間:2015-06-30 18:32

      如果說有什么是開發軟體專案一定要使用的基礎工具,使用「版本控制系統」應該可以記上一筆。無論是個人或是團隊開發,都可以透過版本控制系統獲得巨大的好處。

      沒有版本控制系統的話,檔案可能被別人或自己不小心覆蓋或遺失、也不知道是誰因為什么原因改了這段程式碼、也沒辦法可以復原回前幾天的修改。有了版本控制系統,開發人員只要將每次程式碼的變更都紀錄(Commit)起來,并且透過版本控制系統中進行更新。

      有了版本控制系統,我們可以瀏覽所有開發的歷史紀錄,掌握團隊的開發進度,而且作任何修改都不再害怕,因為你可以輕易的復原回之前正常的版本。我們也可以透過分支(Branching)和標簽(Tagging)的功能來進行軟體發行的不同版本,例如穩定版本、維護版本和開發中版本。

      已經沒有什么可以阻礙你使用版本控制系統,Git 或Mercurial 是免費開源的版本系統系統、隨處可用的網路、便宜的云端伺服器,甚至有現成的第三方服務Github 或Bitbucket。

      如果你還沒有使用的話,建議馬上為你的軟體專案建立版本控制。接下來是幾點使用版本控制系統的建議:

      1. 把所有東西都放進版本控制系統

      是的,「所有」專案中的產出物(Source Artifact)都放到版本控制系統之中,這包括了程式原始碼、測試程式、文件、設定檔、各種自動化腳本等等。除了新成員可以很容易拉出最新的版本馬上開始工作之外,我們也希望在測試環境、正式環境中,也可以隨時更新到我們所指定的版本,因此將所有變更的紀錄保存起來是非常重要的。

      例如,資料庫綱要(Schema)的變更也必須納入版本控制。首先,我們在資料庫中紀錄它目前的版本編號。接著我們每次的修改都透過一個自動化腳本來執行,并將這個腳本放入版本控制之中,而不是手動用指令去修改綱要。這樣的好處是團隊中每個人都可以透過版本控制系統看到這個變更,并且升級他的資料庫。測試和正式的伺服器環境,也會透過這個腳本來自動進行升級。筆者熟悉的Ruby on Rails 中就有內建這樣的Migration 機制,其他程式語言也有類似的資料庫工具。

      另外,以伺服器應用來說,光是有「程式原始碼」還是無法100%讓軟體正確地跑起來,我們還需要知道伺服器的配置設定,包括基礎網路設定、作業系統設定、依賴的套件版本等等。因此最好這些配置設定也可以納入版本管理系統之中。近年來云端技術的進步,已經可以將這些基礎設施設定當作程式( Infrastructure as Code ),無縫地讓每個成員和所有環境都使用完全相同的設定,減少出錯的可能性。

      2. 頻繁且適當大小的遞交

      如果久久才遞交(Commit)一次修改到版本控制系統,那么你只是把版本控制系統當作一種備份工具而已,而沒有享受到它真正的好處。頻繁的遞交可以幫助團隊開發進度的透明化,減少多人開發時的程式碼沖突。當多人同時修改同一塊程式碼時,解決程式碼沖突是很麻煩的事情。還有,我們也希望每一次的遞交有適當的粒度大小,也就是每個Commit 的內容應該有高度相關性和獨立性。例如是一個小功能或是一個小改進。如果你同時在做新功能A和修舊Bug,那么就應該分開兩次遞交。語法錯誤無法建構的程式也不應Commit 造成團隊困擾。

      有良好大小的Commit 的好處除了版本的歷史紀錄更加清楚之外,我們可以非常輕易的做程式碼的復原或移植,假設上述的新功能A有問題,我們可以只復原A而不影響修好的Bug ,或是只挑選修Bug的移植到不同分支去。

      3. 良好的遞交訊息

      每一次的遞交我們都必須附上一段解釋訊息,說明修改的內容和原因。這除了可以幫助團隊合作之外,更重要的是讓軟體有更好的維護性,以便將來備查,以下的場景相信開發者都不陌生:

      軟體發現一個Bug,下班前指派給你修

      你追Code 追到一段看不懂的程式,也沒有任何注解

      透過版本控制系統,你找到了某A 君在一年前加了這行,遞交的訊息是Fixed shit bug 或一個單字Tweaks

      A 君還在公司,可是他也不記得當初是哪一個shit。或是他已經下班或離職了,反正找不到

      你硬改了這行code,發布出去

      這個功能是修好了,但是發現另一個功能爛了

      繼續加班到凌晨

      一個好的遞交訊息應該包括一行摘要訊息,描述你為什么做這段變更,可能是新增、移除、修正某個功能,而不是描述新增或修改哪些檔案,重點應放在Why 而不是What 。因為修改了哪些檔案和行數我們看版本差異就知道了,無須重復描述。如果你發現很難摘要,那可能表示你包含太多變更在同一次遞交了,請試著拆開。

      更多訊息細節可能包括1. 為什么這個修改是必要的?因為某種Workaround?2. 解決問題背后的原理是什么?3. 影響的副作用是什么?5. 專案管理系統(Issue Tracking System)的關聯票號等等

      預約申請免費試聽課

      填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

      上一篇:2015年度開源項目新秀
      下一篇:為最佳性能調優 Nginx
      • 掃碼領取資料

        回復關鍵字:視頻資料

        免費領取 達內課程視頻學習資料

      • 視頻學習QQ群

        添加QQ群:1143617948

        免費領取達內課程視頻學習資料

      Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

      選擇城市和中心
      黑龍江省

      吉林省

      河北省

      湖南省

      貴州省

      云南省

      廣西省

      海南省

      高清特黄a大片,日本真人真做爰,特级做人爱C级,免费a级毛片 百度 好搜 搜狗
      <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>