svn管理工具_主流代碼管理工具深度評測

eb3dbbd51f04ea16a265fdeb35208c2f.png

引言

作為有十幾年IT行業代碼的從業人員,經歷過代碼管理工具的變遷,從早期的微軟的Source Code Control,到TFS,再到SVN,再到現在的Git。我深知代碼管理工具是代碼開發過程中非常重要的工具。市場上的代碼管理工具有很多,近期正好團隊內部在選型,我對諸如Github、Coding、阿里云效、碼云、Azure Devops等工具進行了試用評測。想著很多小伙伴可能也有工具選型方面的痛苦,就大概整理了一下發出來,幫助大家結合自己的實際情況,選擇合適自己的工具,節約大家的時間和精力。

閱讀本文共需要10分鐘左右,當然你可以選擇只閱讀“長話短說”總結部分。

長話短說

首先介紹一下Github,相信所有編程的朋友都不默認,它是世界上最流程的開源代碼庫,基于git,現在被微軟收購。個人覺得Github在所有工具中是最優秀的,這可能是有點先入為主。

然后介紹一下Coding,它提供了代碼托管、敏捷開發協同及DevOps工具鏈,讓團隊在云端高效協同,在開發協作過程中享受極致體驗,提升軟件交付質量與速度。現在有騰訊的投資。它支持Git和SVN。

再下來介紹一下阿里云效,它已經集成在阿里云中,屬于阿里系的產品,濃濃的阿里系風格。它支持Git和SVN。

再下來介紹一下碼云,它是http://OSCHINA.NET推出的代碼托管平臺,支持Git和SVN,提供免費的私有倉庫托管。據說目前有超過500萬的開發者選擇碼云。號稱是中國的Github。

最后介紹一下Azure Devops,它是微軟Azure云的產品,屬于微軟的風格。雖然微軟收購了Github,但是Azure Devops長得和Github真的不太像,感覺不是一類的。它支持Git和微軟自己的TFS。但TFS實在已經是末日黃花,即將逝去。

原本還想試用華為軟開云的,結果發現是豬八戒網的,不知道是不是華為收購投資的。發現注冊及其困難,直接放棄。最近華為是要風得風,要雨得雨,各個領域都可以看到華為的身影,但確不是每個領域都可以做得優秀。

評分表

f8d6bea26ef6f83c5a3a6d5f8dbfa9c8.png

功能方面的對比

主界面

Github

a9cdd67cbce48991a9edf5b7c76f6932.png

Coding

07fd05dae957d09b9da9bd92cbf99b5a.png

阿里云效

8df9551fecb81e49b037a317a469cc0f.png

碼云

147b5d5800bf1eb7537a39ce9a33c061.png

Azure Devops

88bbc9ac70376e8e7049a40a5944145d.png

比較這些產品的主界面,是不是發現碼云的主界面和Github的主界面非常像,不愧是中國版的Github,這點就值得加分。其他產品的排版都很雷同,感覺有點不倫不類,特別是微軟的Azure Devops,真的很失望。Coding算中規中矩,開始使用Coding還有點失望,但是比較了阿里云效,Azure Devops后,就會發現還是不錯的。

安全性

代碼管理工具,安全是非常重要的,所以我們看看他們的各自的登錄。

首先是Github,用戶名加密碼即可,這種會有撞庫的風險,起碼應該有雙因素認證,這點Github真的做得比較差。

b9c8901fc59a5d4efec80228a92d1ae8.png

然后看Coding,看界面就是用戶名和密碼,一樣的特性,差評

89625da3b4431afad80861f996b2961b.png

但Coding隱藏支持MFA,如果開啟MFA后,登錄后就會提示輸入MFA的6位Code,這樣是非常安全的。這個要加分。

dedfe06ae1f73f086e69e2af0c14f23b.png

接著看阿里云效,支持掃碼登錄和賬號登錄。掃描登錄是需要支付寶或者釘釘掃描認證的,非常安全。但是賬號認證就是直接用戶名加密碼,這種方式有被撞庫的風險。

44800af420ef67a24e72a40625d3d65b.png

再看碼云,簡單的用戶名加密碼,這種方式是不安全的。

72caca401e4e99aa6a90fef2ebd9939b.png

