『壹』 如何安裝git以及如何利用git管理文件版本
目前最火的版本控制軟體就是Git了吧?你要是還用SVN或者CVS什麼的都不好意思在圈裡打招呼!前天我就遇到這種情況了,QQ上和老同學聊起自己用SVN來管理程序版本,好麻煩,當場就慘遭鄙視---「你還用SVN啊?你Out了!我們都用Git了!」好吧為了不被人鄙視,也為了可以鄙視別人,我終於也開始學Git了!
用了幾天之後的感覺就是,確實好用啊!難道大家都來追捧!linus繼linux之後又造福了人類一把!就是這個東西因為模式和之前的版本控制軟體略有不同,所以入門上稍許有點難度,好吧不廢話了,講講自己的心得體會吧!
首先不得不講一下,需要分清git和github這是兩個不同的東西,類似於linux和redhat,前者是開源的項目,後者則是利用這個開源的項目提供服務的服務商。github是一個使用git來託管代碼的網站,有兩種託管方式,一種是公開的,任何人都可以下載和上傳代碼,另一種是私人的只有建立者制定的人才可以下載或上傳代碼,私人的只有交錢才能用。
『貳』 svn是什麼工具,如何使用
svn(subversion)是近年來崛起的版本管理工具,是cvs的接班人。目前,絕大多數開源軟體都使用svn作為代碼版本管理軟體。如何快速建立Subversion伺服器,並且在項目中使用起來,這是大家最關心的問題,與CVS相比,Subversion有更多的選擇,也更加的容易,幾個命令就可以建立一套伺服器環境,
『叄』 版本控制軟體的常用的版本控制軟體簡介
VSS是美國微軟公司的產品,目前常用的版本為6.0版。VSS是配置管理的一種很好的入門級的工具。
易學易用是VSS的強項,VSS採用標準的windows操作界面,只要對微軟的產品熟悉,就能很快上手。VSS的安裝和配置非常簡單,對於該產品,不需要外部的培訓(可以為公司省去一筆不菲的費用)。只要參考微軟完備的隨機文檔,就可以很快的用到實際的工程當中。
VSS的配置管理的功能比較基本,提供文件的版本跟蹤功能,對於build和基線的管理,VSS的打標簽的功能可以提供支持。VSS提供share(共 享)、branch(分支)和合並(merge)的功能,對於團隊的開發進行支持。VSS不提供對流程的管理功能,如對變更的流程進行控制。
VSS不能提供對異地團隊開發的支持。此外VSS只能在windows平台上運行,不能運行在其他操作系統上。 有軟體提供商提供VSS插件,可以同時解決VSS跨平台和遠程連接兩個問題,例如SourceAnywhere for VSS, SourceOffSite等。
VSS的安全性不高,對於VSS的用戶,可以在文件夾上設置不可讀,可讀,可讀/寫,可完全控制四級許可權。但由於VSS的文件夾是要完全共享給用戶後,用戶才能進入,所以用戶對VSS的文件夾都可以刪除。這一點也是VSS的一個比較大的缺點。
VSS沒有採用對許可證進行收費的方式,只要安裝了VSS,對用戶的數目是沒有限制的。因此使用VSS的費用是較低的。
微軟不再對VSS提供技術支持。 CVS是開發源代碼的配置管理工具,其源代碼和安裝文件都可以免費下載。
CVS是源於unix的版本控制工具,對於CVS的安裝和使用最好對unix的系統有所了解能更容易學習,CVS的伺服器管理需要進行各種命令行操作。目前,CVS的客戶端有winCVS的圖形化界面,伺服器端也有CVSNT的版本,易用性正在提高。
CVS的功能除具備VSS的功能外,還具有:
它的客戶機/伺服器存取方法使得開發者可以從任何網際網路的接入點存取最新的代碼;它的無限制的版本管理檢出(checkout:注1)的模式避免了通常的 因為排它檢出模式而引起的人工沖突;它的客戶端工具可以在絕大多數的平台上使用。同樣,CVS也不提供對變更流程的自動管理功能。
一般來說,CVS的許可權設置單一,通常只能通過CVSROOT/passwd, CVSROOT/readers, CVSROOT/writers文 件,同時還要設置CVS REPOS的物理目錄許可權來完成許可權設置,無法完成復雜的許可權控制;但是CVS通過CVS ROOT目錄下的腳本,提供了相應功 能擴充的介面,不但可以完成精細的許可權控制,還能完成更加個性化的功能。
CVS是開發源碼軟體,無需支付購買費用。
同樣因為CVS是開發源碼軟體,沒有生產廠家為其提供技術的支持。如發現問題,通常只能靠自己查找網上的資料進行解決。 StarTeam是Borland公司的配置管理工具,StarTeam屬於高端的工具,在易用性,功能和安全性等方面都很不錯。
StarTeam的用戶界面同VSS的類似,它的所有的操作都可通過圖形用戶界面來完成,同時,對於習慣使用命令方式的用戶,StarTeam也提供命令集進行支持。同時,StarTeam的隨機文檔也非常詳細。
除了具備VSS,CVS所具有功能外,StarTeam還提供了對基於資料庫的變更管理功能,是相應工具中獨樹一幟的。StarTeam還提供了流程定製 的工具,用戶可跟據自己的需求靈活的定製流程。與VSS和CVS不同,VSS和CVS是基於文件系統的配置管理工具,而StarTeam是基於資料庫的。 StarTeam的用戶可根據項目的規模,選取多種資料庫系統。
STARTEAM無需通過物理路徑的許可權設置,而是通過自己的資料庫管理,實現了類似WINDOWSNT的域用戶管理和目錄文件ACL控制。 StarTeam完全是域獨立的。這個優勢可以為用戶模型提供靈活性,而不會影響到現有的安全設置。StarTeam的訪問控制非常靈活並且系統。您可以 對工程,視圖,文件夾一直向下到每一個小的item設置許可權。對於高級別的視圖(view),訪問控制可以與用戶組、用戶、項目甚至視圖等鏈接起來。
StarTeam是按license來收費的,比起VSS,CVS來,企業在啟動StarTeam進行配置管理需要投入一定資金。
Borland公司將對用戶進行培訓,並協作用戶建立配置管理系統。並對用戶提供技術升級等完善的支持。 ClearCase是Rational公司的產品,也是目前使用較多的配置管理工具。
ClearCase的安裝和維護遠比StarTeam復雜,要成為一個合格的ClearCase的系統管理員,需要接受專門的培訓。ClearCase提供命令行和圖形界面的操作方式,但從ClearCase的圖形界面不能實現命令行的所有功能。
ClearCase提供VSS,CVS,StarTeam所支持的功能,但不提供變更管理的功能。Rational另提供了ClearQuest工具提供 對變更管理的功能,與StarTeam不同,ClearCase後台的資料庫是專有的結構。ClearCase對於windows和unix平台都提供支 持。ClearCase通過多點復制支持多個伺服器和多個點的可擴展性,並擅長設置復雜的開發過程。
ClearCase的許可權設置功能與StarTeam相比,StarTeam有獨立的安全管理機制,ClearCase沒有專用的安全性管理機制,依賴於操作系統。
要選用ClearCase,需要考慮的費用除購買license的費用外,還有必不可少的技術服務費用,沒有Rational公司的專門的技術服務,很難 發揮出ClearCase的威力。如現在網上雖有ClearCase的破解軟體,但嘗試應用的公司大多失敗的緣故。另外,對於web訪問的支持,對於變更 管理的支持功能都要另行購買相應的軟體。
Rational公司已被IBM公司收購,所以有可靠的售後服務保證。 SVN全名Subversion,即版本控制系統。
SVN與CVS一樣,是一個跨平台的軟體,支持大多數常見的操作系統。作為一個開源的版本控制系統,Subversion 管理著隨時間改變的數據。 這些數據放置在一個中央資料檔案庫中。 這個檔案庫很像一個普通的文件伺服器, 不過它會記住每一次文件的變動。 這樣你就可以把檔案恢復到舊的版本, 或是瀏覽文件的變動歷史。Subversion 是一個通用的系統, 可用來管理任何類型的文件, 其中包括了程序源碼。
SubVersion:實現服務系統的軟體。
TortoiseSVN:是SVN客戶端程序,為windows外殼程序集成到windows資源管理器和文件管理系統的Subversion客戶端。
SVNService.exe:是專為 SubVersion 開發的一個用來作為 Win32 服務掛接的入口程序。
AnkhSVN:是一個專為Visual Studio提供SVN的插件。 SourceAnywhere系列是由加拿大公司Dynamsoft開發的,有三個產品,SourceAnywhere for VSS, SourceAnywhere Standalone, SourceAnywhere Hosted.
SourceAnywhere for VSS是微軟推薦的遠程和跨平台訪問VSS的工具。SourceAnywhere Standalone界面風格與VSS相似,但它是基於SQL Server的,且有其它一些安全和遠程訪問機制,可以廣域網中使用;支持把數據從VSS庫中導入SourceAnywhere。SourceAnywhere Hosted是SourceAnywhere Standalone的託管服務SaaS。 Git是一個開源的分布式版本控制系統,用以有效、高速的處理從很小到非常大的項目版本管理.
Git 是 Linus Torvalds 為了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟體。
Torvalds 開始著手開發 Git 是為了作為一種過渡方案來替代 BitKeeper,後者之前一直是 Linux 內核開發人員在全球使用的主要源代碼工具。開放源碼社區中的有些人覺得 BitKeeper 的許可證並不適合開放源碼社區的工作,因此 Torvalds 決定著手研究許可證更為靈活的版本控制系統。盡管最初 Git 的開發是為了輔助 Linux 內核開發的過程,但是我們已經發現在很多其他自由軟體項目中也使用了 Git。例如 最近就遷移到 Git 上來了,很多 Freedesktop 的項目也遷移到了 Git 上。
『肆』 如何使用SVN進行版本控制
SVN全名Subversion,即版本控制系統。SVN與CVS一樣,是一個跨平台的軟體,支持大多數常見的操作系統。作為一個開源的版本控制系統,Subversion管理著隨時間改變的數據。這些數據放置在一個中央資料檔案庫(repository)中。這個檔案庫很像一個普通的文件伺服器,不過它會記住每一次文件的變動。這樣你就可以把檔案恢復到舊的版本,或是瀏覽文件的變動歷史。Subversion是一個通用的系統,可用來管理任何類型的文件,其中包括了程序源碼。
SubVersion:實現服務系統的軟體。
TortoiseSVN:是SVN客戶端程序,為windows外殼程序集成到windows資源管理器和
文件管理系統的Subversion客戶端。
SVNService.exe:是專為SubVersion開發的一個用來作為Win32服務掛接的入口程序。
AnkhSVN:是一個專為VisualStudio提供SVN的插件。
Subversion提供以下主要功能:
目錄SVN版本控制
CVS只能跟蹤單個文件的歷史,不過Subversion實作了一個「虛擬」的版本控管文件系統,能夠依時間跟蹤整個目錄的變動。目錄和文件都能進行版本控制。
真實的版本歷史
自從CVS限制了文件的版本記錄,CVS並不支持那些可能發生在文件上,但會影響所在目錄內容的操作,如同復制和重命名。除此之外,在CVS里你不能用擁有同樣名字但是沒有繼承老版本歷史或者根本沒有關系的文件替換一個已經納入系統的文件。在Subversion中,你可以增加(add)、刪除(delete)、復制()和重命名(rename),無論是文件還是目錄。所有的新加的文件都從一個新的、干凈的版本開始。
自動提交
一個提交動作,不是全部更新到了檔案庫中,就是完全不更新。這允許開發人員以邏輯區間建立並提交變動,以防止當部分提交成功時出現的問題。
納入SVN版本控制的元數據
每一個文件與目錄都附有一組屬性關鍵字並和屬性值相關聯。你可以創建,並儲存任何你想要的Key/Value對。屬性是隨著時間來作版本控管的,就像文件內容一樣。
選擇不同的網路層
Subversion有抽象的檔案庫存取概念,可以讓人很容易地實作新的網路機制。Subversion可以作為一個擴展模塊嵌入到ApacheHTTP伺服器中。這個為Subversion提供了非常先進的穩定性和協同工作能力,除此之外還提供了許多重要功能:舉例來說,有身份認證,授權,在線壓縮,以及文件庫瀏覽等等。還有一個輕量級的獨立Subversion伺服器,使用的是自定義的通信協議,可以很容易地通過ssh以tunnel方式使用。
一致的數據處理方式
Subversion使用二進制差異演算法來異表示文件的差異,它對文字(人類可理解的)與二進制文件(人類無法理解的)兩類的文件都一視同仁。這兩類的文件都同樣地以壓縮形式儲存在檔案庫中,而且文件差異是以兩個方向在網路上傳輸的。
有效的分支(branch)與標簽(tag)
在分支與標簽上的消耗並不必一定要與項目大小成正比。Subversion建立分支與標簽的方法,就只是復制該項目,使用的方法就類似於硬連接(hard-link)。所以這些操作只會花費很小,而且是固定的時間。
『伍』 軟體系統怎麼做版本管理
軟體開發好之後,代碼不是一成不變的,需要不斷調整,比如新增功能,優化功能,修復bug。
那麼如何去區分不同時期階段的代碼呢?就有了所謂的版本管理概念,比如剛發布的軟體系統定義為1.0版本,推出新功能之後就是1.1版本。
我們通過命名版本號的方式來區分不同版本的代碼,例如1.1版本新增了1個功能,優化了2個功能,修復了3個bug。
來看一個實際的例子,我們開源的likeadmin是怎麼做版本管理的。
likeadmin的所有代碼變更都公開在gitee代碼託管平台,大家可以看到我們的程序員每次提交的代碼更新日誌。
每當研發完成一個版本的所有規劃功能,我們會在gitee發布新版本。發布新版本之後,程序員就可以繼續進行新的功能研發了。
接下來雖然不斷會有新的代碼提交,但是直接點擊對應版本的下載鏈接,就能下載該版本的代碼了,不會弄混,這有點 歷史 鏡像的感覺。
另外,為了進一步方便大家下載likeadmin不同版本的代碼,並且了解版本之間的區別,我們專門在官網做了一個更新 歷史 的頁面。
這個頁面,點擊進去就是一個時間軸,記錄了不同版本的發布日期,版本變化。
這就是likeadmin的版本管理方式了。
歡迎點贊加關注,帶你一起深入了解程序員視界。
『陸』 開發中說的封版本是什麼意思怎麼封版本
封版本的目的在於給開發定一個階段性的目標,否則很有可能會出現開發過程無休止。封版本之後是可以修改代碼的,但是無論是出於什麼目的修改代碼,那都是下一階段的事情了。
版本控制基本流程如下:
1、創建配置項。
項目成員依據《配置管理計劃》,在配置庫中創建屬於其任務范圍內的配置項。此時配置項的狀態為「草稿」,其版本號格式為0.YZ。
2、修改狀態為「草稿」的配置項目。
項目成員使用配置管理軟體的Check in/check out功能,可以自由修改處於「草稿」狀態的配置項,版本號格式為0.YZ。
3、技術評審或領導審批。
如果配置項是技術文檔,則需要接受技術評審。如果配置項是「計劃」這類文件,則需要項目經理(或上級領導)的審批。若配置項通過了技術評審或領導審批,則轉向下一步·否則轉回上一步。
4、正式發布。
配置項通過技術評審或領導審批之後。則配置項的狀態從「草稿」變為「正式發布」,版本號格式為X.Y。
5、變更。
修改處於「正式發布」狀態的配置項,必須按照「變更控制流程」執行。
常用工具
1.開源版本控制工具
開放源碼的版本控制工具有很多,如Concurrent Versions System(CVS)、Subversion(SVN)、Vesta、Revision Control System( RCS)、Source Code Control System( SCCS)等。比較常用的兩個工具是CVS和SVN。
CVS是Dick Grune在1984年~1985年基於RCS開發的一個客戶一伺服器架構的版本控制軟體,長久以來一直是免費版本控制軟體的主要選擇。SVN的一個重要開發目標是修正CVS中廣為人知的缺點,提供一個新的版本控制軟體。
對於中小規模團隊,SVN是一個比較好的開源版本控制工具,SVN常用客戶端工具為TortoiseSVN。
2.成熟的商業工具
商業工具提供了比開源版本控制工具更多的,尤其是和軟體配置管理有關的功能。
IBM公司的Rational ClearCase是一款重量級的軟體配置管理軟體,為大中型軟體開發企業提供了版本控制、工作空間管理、平行開發支持以及版本審計,可以為擁有上千開發者的大型項目提供全面配置管理支持。
以上內容參考網路-版本控制
『柒』 GitLab搭建個人(或公司)版本控制系統
說明:Git,Github,GitLab三者關系。
Git - 是一款自由和開源的分布式版本控制系統,用於敏捷高效地處理任何或小或大的項目。是 Linus Torvalds 為了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟體。(svn是集中化的版本控制系統)。
GitHub - 是一個面向開源及私有軟體項目的託管平台(也就一個網站),提供給用戶空間創建git倉儲,保存用戶的一些數據文檔或者代碼等。它可以託管各種git庫,並提供一個web界面。被戲稱為「全世界最大的同性交流社區」。
GitLab - 基於Git的項目管理軟體。使用Git作為代碼管理工具,並在此基礎上搭建起來的web服務。
當然啦國內開源中國出的「碼雲」,第一次聽得人還以為是「馬雲」。我醬紫。它跟Github功能差不多,都能建立公有和私有的倉庫。不過嘛感覺有點封閉,社區沒有Github熱鬧。
有的人就說啦,我完全可以在Github或者GitLab上做遠端代碼倉庫,為啥還要倒騰GitLab自建代碼託管系統?就一個字: 「代碼安全性」(公司保密規定)。 對於公司來說,GitLab讓開發團隊對他們的代碼倉庫擁有更多的控制,相比於GitHub,它有不少的特色:
一、自建代碼託管系統都需要做些什麼工作?
1. 選擇開源軟體
Git 大家族的 GitLab ,它提供了完善的用戶許可權管理,除了涵蓋 Git 所有的功能,同時又提供方便的後台管理。分別有CE(社區版)、EE(企業版)、OM(RPM 包完整版)三個版本,目前市面上開發者們的普遍選擇是使用 CE 版的源碼,成本較低且相對方便。
2. 硬體設施方面
如果是對於中小型企業來講,自建機房一般成本較高,所以除非是大型集團企業。現在市面上存在太多的雲伺服器廠商,平均價格多在 5000元/年以上,都是不錯的選擇。
可能遇到的坑:
3.由於個人眼界以及信息不對稱,目前大部分公司都是在公司區域網內自行用GitLab搭建代碼託管系統。部署Gitlab 是對伺服器有配置要求的建議是CPU兩核,內存4G以上。個人經驗,勿噴啦。
二、搭建過程(這里僅是作者接觸的,其實還有很多更高級的盤法)
Gitlab的服務構成
1.搭建方法分為:傳統方式安裝GitLab和Docker安裝(推薦)。
2.傳統安裝過程(平台使用centos7安裝)
安裝和配置必要的依賴項:
安裝Postfix以發送通知郵件:
在安裝Postfix期間,可能會出現配置屏幕。選擇「Internet Site」並按enter鍵。使用您的伺服器的外部DNS以「mail name」並按enter。如果出現額外的屏幕,繼續按enter鍵接受默認值。
添加GitLab鏡像源並安裝gitlab伺服器:
注意這里設置的埠不能被佔用,默認是8080埠,如果8080已經使用,請自定義其它埠,並在防火牆設置開放相對應得埠。
重置並啟動GitLab:
訪問 GitLab頁面:如果沒有域名,直接輸入伺服器ip和指定埠進行訪問
獲取/修改超級管理員root的密碼:
最後我們使用默認的賬號:root 和剛剛設置好的密碼12345678進行登錄。
後面的步驟配置SSH key,git Bash的global config等初始化設置跟GitHub一樣。可是還有一點就是「漢化」。(英文不好的小夥伴)但是有一定風險,後面我打開報502錯誤。有兩種方法:用git比對出英文與中文的補丁,將英文打補丁。第二是直接下載中文版,替換英文。
3.Docker安裝(推薦)
(1)配置docker鏡像
直接從 docker hub 獲取的話速度非常慢,所以需要配置一個鏡像。我使用的是 cloud.io提供的加速器,速度很快。
(2)獲取 GitLab 鏡像
下載完成後,查看鏡像列表
(3)啟動容器
3個--publish指定容器與主機的埠映射,分別是 http、https、ssh
3個--volume指定數據卷的映射,分別是 gitlab 的 配置、日誌、數據
(4)配置外部訪問 URL
修改 gitlab 配置文件:
找到 external_url 這一項修改為自己伺服器的訪問地址:
保存後,重啟容器
(5)訪問
初次訪問時,gitlab 要求我們重置管理員密碼,修改完成後登錄。默認用戶root。
當然以上為個人實驗,公司裡面大部分為CTO等大佬已經搭建完畢,我們主要是折騰。
最後推薦個人用很順手的工具: SourceTree (可視化界面的Git),當然啦要想成為大牛或者裝13也好,還是從Git Bash里敲命令行。
『捌』 昭通java培訓學校告訴你java源碼管理與版本控制工具
java項目一般都是團隊開發,當多人共同編寫一個項目的時候。代碼的整合就需要用到專門的源碼管理工具了。另外java項目版本的不斷更新,也需要版本的管理。所以源碼管理與版本控制工具也是每個java程序員必須要熟練掌握的。目前比較流行的java版本控制工具主要有svn、git這兩款軟體。昭通北大青鳥http://www.kmbdqn.cn/認為這兩種工具也是每個java程序員必須要熟練掌握的。
SVN
SVN是Subversion的簡稱,是一個開放源代碼的版本控制系統,相較於RCS、CVS,它採用了分支管理系統,它的設計目標就是取代CVS。互聯網上很多版本控制服務已從CVS遷移到Subversion。說得簡單一點SVN就是用於多個人共同開發同一個項目,共用資源的目的。SVN的缺陷是過分依賴網路,不適合分布式開發。
使用svn的工作流程如下:1、早上從從伺服器下載項目組最新代碼。
2、進入自己的分支,進行工作,每隔一個小時向伺服器自己的分支提交一次代碼(很多人都有這個習慣。因為有時候自己對代碼改來改去,最後又想還原到前一個小時的版本,或者看看前一個小時自己修改了哪些代碼,就需要這樣做了)。
3、下班時間快到了,把自己的分支合並到伺服器主分支上,一天的工作完成,並反映給伺服器。
Git
Git是一個開源的分布式版本控制系統,可以有效、高速的處理從很小到非常大的項目版本管理。
Git是LinusTorvalds為了幫助管理Linux內核開發而開發的一個開放源碼的版本控制軟體。與常用的版本控制工具CVS,Subversion等不同,它採用了分布式版本庫的方式,不必伺服器端軟體支持(ps:這得分是用什麼樣的服務端,使用http協議或者git協議等不太一樣。並且在push和pull的時候和伺服器端還是有交互的。),使源代碼的發布和交流極其方便。
目前GIT已經可以在windows下使用,主要方法有二:msysgit和Cygwin。Cygwin和Linux使用方法類似,Windows版本的GIT提供了友好的GUI(圖形界面),安裝後很快可以上手使用。
『玖』 開源軟體是如何控製版本的我也去亂改一通行嗎
當然有負責這個軟體的版主啊,他會負責查看每個人提交的代碼然後選擇比較完善的加入到項目中,你亂改改不動軟體的,只能是提交你的代碼,不會影響開源軟體的。
『拾』 企業開源指南:開源項目管理工具
為了讓開源項目辦公室順利運行,您需要正確的工具。這些關鍵的任務工具將用於追蹤各部門的目標與指標,從工程部門和法律部門到行政領導部門、公關部門與營銷部門,同時給予員工收集數據、提供開源軟體運行快照和管理公司內部開源軟體日常使用所需要的全部資源。
-- Todo
開放源代碼的戰略性應用之路,起始於一個精心策劃、組織與授權的開源項目辦公室,以指導和管理開源的創建、分發和使用。但這僅僅只是第一步。為了讓開源項目辦公室順利運行,您需要正確的工具。這些關鍵的任務工具將用於追蹤各部門的目標與指標,從工程部門和法律部門到行政領導部門、公關部門與營銷部門,同時給予員工收集數據、提供開源軟體運行快照和管理公司內部開源軟體日常使用所需要的全部資源。
本指南提供了如何開始您的開源工具集建設的詳細信息和場景,包括用於跟蹤和管理您的開源項目的最重要工具的信息。指南中提及的許多工具已由Linux基金會和該領域的其他領導者創建並開放源代碼,可以免費且便捷地為您的項目所使用。您還可以找到一個儀表盤安裝程序的示例,該程序融合並展示了多種工具的信息。
一旦您的開源項目辦公室啟動運行,就應該同時收集合適的軟體工具,這些工具允許您的開發團隊管理、跟蹤、指導和推進其開源項目、開源貢獻與開源發布。
在您開始您的開放源代碼之路時,使用正確的目標工具還將使開發人員和其他員工的工作更為輕松,也將提供更好的結果,並將成為公司開源項目的成功協作與溝通的基礎。
公司所需的開源工具有哪些?早期的討論大多認為,這取決於公司的業務、產品和服務,以及公司如何服務它的客戶和員工。由於開源項目辦公室制定了規劃流程和戰略地圖,因此可以選擇那些能整合進公司的目標、流程和基礎架構的工具。
最終,知道您將需要使用哪些工具的唯一方法,就是了解您想要對開放源代碼進行何種操作。
以下是開源項目辦公室選擇所需管理工具的基本步驟:
這些工具一旦被選定,在落地使用之前,還需要一些額外的准備:
當您在選擇工具時,實施操作有助於記憶,當然這也可能會影響您的決定。例如,具有陡峭學習曲線的工具可能需要更多的培訓。
在認識到達成組織的目標上你團隊的需求,以及自身情況和基礎架構的潛在限制之後之後,接下來要做的就是要 探索 並了解那些已准備就緒且可供您使用現有工具。由於大多數工具本身就是開源的,所以如果它們一開始並不能滿足您的確切需求,您的開發團隊可以聯系這些工具的開發者,看看他們是否可以協作根據新的用途添加一些特性。
諷刺的是,許多開源項目辦公室並不經常直接使用其他公司開發的工具,或與其他公司合作來開發他們管理開源項目所需的工具。通常,他們想要這樣做,但包括 Facebook 和微軟在內的許多企業已經擁有現有的工具套件,這些工具套件在真正成為一個合作議題之前就已經實現。由於他們已經擁有了自己的工具集並進行了投資,他們似乎並沒有很大意願採用其他公司的工具。
這就是現在才剛開始構建自己的開源項目的公司具有顯著優勢的地方。由於他們現在正在建立自己的開源項目辦公室並進入開源領域,因此他們不必為受到這樣的限制而煩惱。
相反,他們可以聰明地利用別人的成功經驗與失敗教訓,並利用近年來領先的公司所創建的成熟工具來構建自己的開源工具箱。 Linux 基金會的開源行業組織,TODO Group,一直致力於組裝一個裝滿工具的 「Open Source Program Office in A Box」 入門套件,這將使公司能夠通過一套緊密結合的預先組裝工具開展開源工作。入門套件目前尚未開發完善,但希望最終可以讓公司付出更少的初始努力,更輕松地部署和配置他們所需的工具。從事這個項目的 TODO Group 成員包括 Adobe、Capital One、Comcast、Facebook、谷歌、eBay、IBM、微軟、三星和 Twitter。
除了適當的工具之外,公司還應該有中央儀錶板,以便他們實時監控和跟蹤他們的開源項目和開發情況。許多公司可能已經擁有了用於現有開發工作和應用程序的儀錶板,並且能夠將現有儀錶板與其開源工作整合在一起。否則,他們應該創建或採用新的儀錶板來改進其開源部署的管理。
正在出現越來越多的用於管理和報告開源項目的工具,這一趨勢已經非常明顯。如果您的開源項目剛剛開始,那麼將您的研究集中在幾個您啟動和運行所需的基本工具上會更有幫助。
隨著您的項目不斷發展,以及使用這些工具的經驗越來越豐富,您可以開始採用新的工具,來幫助自動化並簡化您的流程,響應業務需求的增長。切記,新選擇的工具將用於內部文化和流程的補充和支持——而不是引導它們。
以下章節列出了幾個基本的工具類別,幾乎所有開源項目日常使用的工具都可以劃分到這些類別。這有助於您對該研究有系統性的認識。
為滿足公司的更多需求,自動化工具變得越來越龐大且規模化。它們可以准確地告訴您誰正在為您的項目做出貢獻,並且可以幫助您消除那些減慢項目進度的程序摩擦。
據微軟表示,在其開源項目辦公室里,大約有 8000 個倉庫在 GitHub 上託管,涉及約 11,000 名貢獻者,而在 2016 年約有 40,000 個內部請求應用於開源項目。為了管理這些請求,以及所創建的代碼和正在更新的代碼版本,公司轉而使用可以自動化解決混亂的工具。不僅如此,由於數百個項目中很可能會共用同一段代碼,因此必須對其進行仔細跟蹤,以便在出現安全錯誤時,可以快速繪制並修復所有的軟體影響。在如此大規模的情況下,自動化非常關鍵,手動更新幾乎是不可能的。
那些有助於管理關鍵任務的工具,也是需要考慮和獲取的。例如用於項目管理、跟蹤項目質量狀況,以及確保開發人員、開源社區和其他公司內部人員之間的清晰且快速溝通的。
大多數通過開源項目辦公室開發的企業軟體項目都使用 GitHub 作為其集中託管和開發的平台。
GitHub 是一個在線源代碼管理站點,它允許開源開發人員在一個中央「存儲庫」或存儲空間中管理和存放他們的代碼,參與者可以協作並開發他們的代碼。如今,大約有 6400 萬個開源代碼項目在 GitHub 上託管,涉及大約 2300 萬個開發人員。
GitHub 用戶可以添加代碼、查看已提交的代碼、申請更改、獲取並提供反饋,以及使用該服務提供項目管理。GitHub 使用 Git Version Control System ,這是由 Linux 創建者 Linus Torvalds 開發的開放源代碼項目,為代碼和合作開源人員提供了組織機構。每位「貢獻者」都有他們正在處理的項目存儲庫的副本,他們可以在自己計算機中的副本里進行更改,然後將其提交回項目以供未來納入。然後,「 拉取請求(pull request)」( 示例 )或代碼貢獻會被項目組織者審查、討論、修改,最後批准或拒絕。
代碼掃描和合規工具也很重要,它們有助於追蹤代碼起源和許可要求。關注被引入自身基礎架構、產品和服務中的開放源代碼以確保符合許可證的要求,對於公司來說是很重要的。
例如,您的應用程序可能包含數千個開源組件。為了保護您的公司免於法律糾紛,了解這些細節是至關重要的。在風險較高的情況下,用戶必須根據其業務在風險譜中的所處位置,深入了解代碼,從而深入地審核並驗證他們所說的許可證。(請參閱我們關於使用和分發開放源代碼的指南。)
如前所述,GitHub 是服務於目前大多數開源項目辦公室的專業源代碼管理系統。但是 GitHub 本身並不能滿足項目代碼管理的所有需求——特別是當您大規模發展的時候。
開源世界中所使用的一些工具旨在通過添加欠缺的功能來改進GitHub本身,例如支持檢查開發者原產地證書(DCO)語句,以確保代碼可以被合法授權且應用於開源項目中。
GitHub 在代碼審查方面也存在一些不足之處,所以有其他可用的工具可以自動將有問題的代碼發回給創建它的貢獻者,然後要求他們檢查並做出必要的修改。GitHub 沒有辦法強迫任何人檢查他們的代碼,而這些聰明的工具解決了這一問題,使工作流程得以改善。
其他 GitHub 特定工具的功能用於提高 GitHub 的性能指標,這些功能通常針對特定項目,而不是提供給整個組織詳細信息。對於在多個 GitHub 項目中維護許多開源代碼庫的公司而言,需要更好的工具來組織和匯總它們,使之有意義。亞馬遜、Netflix 和微軟提供了大量這樣的工具來幫助完成這些任務。
以下是一些最流行和實用的源代碼管理工具,可以簡化並幫助您的 GitHub 運作:
隨著開源項目的發展和成熟,監控和跟蹤開源項目的整體質量是企業開源項目的核心任務。為了實現這一目標,您必須收集相應的工具,這些工具應當能夠反映單獨的開源項目的執行過程並反映單獨的開源項目在數十、數百甚至數千個項目中被它們的社區接收的過程。同時,這些工具還必須兼具轉化能力, 能夠將收集的數據轉化為體現整個開源組合中整體項目性能的有意義的、實用的且可操作的信息。
這其中的關鍵是,您收集到的數據應當可以轉化為關鍵且有用的信息 – 而不是些無用的指標,例如詳細說明項目已記錄了多少「觀察者」明星,自項目開始以來有多少貢獻者參與了該項目,亦或是缺乏重要背景資料的其他指標。
最好的項目質量監測工具還必須幫助項目團隊對支持他們工作的社區做出回應,同時鼓勵貢獻開發者的參與和多樣化。這意味著這些工具可以幫助保持人員快速響應社區成員發布的問題或反饋,以便他們保持熱情參與,且不會感到厭倦並轉向其他項目。
一些開源社區有大量的貢獻者,而其他一些開源社區則成員較少。項目質量監測工具需要能夠適用於各種規模的項目。
以下是一些最受歡迎且實用的項目數據統計和項目質量跟蹤工具:
TODO Group 還提供了一個 很好的附加工具列表 :
當然,開源的發展並不僅僅關於代碼的開發。它還需要在企業內外部從事項目工作的不同群體之間以及公司開源項目辦公室的工作人員之間建立良好的溝通與合作。
為了達到上述目標,開發人員可以依靠他們可能已經應用於其他項目的工具,例如 Internet Relay Chat(IRC) ,開發人員可以發布 與開源開發相關的問題並快速收到回復 。另一個例子是 TWiki ,它是一個開源企業 Wiki 和 Web 協作的平台,開發人員可以在其中討論代碼和項目及相關主題。
此外,企業還可以通過社交媒體平台,門戶網站,開源項目存儲庫和其他能夠進行輸入、提問和討論的平台促進溝通交流。
其他有用的工具還包括 Facebook 公司的 mention-bot ,它可以通過自動關聯潛在審查者來獲得拉取請的快速輸入周轉以審查代碼。當 GitHub 目變得太大導致社區成員無法訂閱項目的所有通知時,這一工具尤其值得推薦。
然後是 Slack ,這是一個在線團隊項目管理與溝通平台,在這一平台中用戶可以訪問和共享消息和文件,管理工作流程,搜索信息等等。Slack可以通過設置接收支持請求、代碼簽入、錯誤日誌和其他任務的通知。
除此之外,當談到公司參與和支持開源時,不要忘記您公司的公關與營銷人員。包括 Twitter、Reddit、Facebook、LinkedIn、Google+ 等網站在內的社交媒體帳戶以及企業內外部的博客和網站的使用都是非常重要的。客戶關系管理(CRM)軟體以及電子郵件群發和新聞簡報可以幫助公司讓客戶了解他們的開源進展。
當談到企業為開源項目提供並應用的工具時,按理說最重要的是那些幫助企業管理自身企業規模 GitHub 操作的工具。GitHub 是一個可以提供許多操作的完美平台,但對於谷歌、微軟、臉書、Twitter、LinkedIn 等大型的復雜公司而言,使用標準的 GitHub 產品可能會有很多限制。
大型企業通常需要更多的功能,包括如身份管理、設置和許可權管理,安全性和雙重身份驗證執行,以及深入理解和跟蹤代碼存儲庫的方法。
因此,這些大型企業常需要構建專門的自動化工具來處理諸如入職、離職、安全策略執行以及給予開發人員請求的存儲庫訪問許可權等任務。
為滿足自身的特殊需求,微軟構建了自己的工具來處理諸如此類的任務,以簡化和改進其開源項目。微軟在 GitHub 上運行良好 ,擁有約 1,345 個存儲庫,迄今為止涉及約 3,580 名開發人員。
微軟創建了一款定製的自助服務—— GitHub management and onboarding portal ,用於組織其項目、存儲庫和團隊。在其最簡單的層次上,基於 Web 的門戶允許開發人員將他們的微軟公司ID映射到他們的GitHub ID,這可以提高系統安全性並幫助簡化參與大量重要項目的大量開發人員的組織工作。
該門戶還允許員工使用 GitHub 和微軟進行身份驗證。其創建了員工身份的一個「虛擬鏈接」,以便根據他們的工作角色向他們提供任務所需許可權以完成工作。如果員工離開公司,可根據需要調整系統以刪除或重新分類其訪問許可權。
門戶運行在一台或多台雲伺服器上,並依靠緩存來幫助進行會話和減少 GitHub API 的壓力。微軟門戶平均每天可提供約 1000 名獨立用戶作為其工程師的工具,這是該公司不斷發展的開源工作的一部分,該工作現在包括超過 10,000 名正在使用、貢獻和發布開放源代碼的工程師。
沒有人認為使公司進入開源世界是一件簡單的事情。但其他許多公司,包括微軟和谷歌等巨頭已經在您前面這樣做了,而且已提供了詳細的路線圖、代碼和建議等,這將使您自己的開源旅程變得更加輕松。
開源項目辦公室的創建和選擇一系列關鍵工具來開始開源工作,選擇權掌握在您手中。它們很可能已經激發了開發人員的極大期望,開發人員中的許多人可能已經自發為開源項目做貢獻(或在工作中,隱秘地)。
通過開源項目的合作並邀請其他人與您合作,您的公司可以獲得不可估量的收益,且能通過節能和創新推動公司發展。
擁有正確的工具對於授權貴公司的開放創新至關重要。