Subversion - 維基百科,自由的百科全書 - Wikipedia

文章推薦指數: 80 %
投票人數:10人

Apache Subversion(簡稱SVN,svn),一個開放原始碼的版本控制系統,相較於RCS、CVS,它採用了分支管理系統,它的設計目標就是取代CVS。

網際網路上很多版本控制服務已 ... Subversion 維基百科,自由的百科全書 跳至導覽 跳至搜尋 Subversion開發者Apache軟體基金會初始版本2000年10月20日,​21年前​(2000-10-20)穩定版本1.14.2(2022年4月12日,​5個月前​(2022-04-12)) 原始碼庫svn.apache.org/repos/asf/subversion/trunk/ 程式語言C作業系統跨平台類型版本控制授權條款Apache授權條款網站subversion.apache.org ApacheSubversion(簡稱SVN,svn),一個開放原始碼的版本控制系統,相較於RCS、CVS,它採用了分支管理系統,它的設計目標就是取代CVS。

網際網路上很多版本控制服務已從CVS轉移到Subversion。

目次 1歷史 2特性 3企業級subversion 3.1SubversionMultisite 3.2基於Subversion的ALM平台——UberSVN 4不足 5使用情況 6SVN客戶端圖形化軟體 6.1TortoiseSVN 6.2SnailSVN 6.3Ankhsvn 6.4Subclipse 6.5Subversive 6.6SCPlugin 6.7SVNx 6.8eSVN 6.9kdesvn 6.10RabbitVCS 6.11GTalkabout 7外部連結 歷史[編輯] CollabNet於2000年建立SVN專案,意在寫出一款近似CVS操作方式的版本控制系統。

只不過,此款產品針對CVS的bug和一些缺失的功能,進行了修正和補充。

2000年2月,他們聯絡了OpenSourceDevelopmentwithCVS(Coriolis,1999)的作者KarlFogel,問他是否願意為這個新專案工作。

巧的是這時Karl已經在和他的朋友JimBlandy討論一個新的版本控制系統的設計。

在1995年,兩人開了一家提供CVS技術支援的公司,叫作CyclicSoftware。

雖然公司已經賣掉了,他們仍然在日常工作中使用CVS。

在使用CVS時受到的束縛已經讓Jim開始仔細思考管理版本化資料的更好的路子。

他不僅已經起好了名字「Subversion」,而且有了Subvesion資料庫的基本設計。

當CollabNet打來電話時,Karl立刻同意為這個專案工作。

Jim徵得他的老闆RedHatSoftware的同意,讓他投入這個專案,而且沒有時間限制。

CollabNet雇用了Karl和BenCollins-Sussman,從5月份開始詳細設計。

由於GregStein和CollabNet的BrianBehlendorf和JasonRobbins作了恰當的推動,Subversion很快吸引了一個活躍的開發人員社群。

這說明了許多人有相同的受制於CVS的經驗,他們對終於有機會對它做點什麼表示歡迎。

最初的設計團隊設定了幾個簡單的目標。

他們並不想在版本控制方法論上有新突破。

他們只想修補CVS。

他們決定Subversion應該與CVS相似,保留相同的開發模型,但不複製CVS最明顯的缺點。

雖然它不一定是CVS的完全的替代品,但它應該和CVS相似,從而任何CVS使用者可以不費什麼力氣的轉換過來。

經過14個月的編碼,在2001年8月31號,Subversion可以「自我寄生」了。

就是說,Subversion開發人員停止使用CVS管理Subversion的原始碼,開始使用Subversion代替。

雖然CollabNet發起了這個專案,而且仍然資助一大部分的工作(它為一些專職的Subversion開發人員發薪水)。

但是Subversion像大部分開放原始碼的專案一樣運作,由一個鬆散透明,鼓勵能者多勞的規則管理。

CollabNet的著作權授權條款和DebianFSG完全相容。

換句話說,任何人可以免費下載,修改,按自己的意願重新分發Subversion,而不必得到來自CollabNet或其他任何人的授權。

2009年11月,Subversion被ApacheIncubator專案所接收。

2010年1月,正式成為Apache軟體基金會的一個頂級專案。

特性[編輯] 統一的版本號。

CVS是對每個檔案順序編排版本號,在某一時間各檔案的版本號各不相同。

