什麼是版本控制以及為什麼使用它

版本控制系統允許開發人員或開發團隊基本上訪問 I 時間機器。如果用於構建程式或系統的原始碼,設定等受版本控制,那麼開發人員可以回過頭來恢復丟失的功能,跟蹤錯誤的引入方式,支援舊版本軟體的使用者由於某種原因尚未準備好或能夠升級到最新版本的人。

最古老的版本控制例項是在特定時間點拍攝原始碼的快照,並將它們放在一個帶有標籤的安全位置,在某些情況下,這些實際上是完整的打卡。

目前有許多版本控制程式可以簡化這項任務,這些程式分為許多不同的類別:

  • 簡單的備份解決方案不是真正的版本控制,但有時聲稱這樣
  • 在 MS-Word 中的檔案內部進行本地更改 **
  • 鎖定集中版本控制系統*,如 SCCS,CVS,Perforce 等。*
  • 許可的集中版本控制系統*,如 SVN*
  • 分散式版本控制,例如 git 和 mercurial

所有版本控制系統都應該讓你:

  • 將原始碼恢復到給定的時間點==無限撤消
  • 跟蹤已釋出到系統的更改
  • 升級到該工具的更高版本,而不會丟失任何資訊

大多數版本控制系統還包括:

  • 比較變化
  • 跟蹤誰做出了改變
  • 誰可以進行更改的許可權
  • 與錯誤跟蹤整合
  • 所有承諾工作的機外,異地或線上備份*,讓你感覺溫暖*,對於分散式 VCS 工具,每個開發人員都可以完整備份專案的整個歷史記錄。

許多版本控制工具包括或提供其他功能的*機制,*例如:

  • 怪誰最後改變了哪一行修改
  • 建立,分發和應用補丁只需傳送你的更改即可
  • 通過電子郵件協作
  • 自動檢查傳入的檔案/更改以確保它們符合給定的規則
  • 程式碼/變更稽核和/或批准
  • 自動將版本狀態插入到檔案中以嵌入程式中
  • 實驗,特定功能或客戶特定版本的程式碼通常稱為分支
  • 使用持續整合和/或連續測試工具
  • 釋出和/或部署機制
  • 發行說明生成
  • 臨時儲存你在切換到另一個版本/分支以執行其他操作時尚未完成的更改。
  • 二進位制搜尋允許定位哪個版本引入了特定的 bug

總結一下這一部分大多數專業或嚴肅的程式碼開發人員除了最瑣碎的程式碼之外,一旦他們養成了使用它的習慣,就會愛上版本控制。能夠說,即使多年以後,版本 1.3.1 和版本 1.3.1.1 之間的確切變化可以是一個很大的幫助。像審計員這樣的人喜歡良好的版本控制系統和實踐,因為它在與問題跟蹤系統整合時提供了跟蹤能力 - 能夠說“ 這個問題是由這個人產生的這些變化來解決的 ”或“ 這個改變是在這個至今為止為解決 ** **** **** 問題“使他們更快樂。擁有,可能多次,關閉機器和/或非現場備份你的所有工作意味著如果你的機器壞了或你的辦公室被摧毀,你可以在短時間內恢復工作。如果你正在努力開源專案 VCS 很可能是你的主要協作審查工具,試圖在沒有人的情況下工作會讓你不被同行認真對待 (github,bitbucket 等是圍繞版本控制工具構建的)。你的使用者最終程式可能不會注意到你正在使用版本控制工具,但當你能夠說“如果升級到你應該看到問題消失的那個問題在 XYZ 版本中得到修復”時他們會喜歡它。