最后看Azure DevOps,集成的Azure的認證,看起來是用戶名和密碼,但后臺接管的是零信任模型,必要時會要求你輸入手機驗證碼的,是支持雙因素的,這個方式是安全的,而且是經過市場檢驗的。

e8587c204fdea114dc06226b60b13c68.png

所以以上產品,登錄模塊的安全性最好的是Azure DevOps和Coding,然后是阿里云效,阿里云效是否集成了零信任模型不知道,這個經驗不會很多。最差的是Github和碼云。

創建新項目

首先是Github,它支持Private和Public兩種模式,默認是Public,這個就不是一個很安全的做法,應該默認是Private比較好。可以選擇是否生成初始化的README文件,這個很好。然后支持.gitignore文件,而且它顯示支持None,并且默認是None。這個就不會出現選擇了一個模式,如Python,然后又想清理這個選擇時發現不能清理的尷尬。另外它還支持選擇License,這個開源軟件必須的。

3dd5803f3b2147a4171329a7e9a7bf61.png

接著是Coding,沒有這個Public/Private的選擇項,但有個很小的復選框選擇是否公開代碼,這個設計就覺得有點很奇怪,更喜歡Github的樣式,然后它支持Git和SVN,你可以選擇任意一個,默認是Git。然后是預置代碼模板初始化倉庫和啟動ReadMe.md文件初始化項目二選一,但是是奇葩的復選框。這個時候是不是應該是圓點的單選框比較好。然后都沒有默認預置None的選擇項,選擇之后想清除你會發現找不到地方,這個是非常不人性化的。

56932eb96c569a023ae02fceed56da6e.png

接著是阿里云效,支持私有和企業內公開兩種,不支持完全公開。默認選擇私有,這個做法是安全的。支持是否創建README.md文件,但只有兩個選擇內置新手引導和空模板,默認是空模板,沒有語言選擇,沒有License,非常簡單的選擇。但我更喜歡Github的可定制化。

db5481112df6fe214b3d7fa94a00f191.png

接著是碼云,樣式與Github高度一致,也是支持Private和Public兩種模式,默認是Private,這點比Github安全。也支持語言和.gitignore的樣式,但是沒有None選項,默認是空,一旦選擇了也是遇到不能清除的尷尬。接著又多了初始化README,初始化issue template和初始化Pull Request Template的選項,感覺有點多余。還有一個選擇Branch的模式,也是感覺很復雜,不太實用。

96e75aa944ef7a1a86568423c46036be.png

最后是Azure Devops,微軟的功能好像更加簡單。首先是讓你選擇Private還是Public,默認是Private,這個安全不錯。接著在高級隱藏著兩個選擇項,一個是Version Control的選項,默認是Git的,你還可以選擇TFS。TFS已經慢慢被淘汰了。另一項是工作流樣式,默認是Basic,其他沒有測試。

6bb29c196ba66e438c20c0f09d3fa432.png

比較以上幾種軟件,Github是最好的,但是Github默認選擇Public是安全硬傷。碼云也不錯,基本和Github一樣,而且默認選擇Private,這個是非常好。但是選項沒有內置None,這個是Bug。其他的不說了,希望能夠向Github和碼云學習。

代碼倉庫的訪問

所有的平臺都支持Https和SSH的兩種模式,我更喜歡SSH這個模式,不需要輸入代碼,而且私鑰更加安全。

先看Github的,非常簡單的Title和Key,不支持過期時間設置。

eb4d240548a7796e5c28f30f7de356b6.png

然后看Coding,除了公鑰名稱和公鑰內容外,支持公鑰有效期,這個安全性更好。

97e621c8d9fd949d5af4e5a449a374f7.png

接著看阿里云效,也是簡單的標題和密鑰,而且和順序顛倒,看起來很別扭。

4d94987226e7ade06d7bf98ddf0f6ea8.png

接著看碼云,簡單的Titile和Key,與Github一樣,不支持過期時間。

359d9e9bf77217351d8d67082b472981.png

最后看Azure Devops,簡單的Name和Key,不支持過期時間。

a7087ef2baf1d8a5d5d699d8ba7a4368.png

比較上述產品,Coding的SSH Key設置支持過期時間,更加安全,其他的都差不多,但是阿里云效的界面最丑陋。

代碼編輯和瀏覽