而Subversion下,任何一次提交都會對所有檔案增加到同一個新版本號,即使是提交並不涉及的檔案。

所以,各檔案在某任意時間的版本號是相同的。

版本號相同的檔案構成軟體的一個版本。

原子提交。

一次提交不管是單個還是多個檔案,都是作為一個整體提交的。

在這當中發生的意外例如傳輸中斷,不會引起資料庫的不完整和數據損壞。

重新命名、複製、刪除檔案等動作都儲存在版本歷史記錄當中。

對於二進制檔案,使用了節省空間的儲存方法(簡單的理解,就是只儲存和上一版本不同之處)。

目錄也有版本歷史。

整個目錄樹可以被移動或者複製,操作很簡單,而且能夠保留全部版本記錄。

分支的開銷非常小。

最佳化過的資料庫存取,使得一些操作不必存取資料庫就可以做到。

這樣減少了很多不必要的和資料庫主機之間的網路流量。

支援元資料(Metadata)管理。

每個目錄或檔案都可以定義屬性(Property),它是一些隱藏的鍵值對,使用者可以自訂屬性內容,而且屬性和檔案內容一樣在版本控制範圍內。

支援FSFS和BerkeleyDB兩種資料庫格式。

企業級subversion[編輯] SubversionMultisite[編輯] 對於企業級應用,subversion還有其先天不足,比如對於多個地點的並列開發。

Wandisco公司為此開發了subversionmultisite,實現異地對等伺服器自動同步,支援並列開發以及異地備份。

基於Subversion的ALM平台——UberSVN[編輯] ALM(ApplicationLifecycleManagement)是軟體組態管理的未來趨勢,各種軟體版本工具包括subversion都要整合到其中。

目前UberSVN是唯一的以Subversion為基礎構建的ALM平台,並實現了協同開發以及社交化編碼。

不足[編輯] 只能設定目錄的存取權限,無法設定單個檔案的存取權限(目前可以通過輔助模組比如wandiscoaccesscontrol實現單檔案存取)。

資料庫為二進位格式,無法方便的利用其它軟體讀取資料庫的內容。

使用情況[編輯] 雖然在2006年Subversion的使用族群仍然遠少於傳統的CVS,但已經有許多開放原碼團體決定將CVS轉換為Subversion。

已經轉換使用Subversion的包括了FreeBSD、ApacheSoftwareFoundation、KDE、GNOME、GCC、Python、Samba、Mono以及許多團體。

許多開發團隊換用Subversion是因為Trac、SourceForge、CollabNet、CodeBeamer等專案協同作業軟體以及Eclipse、NetBeans等IDE提供Subversion的支援整合。

除此之外,一些自由軟體開發的協作網如SourceForge.net除了提供CVS外,現在也提供專案開發者使用Subversion作為原始碼管理系統,JavaForge、GoogleCode以及BountySource則以Subversion作為官方的原始碼管理系統。

2009年,絕大多數CVS服務已經改用SVN。

此時CVS早已經停止維護。

不過CVS也有了合適的替代品。

SVN客戶端圖形化軟體[編輯] TortoiseSVN[編輯] 在windows非常受到歡迎的一套客戶端軟體,它與檔案總管整合得相當不錯,可以透過檔案總管在檔案或目錄上用滑鼠右鍵的選單完成SVN的操作。

TortoiseSVN官方網站(頁面存檔備份,存於網際網路檔案館) SnailSVN[編輯] MacOSX平台下類似TortoiseSVN的圖形化SVN客戶端,可自動標記檔案狀態,並通過右鍵選單提供各種常用SVN功能。

下載SnailSVN(MacAppStore)(頁面存檔備份,存於網際網路檔案館) Ankhsvn[編輯] 將subversion的操作整合進VisualStudio的SVN客戶端軟體。

Ankhsvn官方網站(頁面存檔備份,存於網際網路檔案館) Subclipse[編輯] 將Subversion的操作整合進Eclipse的SVN客戶端軟體。

Subclipse官方網站(頁面存檔備份,存於網際網路檔案館) Subversive[編輯] 和Subclipse相同。

Subversive官方網站(頁面存檔備份,存於網際網路檔案館) SCPlugin[編輯] MacOS下類似TortoiseSVN的軟體。

