the DevOps journey (7) – 你的source code還沒上版控嗎?

原始程式碼對於軟體公司來說是一種資產,Source Code被納入版控不足為奇(沒有才奇怪),但我常常看到企業內的MIS/IT,認為自己開發的專案只是小型專案,或是開發人員只有『一個』,所以要控管什麼版本呢? 因為一切都在自己的腦袋裡啊。

不,千萬別這樣想。

在這個時代,任何專案,那怕從頭到尾都只是一個人開發的,都應該要簽入到版控系統當中。不管是任何一種專案,不管是因為任何目的原因所撰寫的,不管它能夠在企業中活多長,只要有需求,有程式碼,需要維護,就一律必須納入版控。

如果非要我在兩者中選擇其一,我會說,軟體專案成敗的關鍵常常不在開發,而在維護。在這個時代,幾乎沒有寫完程式碼後可以不用維護的專案,也沒有你可以大聲喊『Close!』結案之後就再也不管它的程式碼,幾乎所有的Projects都會持續衍生、修改Bugs、調整需求。如今想要很快的生出一個可以動的網站太容易了,但隨著需求的變更,對程式碼的修改常常才是軟體開發真正內涵的開始。況且廣義的說,專案還沒有交付前所作的任何需求變更或修改,也都得算是維護的一部分。

如果你敢在寫好程式碼編譯成.dll之後,立馬把source code丟掉,我就承認這世界上有不需要維護的專案,但我們從來不敢這麼做,對吧?不管一個專案再混亂、或是你開發的是根本是拋棄式的應用程式(用一次就不會再用),原始程式碼都至少還要留上一段時間,甚至永久保存下去。

而如今這些需要無限期永久保存的程式碼,慢慢的逐漸移動到了雲端環境上,我們到了一個版控雲端化的時代。當然,保存原始程式碼不是為了安全感,TFS/VSTS的版控可以幫助我們解決那些實質問題?

版本控管的價值

有沒有發生過底下這些事情?

  • 某位團隊中的程式設計師改了某一個bug,結果另一個原本好的功能卻壞掉了? 沒改過的地方怎麼會錯呢?
  • 客戶突然告訴你,你剛才改好的某個功能他不要了,他要回到上上上個版本的那個狀態!
  • 團隊成員結婚去度蜜月了,但不幸的是,他手上負責的某個案子,客戶發現了一個安全性的漏洞,嚴厲指責這估計是他結婚前一個月的某次修改時造成的,但...那段程式碼在哪呢?
  • 你同時是三個軟體開發專案、兩個維護案的程式碼設計師,面對客戶和專案經理天馬行空的需求,你的大腦常常必須在2-3個案子之間切換,剛剛才改完維護案的bug,下午要開發另一個專案的新功能,但是…昨天…我程式碼寫到哪裡了呢???

我們在真實案例中天天面對上面這樣的問題,現在的VSTS/TFS,不僅僅能夠為開發人員保存每一次的版本變更,能夠比較程式碼版本(changesets)之間的差異,配合Scrum的Backlogs,TFS/VSTS可以把每一個work items與changesets連結在一起。不僅如此,程式設計師與程式碼、work items之間的關係也一目了然。每一位程式設計師、因為每一個bugs/feedbacks/requirements,對程式碼所做的調整,都可以在TFS/VSTS的版控系統中一覽無遺。

前面說過,即便你的專案只有一位開發人員,程式碼的版本控管也能夠在每一個關鍵時候發揮他的價值與效果。

如今,我們透過Scrum與敏捷開發來駕馭整個專案,更不能沒有版控機制在其中穿針引線。

不管你對於版控是否熟悉,接著,我們會以最扼要的方式,帶領讀者對TFS/VSTS的版控有最基本的掌握與應用。

TFS/VSTS的程式碼版控支援

VSTS/TFS裡面同時支援了TFVC和Git這兩種版控形式,不論選擇哪一種, source code都會以Private repository的方式儲存。

先有一個概念,一個Team Project同時可以擁有多個repository(一個TFVC和多個Git),因此,不管你在建立Team Project的時候,預設選擇了TFVC或Git,後面都可以在同一個專案中建立另一種形式的Repository。

要建立多個Repository,可以在Team Project的Code選單中,選擇Manage repositories:

TFVC是傳統的集中式版控,開發人員每一個Check-in,都是把程式碼往伺服器端送,會形成一個變更(changeset),而Git源於open source社群,一開始用於開放原始碼的共同開發,因此設計上更為鬆散靈活,當開發人員把Git版控的source code複製(Clone)下來到本機之後,開發人員的每一個Commit都是發生於本機用戶端(這與TFVC不同),直到Push才真的把程式碼往伺服器端送。

你可以依照你的專案性質選擇不同類型的版控,後面我們兩者都會討論。

先來看如何使用TFVC的版控Git版控看這邊

------------------------------
本系列文章索引位於 http://studyhost.blogspot.tw/2017/02/the-devops-journey-index.html
相關教育訓練: http://www.studyhost.tw/NewCourses/ALM 
若這篇文章對您有所幫助,請點選這裡加入FaceBook專頁按讚並追蹤,也歡迎您幫我們分享出去,謝謝您的支持。

留言

這個網誌中的熱門文章

在POC或迷你專案中使用 LiteDB

使用Qdrant向量資料庫實作語意相似度比對

使用 Airtable 在小型需求上取代傳統資料庫

專業的價值...

周末讀書會 - 一如既往