實際上很少有開發人員愿意在Github等平臺上直接編輯和瀏覽代碼的,更愿意使用專業的VSCode等工具。所以這個功能我覺得哪個平臺說它做得多么的優秀都是徒勞的。因為與開發者的習慣不一致。因為這幾個平臺都支持Git,都可以很好地與VSCode集成,所以沒有太多要說的。

代碼搜索

這個是Github一個非常好的功能。先看Github,輸入文件名或者代碼后,就可以檢索出相關內容

3ec40e98060a09f81da0ab0aa584604e.png

接著看Coding,很遺憾,Coding沒有這個功能。

再接著看阿里云效,可以搜索對應的文件名,比Github差遠了。

eb2587fa1bed6b899469d80df1ea55d2.png

接著看碼云,也沒有發現這個功能,非常遺憾。

最后看Azure Devops,有類似功能但居然搜索不到結果,差評。

b90654ebc8bb29f3c4496174901bdd4f.png

綜上比較,Github是最優秀的,阿里云效有相關的功能,但是效果一般。Azure Devops功能就不能用,不知道是什么原因,其他的就沒有這個功能。我個人覺得這個功能是非常有用的。

刪除項目

各個產品的刪除Project的功能都比較正常。Coding的刪除Project功能需要進行MFA認證,比較安全,這點值得推薦。安全性上,Coding是做得不錯的,第一個實現了MFA的認證。

代碼質量分析

現在隨著SSDLC和DevSecOps的深入人心,大家更愿意將安全左移,根據IBM的理論,問題越早發現越早修復,代價就越小。所以代碼質量分析就很重要。

首先看Github,并沒有集成代碼分析功能。

接著看Coding,它在代碼倉庫的頁簽下面專門有個代碼分析的頁簽。代碼分析支持多個參數,如代碼問題、圈復雜度、代碼行數等指標,支持增量掃描和全量掃描兩種模式,支持多種語言。

755fabc5c4918430acda9bfdc70954b9.png

新建代碼分析支持新分支或者新代碼庫。然后選擇新代碼庫后,出現這個界面,要求你自己選擇代碼的語言,即系統不能自動識別你使用了什么代碼,這個和專業的代碼掃描工具Checkmarx還是有差距。

c79559167fa0a7e89e38728184992414.png

阿里云效自動集成了安全掃描功能,不需要額外配置,主要支持兩種掃描:敏感信息檢測和依賴包漏洞檢測。

d98f0193927a61db642354fc6b047707.png

我加了一個Password的代碼并且打印出來,但是敏感信息中并沒有檢測出來,所以我也很懷疑這個檢測的結果。

碼云,不支持代碼分析這個功能。 Azure Devops,也不支持代碼分析這個功能。

最后總結一下,相對而言,Coding的代碼分析功能更全面,但Coding沒有集成依賴包漏洞檢測,即通常說的OSA分析。而阿里云效支持OSA分析,但實際上沒有代碼靜態分析,只能一個敏感信息檢測。而Github、碼云、Azure Devops沒有這個功能。

代碼容量

Github是免費的代碼管理平臺,容量是無限大的,從沒有聽過有限制。Coding是以團隊大小限制的,代碼容量也沒有限制,和Github一樣。阿里云效的容量也沒有限制。碼云的代碼容量也是沒有限制,最后看Azure DevOps,代碼的容量也沒有限制。所以五個平臺對于開發者都是友好的,代碼容量都是無限制的。

與DevOps流程的集成

Github是個純粹的代碼管理平臺,并沒有直接與其他DevOps流程進行整合。但相信其他平臺也很容易整合Github。

Coding,本身就是DevOps的平臺,支持持續集成和持續部署。其中持續集成包括構建計劃和構建節點。而持續部署支持Kubernetes、云服務器和靜態網站。這些功能部分免費,絕對部分是要收費的。不過你選擇項目的時候,必須是DevOps項目,而不是純粹的代碼托管項目。

83311b23baeb0f5b612ac39c4a68cc25.png

阿里云效,沒有看到有直接持續集成和持續部署的頁面,估計會和阿里云其他組件進行集成,這里不進行分析。

碼云,也集成了DevOps功能,包括Baidu云和Jenkins For Gitee兩種選擇。

477f3e3c7d7780271a9003f29941796c.png

Azure DevOps通過Pipeline也集成部分DevOps功能

ca362742d818ff122634701d4eefbe7f.png