SCPlugin官方網站(頁面存檔備份,存於網際網路檔案館) SVNx[編輯] MacOSX下的一款客戶端軟體。

SVNx官方網站(頁面存檔備份,存於網際網路檔案館) eSVN[編輯] Unix下類似TortoiseSVN的軟體。

eSVN官方網站(頁面存檔備份,存於網際網路檔案館) kdesvn[編輯] Linux下使用KDE桌面管理下類似TortoiseSVN的軟體。

kdesvn官方網站 RabbitVCS[編輯] Linux下使用Gnome桌面管理下類似TortoiseSVN的軟體。

RabbitVCS官方網站(頁面存檔備份,存於網際網路檔案館) GTalkabout[編輯] Windows下整合了討論功能的客戶端軟體。

GTalkabout官方網站(頁面存檔備份,存於網際網路檔案館) 外部連結[編輯] Subversion官方網站(頁面存檔備份,存於網際網路檔案館) Subversion舊官方網站(頁面存檔備份,存於網際網路檔案館) 閱論編Apache軟體基金會頂級專案 Abdera(英語:ApacheAbdera) Accumulo(英語:ApacheAccumulo) ActiveMQ Ambari(英語:ApacheAmbari) Ant Aries(英語:ApacheAries) ApacheArrow ApacheHTTPServer APR Avro Axis Axis2 Beam Bloodhound(英語:ApacheBloodhound) ApacheBrooklyn(英語:ApacheBrooklyn) Buildr(英語:ApacheBuildr) Calcite(英語:ApacheCalcite) Camel Cassandra Cayenne(英語:ApacheCayenne) Chemistry(英語:ApacheChemistry) CloudStack(英語:ApacheCloudStack) Cocoon(英語:ApacheCocoon) Continuum(英語:ApacheContinuum) Cordova CouchDB cTAKES(英語:cTAKES) CXF Deltacloud(英語:Deltacloud) Derby Directory(英語:ApacheDirectoryServer) Drill(英語:ApacheDrill) Empire-db(英語:ApacheEmpire-db) ECharts Felix(英語:ApacheFelix) Flex Flink Flume(英語:ApacheFlume) Forrest(英語:ApacheForrest) Geronimo(英語:ApacheGeronimo) Gora(英語:ApacheGora) Gump(英語:ApacheGump) Hadoop Hama(英語:ApacheHama) HBase Hive Jackrabbit(英語:ApacheJackrabbit) James(英語:ApacheJames) JMeter(英語:ApacheJMeter) Kafka Karaf(英語:ApacheKaraf) Kylin(英語:ApacheKylin) Lucene Lenya(英語:ApacheLenya) Mahout(英語:ApacheMahout) Marmotta(英語:ApacheMarmotta) Maven MINA(英語:ApacheMINA) mod_perl(英語:mod_perl) MyFaces(英語:ApacheMyFaces) Nutch(英語:ApacheNutch) ODE(英語:ApacheODE) OFBiz(英語:ApacheOFBiz) Oozie(英語:Oozie) OpenEJB(英語:ApacheOpenEJB) OpenJPA(英語:ApacheOpenJPA) OpenNLP OpenOffice PDFBox(英語:ApachePDFBox) Phoenix(英語:ApachePhoenix) POI Pig(英語:Pig(programmingtool)) Pivot(英語:ApachePivot) Qpid(英語:ApacheQpid) River(英語:ApacheRiver) Roller(英語:ApacheRoller) RocketMQ Samza(英語:ApacheSamza) ServiceMix(英語:ApacheServiceMix) Shindig(英語:ApacheShindig) Shiro Sling(英語:ApacheSling) Spark Stanbol(英語:ApacheStanbol) Storm SpamAssassin Sqoop ApacheC++標準庫(英語:stdcxx) Struts Struts2 Subversion Tapestry Thrift Tiles(英語:ApacheTiles) Tika(英語:ApacheTika) Tomcat Trafficserver Turbine Tuscany UIMA Velocity Wave Wicket Wink(英語:ApacheWink) Xalan(英語:Xalan) Xerces(英語:Xerces) XMLBeans(英語:XMLBeans) ZooKeeper Commons專案 ApacheCommonsLogging(英語:ApacheCommonsLogging) BCEL(英語:ByteCodeEngineeringLibrary) BSF(英語:BeanScriptingFramework) CommonsDaemon(英語:CommonsDaemon) Jelly(英語:ApacheJelly) Lucene專案 LuceneJava Lucene.Net(英語:Lucene.Net) Nutch(英語:Nutch) Solr Hadoop專案 HBase HDFS 其他專案 Batik Chainsaw(英語:Chainsaw(logfileviewer)) FOP Log4j XAP(英語:ApacheXAP) Log4Net Ivy(英語:ApacheIvy) 孵化器專案 XAP(英語:ApacheXAP) Samza(英語:ApacheSamza) Storm ApacheAttic AxKit(英語:AxKit) Beehive(英語:ApacheBeehive) Click(英語:ApacheClick) Bluesky(英語:BlueSkyOpenPlatform) Cactus(英語:JakartaCactus) Jakarta Excalibur(英語:ApacheExcalibur) Harmony HiveMind(英語:ApacheHiveMind) Lenya(英語:ApacheLenya) Slide(英語:JakartaSlide) Shale(英語:ApacheShale) Shindig(英語:ApacheShindig) stdcxx(英語:ApacheC++StandardLibrary) iBATIS XMLBeans(英語:XMLBeans) 授權條款標準 Apache授權條款 分類 維基共享 閱論編版本控制軟體年代是指第一次發行的穩定版本,斜體表示軟體不再維護。

