搭建自己的github
說起github,大家應該都是非常熟悉的。正是github的興起,帶來了開源的一個高潮,也誕生了無數優秀的開源項目。最最著名的Linux也在github上有了自己的repository。當然,github的核心技術git也是李納斯的代表作。
記得幾年前由于項目的需要,我嘗試自己去搭建一套git服務給項目組使用,折騰了好久,才總算搭建了一個基礎的系統, 剛剛能用,權限控制都沒有。其中的過程記錄在了這里: http://srhang.iteye.com/blog/1339110 。但最終因為git的上手門檻有點高,還是選擇了svn。后來,github興起,git才如火如荼地在國內火了起來。許多大的互聯網公司,也都開始把項目由svn轉到Git上。但如果僅僅是搭建一個git服務,那么github這種網站提供的可視化ui帶來的便捷卻也不復存在了。對于一些小的有錢的團隊,使用github的收費私人repository倒也能享受github帶來的便捷。但是,對于大部分小公司以及大公司來說,是玩玩不會把自己的代碼放到這種公共服務上的。于是就產生了很多github的克隆實現,以方便部署內網的github。
說到github的克隆實現,最出名的莫過于 gitlab 。這是一個ROR的實現。應該是目前市面上最成熟的一個github克隆項目。功能也是最豐富的,在原來最基礎的git庫管理、權限管理、用戶管理的基礎上又加入了諸如code review、ci等極大方便開發者的功能。但是gitlab本身的部署是很復雜的,如果自己來一步一步的安裝,需要安裝很多依賴包,整個過程非常痛苦。而如果使用它提供的一鍵安裝包的話,對于操作系統又有要求,比如就要求CentOS 6以上。一想到這么多事情,對于我這種懶人來說,還是算了。。。
在前東家的時候,git項目是從gitlab遷移到了gitbucket(其中的原因當然不僅僅是因為gitlab部署的繁瑣)。說起 gitbucket ,在百度上也搜不出什么信息來。僅僅能搜到的估計也就github庫。這個項目是日本的同行使用scala開發的一個項目。所以,拋開編程方面,對于 java系的程序員還是比較友好的,部署也只需要把war包往tomcat之類的容器里一扔就好。這個對比gitlab那可是天壤之別。而談到二次開發,scala語言的學習曲線還是非常陡的,所以對比起來,貌似gitlab的二次開發相比較起來還是容易一些的(gitlab的二次開發沒參與過,這里只是猜測)。當然,gitbucket是一個相對年輕的項目,對比gitlab,功能還顯得比較單薄,bug也不少。我自己在使用的過程中,fix過幾個小bug并提交到了項目的主分支,但是還有不少bug被公司的同事吐槽中。。。(實在沒時間專門fix這個)。另外,不得不說的是,gitbucket的 markdown解析引擎,作者不知道什么原因從之前的一個叫pegdown的替換成了自己實現的markedj,讓我們公司的一堆md文檔都顯示的各種亂,實在無語。。。不得不去clone了markedj的代碼,fix了其中的一些bug,部署在我們內網的maven庫里了。雖然bug挺多,但是相比起來,還是喜歡gitbucket的部署升級的簡單^_^。去官網下個war包,扔到tomcat里,恭喜你,你擁有了自己的github。
其實,除了gitlab和gitbucket還有很多github的克隆實現。這篇文章列出了很多并做了簡單介紹: http://www.oschina.net/news/50222/git-code-platforms
總之,開發工具這種東西,還是要選擇最適合自己以及自己團隊。