總上所述,Coding,碼云,Azure DevOps集成或者部分集成了DevOps功能,阿里云效和Github沒有直接集成。Coding更加直接,直接看到持續集成和持續部署,而碼云感覺是依賴于百度云或者Jenkins進行集成,Azure靠自己的Pipeline集成,沒有這么直接。

國內代碼拉取速度

由于眾所周知的因素,一些國外協作類工具的訪問速度非常不樂觀,如果你不希望團隊浪費時間在等待頁面加載,等待代碼提交/拉取的漫漫長夜中,這將是你首要需要考量的因素。

這點上,Coding,碼云,阿里云效都部署在國內,速度明顯占優勢。而Github和Azure Devops都差強人意。

總體的評測結果

如果把測評表5星換算為5分,沒有此功能為0分,進行加權平均后得到各個產品的得分。

c261b624abdd0386ad0c35a8f887570f.png

得分最高的Coding,3.36分,其次是碼云,2.8分,接著是阿里云效,2.45分,接著是Github,2.45分,最差是Azure Devops,2.27分。

如果去掉國內拉取代碼速度(不可控因素)和倉庫容量,計算結果如下:

c619333de752ad3e3936ba2f2796a4bc.png

其中排名第一是Coding,3分,然后碼云2.56分,接著是Github,2.33分,再接著是微軟2.11分,最差是阿里云效,2分。

如果你對安全很重視,那可以參考這個表格

3738911bad4a285bfeaaa21fb30c3fc4.png

其中排名第一是Coding,3.8分,然后是碼云2.8分,然后阿里云效和Azure DevOps,并列2.6分,最差是Github,2.2分。所以Github只是最流行的公開倉庫,其安全性并不是強項。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/537241.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/537241.shtml
英文地址,請注明出處:http://en.pswp.cn/news/537241.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

假設條件和制約因素的理解

目錄 假設條件 制約因素 假設條件和制約因素都記錄在假設日志中。 假設條件 假設條件是指當前不能確定的、未經驗證但仍被視為正確、真實或確定的因素。 假設條件存在不確定性,影響項目規劃的所有方面;項目實施過程中假設條件一旦不成立就可能造成相…

深入理解Java的三種工廠模式