主從式架構 自由軟體 SCCS(英語:SourceCodeControlSystem)(1972) RCS(英語:RevisionControlSystem)(1982) CVS(1990) CVSNT(英語:CVSNT)(1998) Subversion(2000) 私有軟體 CCC/Havest(英語:AllFusionHarvestChangeManager)(1970s) ClearCase(英語:IBMRationalClearCase)(1992) MicrosoftVisualSourceSafe(1994) Perforce(英語:Perforce)(1995) TeamFoundationServer(2005) 分散式控制 免費或自由軟體 GNUarch(2001) Darcs(英語:Darcs)(2002) DCVS(英語:DistributedConcurrentVersionsSystem)(2002) SVK(2003) Monotone(2003) Codeville(英語:Codeville)(2005) Git(2005) Mercurial(2005) GNUBazaar(2005) Fossil(2007) 商業軟體 SunWorkShopTeamWare(英語:SunWorkShopTeamWare)(1990年代?) CodeCo-op(英語:CodeCo-op)(1997) BitKeeper(1998) 概念 基準 變更集 分支 復刻 提交 差分編碼 diff 合併 標籤 主幹 倉庫 列表(英語:Listofversioncontrolsoftware) 比較 取自「https://zh.wikipedia.org/w/index.php?title=Subversion&oldid=73119691」 分類:​版本控制系統Apache軟體基金會自由跨平台軟體用C編程的自由軟體隱藏分類:​使用未知軟體信息框參數的頁面含有英語的條目 導覽選單 個人工具 沒有登入討論貢獻建立帳號登入 命名空間 條目討論 臺灣正體 不转换简体繁體大陆简体香港繁體澳門繁體大马简体新加坡简体臺灣正體 查看 閱讀編輯檢視歷史 更多 搜尋 導航 首頁分類索引特色內容新聞動態近期變更隨機條目資助維基百科 說明 說明維基社群方針與指引互助客棧知識問答字詞轉換IRC即時聊天聯絡我們關於維基百科 工具 連結至此的頁面相關變更上傳檔案特殊頁面靜態連結頁面資訊引用此頁面維基數據項目 列印/匯出 下載為PDF可列印版 其他專案 維基共享資源 其他語言 AfrikaansالعربيةБеларуская(тарашкевіца)БългарскиCatalàČeštinaDanskDeutschEnglishEsperantoEspañolEestiEuskaraفارسیSuomiFrançaisGalegoעבריתहिन्दीHrvatskiMagyarBahasaIndonesiaItaliano日本語Қазақша한국어LietuviųLatviešuМакедонскиമലയാളംBahasaMelayuNederlandsNorskbokmålPolskiPortuguêsRomânăРусскийSrpskohrvatski/српскохрватскиSimpleEnglishSlovenčinaSlovenščinaСрпски/srpskiSvenskaதமிழ்TürkçeУкраїнськаTiếngViệt吴语 編輯連結



請為這篇文章評分?