您好,登錄后才能下訂單哦!
Github
GitHub 是一個面向開源及私有軟件項目的托管平臺,因為只支持 Git 作為唯一的版本庫格式進行托管,故名 GitHub。
GitHub 于 2008 年 4 月 10 日正式上線,除了 Git 代碼倉庫托管及基本的 Web 管理界面以外,還提供了訂閱、討論組、文本渲染、在線文件編輯器、協作圖譜(報表)、代碼片段分享(Gist)等功能。目前,其注冊用戶已經超過 350 萬,托管版本數量也是非常之多,其中不乏知名開源項目 Ruby on Rails、jQuery、python 等。
Git(讀音為/g?t/)是一個開源的分布式版本控制系統,可以有效、高速地處理從很小到非常大的項目版本管理。
Git 是 Linus Torvalds 為了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟件。
Torvalds 開始著手開發 Git 是為了作為一種過渡方案來替代 BitKeeper。
分布式相比于集中式的最大區別在于開發者可以提交到本地,每個開發者通過克隆(git clone),在本地機器上拷貝一個完整的Git倉庫。
下圖是經典的git開發過程。
Git的功能特性:
從一般開發者的角度來看,git有以下功能:
1、從服務器上克隆完整的Git倉庫(包括代碼和版本信息)到單機上。
2、在自己的機器上根據不同的開發目的,創建分支,修改代碼。
3、在單機上自己創建的分支上提交代碼。
4、在單機上合并分支。
5、把服務器上最新版的代碼fetch下來,然后跟自己的主分支合并。
6、生成補丁(patch),把補丁發送給主開發者。
7、看主開發者的反饋,如果主開發者發現兩個一般開發者之間有沖突(他們之間可以合作解決的沖突),就會要求他們先解決沖突,然后再由其中一個人提交。如果主開發者可以自己解決,或者沒有沖突,就通過。
8、一般開發者之間解決沖突的方法,開發者之間可以使用pull 命令解決沖突,解決完沖突之后再向主開發者提交補丁。
從主開發者的角度(假設主開發者不用開發代碼)看,git有以下功能:
1、查看郵件或者通過其它方式查看一般開發者的提交狀態。
2、打上補丁,解決沖突(可以自己解決,也可以要求開發者之間解決以后再重新提交,如果是開源項目,還要決定哪些補丁有用,哪些不用)。
3、向公共服務器提交結果,然后通知所有開發人員。
優點:
適合分布式開發,強調個體。
公共服務器壓力和數據量都不會太大。
速度快、靈活。
任意兩個開發者之間可以很容易的解決沖突。
離線工作。
缺點:
學習周期相對而言比較長。
不符合常規思維。
代碼保密性差,一旦開發者把整個庫克隆下來就可以完全公開所有代碼和版本信息。
1、GitHub API
首先要說的是Github的官方API,這是獲取GitHub倉庫詳細的最佳方式。API非常好用,你可以使用curl或者其他任何語言打包庫,獲取倉庫的所有信息(其他公共在線Git托管平臺或者自建的Gitlab都有類似的API)。但是Github對API的調用做了限制,每小時的請求數量是有限制的,如果你要分析大型項目,則使用API。
通過Github API,你基本上獲得訪問瀏覽項目Github倉庫時看到的所有信息,但是對倉庫的Git信息內部信息有限,你需要clone 倉庫后通過git命令才能獲得完全信息。
2、GHCrawler
GHCrawler是由微軟開發的一個健壯的GitHub API 爬蟲,可遍歷GitHub實體和消息,對其進行搜索和跟蹤。如果要對某一組織或者項目的活動進行分析,則GHCrawler特別有用。GHCrawler也受Github API請求次數的限制,但是GHCrawler通過使用令牌池和輪換來優化API令牌的使用。GHCrawler支持命令行式調用,同時也支持一個Web端界面操作
3、GH Archive
GH Archive是一個開源的一個項目,用于記錄公共GitHub時間軸,對其進行存檔,并使其易于訪問以進行進一步分析。GitHub Archive獲取所有的GitHub events信息存儲在一組JSON文件中,以便根據需要下載并脫機處理。
另外,GitHub Archive也可以作為公共數據集在Google BigQuery上使用。該數據集每小時自動更新一次,可以在幾秒鐘內對整個數據集運行任意類似SQL的查詢。
4、GHTorren
和GH Archive類似,GHTorrent項目也用來監視Github公共事件時間表信息。對于每個事件,它都詳盡地檢索其內容和相互依賴性。然后將結果JSON的信息存儲到MongoDB數據庫,同時還將其結構提取到MySQL數據庫中。
GHTorrent和GH Archive有點類似,兩者區別是GH Archive旨在提供更詳盡的事件集合,按小時頻率獲取信息。而GH Torrent則以更結構化的方式提供事件數據,以使更輕松地獲取所有事件有關事件的信息,數據獲取頻率為月。
5、Kibble
Apache Kibble是一套用于收集,匯總和可視化軟件項目中活動的工具。Kibble架構由一個中央Kibble服務器和一組專門用于處理特定類型資源的掃描應用程序并將已編譯的數據對象推送到Kibble服務器。
根據這些數據,可以自定義一個儀表板,其中包含許多顯示項目數據的小部件。從這個意義上講,Kibble更像是一種工具,可以幫助創建項目數據信息展示Web端。
6、CHAOSS
CHAOSS是Linux 基金會下項目,致力于創建數據析和指標定義以幫助一個健康的開源社區。CHAOSS計劃項目有很多工具可以挖掘和計算項目所需的指標數據:
Augur是一個Python庫、Flask Web應用程序和REST服務器,用于提供有關開源軟件開發項目運行狀況和可持續性的指標。
Cregit則專注于生成視圖以可視化代碼更改的出處
GrimoireLab Bitergia旗下迄今為止最成熟和雄心勃勃的工具。GrimoireLab的目的是提供一個開源平臺實現:幾乎可以從任何與開源開發相關的工具中收集自動和增量數據,自動豐富數據以清理和擴展上面收集的數據,數據可視化,按時間范圍,項目,存儲庫,貢獻者等進行過濾搜索。
7、Sourced
Sourced自稱為開發生命周期的數據平臺。與以前的工具相比,它更多地關注項目的代碼,而不是社區的協作。Sourced項目使用通用AST,可以實現與語言無關的方式對代碼庫細節查詢。
在Sourced項目組織中,可以找到幾個有趣的數據分析工具。包括:
go-git:用純Golang語言編寫的高度可擴展的git實現庫。
Hercule:Golang實現的對存儲庫的整個提交歷史記錄分析工具。
gitbase:Golang 實現的Git存儲庫SQL數據庫接口。
8、Hubble
Hubble用于可視化GitHub Enterprise的協作、使用情況和運行狀況數據。它致力于幫助大公司了解其內部組織,項目和貢獻者如何一起分配和協作。
Hubble Enterprise由兩個組件組成。更新器組件是一個Python腳本,它每天從GitHub Enterprise設備查詢相關數據,并將結果存儲在Git存儲庫中。docs組件是一個Web應用程序,用于可視化收集的數據,并由GitHub Pages托管。
9、Onefetch
最后提一個非常強大的命令行下的git項目信息可視化的工具,支持對50多種語言,提及它是因為它是用新興的Rust語言編寫的。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。