一、簡單工廠模式簡單工廠的定義:提供一個創建對象實例的功能,而無須關心其具體實現。被創建實例的類型可以是接口、抽象類,也可以是具體的類實現汽車接口public interface Car {String getName();}奔馳類public class Benz implements Car {…

項目管理PMBOK中的八大會議

目錄 一、項目啟動會 initiating meeting 二、項目開踢會議 kick-off meeting 三/四:焦點小組會議&引導式研討會 五、規劃會議與分析 六、狀態審查會 七、投標人會議 八、項目經驗總結會 一、項目啟動會 initiating meeting 1、召開時間:是啟…

python函數的繼承_Python 繼承

版權所有,未經許可,禁止轉載Python 繼承繼承允許我們在定義一個類時,讓該類繼承另一個類的所有方法和屬性。父類是被繼承的類,也稱為基類。子類是繼承父類的類,也稱為派生類。創建父類任何類都可以是父類,創…

MySQL 使用Node.js異步查詢結果為undefined的簡單處理辦法

//定義查詢過程,化異步為同步 function name(SQL_TXT, Respond) {ExecuteSQL(1, SQL_TXT);var i 0;var SetName setInterval(function () {if (i > 19) {clearInterval(SetName);}console.log("Tqr :第" i "次 obtain , Value : \n" Tqr " \…

python中的裝飾器怎么運行_Python 裝飾器入門(上)

翻譯前想說的話:這是一篇介紹python裝飾器的文章,對比之前看到的類似介紹裝飾器的文章,個人認為無人可出其右,文章由淺到深,由函數介紹到裝飾器的高級應用,每個介紹必有例子說明。文章太長,看完原文后我計劃…

我的2018

寫在開始 2018年以飛快的速度臨近尾聲了,只感慨時間過得真快! 這一年過得算是平平淡淡,沒有比較特別的地方。 工作 從去年8月來到這公司,是個做旅游產品的互聯網公司,平時里做的事可以說是很簡單,我只能說&…

IntelliJ IDEA快捷鍵總結

搜索類快捷鍵 快捷鍵描述Ctrl F文件內查找字符串Ctrl Shift F按照文本的內容查找雙擊Shift查找任何內容,可搜索類、資源、配置項、方法等,還能搜索路徑Ctrl Shift R全局資源查找和替換Ctrl N按類名搜索類,比如 Java,Groovy…

python小波分析法檢測火焰_一種基于小波分析的網絡流量異常檢測方法

一種基于小波分析的網絡流量異常檢測方法杜臻;馬立鵬;孫國梓【期刊名稱】《計算機科學》【年(卷),期】2019(046)008【摘要】對大量網絡流量數據進行高質量特征提取與異常識別是做好網絡取證的重要基礎.文中重點研究并實現了網絡取證中的數據處理并建立了模型庫.對一種基于小波分…

初學Linux第三周

簡單shell腳本:#!/bin/bash 第一行必須包括shell聲明序列:#!##********************************************************************#Author: *****#QQ: *****#Date: 2018-12-31#FileName: hello.sh#URL: http#Descriptio…

python使用ddt找不到方法_python使用ddt過程中遇到的問題及解決方案【推薦】

前言:在使用DDT數據驅動HTMLTestRunner輸出測試報告時遇到過2個問題:1、生成的測試報告中,用例名稱后有dict() -> new empty dictionary2、使用ddt生成的用例名稱無法更改1、用例名稱后有dict() -> new empty dictionary報告中用例名稱…

合同的不含稅與稅額怎么算

假設稅率是6% 不含稅金額=總金額/1.06 稅額=不含稅金額0.06 增值稅在線計算器:http://www.ab126.com/goju/7332.html 大小寫轉換:https://link.fobshanghai.com/rmb.htm?t1525225925284 工作日計算:http://www.fy…

Promise進階——如何實現一個Promise庫

概述 從上次更新Promise/A規范后,已經很久沒有更新博客了。之前由于業務需要,完成了一個TypeScript語言的Promise庫。這次我們來和大家一步一步介紹下,我們如何實現一個符合Promise/A規范的Promise庫。 如果對Promise/A規范還不太了解的同學&…

python中isinstance(3、object)_python中isinstance函數判斷各種類型的小細節

1. 基本語法isinstance(object, classinfo)Return true if the object argument is an instance of the classinfo argument, or of a (direct, indirect or virtual)subclass thereof. Also return true if classinfo is a type object (new-style class) and object is an ob…

[前端漫談] 做一個四則計算器

0x000 概述 近期重新開始學習計算機基礎方面的東西,比如計算機組成原理、網絡原理、編譯原理之類的東西,目前正好在學習編譯原理,開始對這一塊的東西感興趣,但是理論的學習有點枯燥無味,決定換種方式,那就是…

程序員筆試面試后上機_hcie面試有哪些要注意的事項?

大家都知道,華為認證hcie考試分為三個部分,分別是筆試、lab實驗和面試。其中,考生討論得最多的就是面試部分,因為面試不同于筆試和lab實驗,自己埋頭答題和操作就行,面試要面對考官,考核的東西非…

【Infragistics教程】在javascript構造函數中創建基本繼承

2019獨角獸企業重金招聘Python工程師標準>>> 【下載Infragistics Ultimate最新版本】 用javascript創建對象有四種方法。具體如下: 對象作為文本構造函數調用模式創建()方法在ES6之后使用類繼承的實現因對象創建方法而異。本文將解…

python爬蟲ssl錯誤_Python爬蟲:Requests的SSLError:certificate verify failed問題解決方案6條...

問題:腳本是用Python寫的,用到開源庫play-scraper,調用其collectionAPI來獲取Google Play的Top App列表。該庫使用了requests作為客戶端來對Google Play進行操作。當腳本執行時,會報如下錯誤:certificate verify faile…

2019年1月3日

數組 字面量創建數組 1. var arr[]; []里邊可以放數字,字符串,true,false,null,undefined,數組([1,2,3]),對象{x:1,y:2} var arr[1,2…

vertex 3.0 與SpringBoot混合開發之初探

SpringBoot是最近幾年比較流行的web應用開發框架,它是微服務的一個開發框架。它的Web服務器內核為Tomcat或Jetty,它們作為Servlet容量來對客戶端的http/https請求進行解析。最近,spring.io又出推出一套新的服務器內核框架,它就是W…