430 likes | 685 Views
Hệ thống quản lý phiên bản dự án phần mềm Subversion. Danh sách thành viên : Nguyễn Khắc Trọng Phạm Duy Sơn Dương Văn Tuyến. Nội dung đề tài. Giới thiệu về Subversion. So sánh Subversion với các hệ thống quản lý phiên bản khác như CVS, GIT, …
E N D
Hệthốngquảnlýphiênbảndựánphầnmềm Subversion Danhsáchthànhviên: NguyễnKhắcTrọng PhạmDuySơn DươngVănTuyến
Nội dung đềtài • Giớithiệuvề Subversion. • So sánh Subversion vớicáchệthốngquảnlýphiênbảnkhácnhư CVS, GIT, … • Các Subversion Server vàSubversion Client. • Giớithiệuvềcôngcụ Subversive trongphầnmềmmãnguồnmở Eclipse. • Ứngdụng Subversion vàoquảnlýmộtdựánphầnmềm. • Tổngkết, đánhgiá, triểnvọngvàhướngpháttriểncủa Subversion vàcôngcụSubsersive.
Giớithiệu Subversion • Subversion (viếttắt SVN) làmộthệthốngquảnlý version (version control system - VCS) đượcgiớithiệuvàonăm 2000 bởicôngtyCollabNet (http://subversion.tigris.org). Đâylàhệthốnghỗtrợlàmviệctheonhómrấthiệuquả. • Khimộtnhómlàmviệctrêncùngmột project, việcnhiềungườicùngchỉnhsửanội dung củamột file làđiềukhôngthểtránhkhỏi. SVN cungcấpcácchứcnăngđểcóthểthựchiệnviệcnàymộtcáchđơngiảnvà an toàn.
Subversion đượcthiếtkếvớimụcđíchthaythếhệthốngquảnlýphiênbảnConcurrent Versioning System (CVS) đãcũvàcónhiềunhượcđiểm. Subversion cóthểđượcsửdụngđểquảnlýbấtcứhệthốngphiênbảnnào. • Subversion làhệthốngquảnlý source code tậptrung(Centralized). • Subversion làhệthốngquảnlýphiênbảnmạnhmẽ, hữudụng, vàlinhhoạt. • Subversion quảnlýtập tin vàthưmụctheothờigian.
SVN giốngnhưmộthệthống file server màcác client cóthể download và upload file mộtcáchbìnhthường. Điểmđặtbiệtcủa SVN lànólưulạitấtcảnhữnggìthayđổitrênhệthống file: file nàođãbịthayđổilúcnào, thayđổinhưthếnào, vàaiđãthayđổinó. SVN cũngchophép recover lạinhững version cũmộtcáchchínhxác. Cácchứcnăngnàygiúpchoviệclàmviệcnhómtrởnênhiệuquảvà an toànhơnrấtnhiều. • Thôngthường, client và server kếtnốithông qua mạngLAN hoặcInternet. Client và server cóthểcùngchạytrênmộtmáynếu SVN cónhiệmvụtheovếtlịchsửcủadựán do cácnhàpháttriểnphầnmềmpháttriểntrongnộibộ.
Subversion hỗtrợkhánhiềugiaothứcđểkếtnốigiữa client và server. • Vídụbạncóthểdùngcácgiaothứccủaứngdụng web như http:// hoặc https://, hay cácgiaothứccủasvnnhư svn:// hoặcsvn+ssh://, hoặcnếuphầnmềm client và server càichungtrên 1 máythìcóthểdùng file://. • Việcchophép server hỗtrợgiaothứcnàophụthuộcvàolúccấuhình.
Mộtsốkháiniệmcơbản Subversion dựatrênmôhìnhquảnlítậptrungkiểu client/server. Môhìnhnàycó 2 kháiniệmcơbản: Repository vàWorking Copies. • Repository đặt ở server lànơitậptrungquảnlýcácphiênbảncủadựánphầnmềm. • Cácthưmụcvàtập tin củadựánđượcđặtvàotrongkholưutrữtrungtâmnày. Nógiốngnhưmộtmáychủtập tin thôngthường, ngoạitrừviệcnóghilạiđượcmọithông tin thayđổitheothờigiancủahệthốngtập tin vàthưmục.
Repository chophépkhôiphụclạiphiênbảncũcủadữliệu, hoặckiểmtralịchsửcủadữliệuthayđổinhưthếnào. • Working Copies đặt ở client làcácphiênbảnlàmviệccopy củacáctập tin trong repository. Repository thìchỉcómột, trongkhi working copies cóthểcónhiều (tươngứngvới repository đó).
Checkout: làkháiniệmdùngđểchỉmộtthànhviêncủadựán ở client sẽlấymộtphiênbản copy củacác file thuộc project trên server vềmáycụcbộ. • Commit: thànhviêncủadựánđưacácthayđổitrêncác file của project tạimáy client lên server. • Update: khimộtthànhviênmuốncậpnhậtnhữngthayđổicủacác file thuộcthànhviênkháctrên Repository vềmáycụcbộcủamình. • Merge: nhiềuthànhviêncùngtiếnhànhcậpnhậttrênmộttập tin.
Revision Đểquảnlícácphiênbảnkhácnhau, Subversion đưarakháiniệm revision. Nóimộtcáchđơngiản, đểhệthốngcóthểquảnlýđượcsựthayđổicủacáctập tin, mỗitập tin sẽcódạngName-Revision. Vídụ: cnpm.doc-rev1 và cnpm.doc-rev2 là 2 revision củatập tin cnpm.doc.
Revision • Cứmỗilần commit, toànbộ Repository sẽcómột con số revision mới(mỗi con sốnàylàduynhấtvàsố revision saulớnhơn revision trước). • Dùchỉthayđổimộttập tin saukhi commit, nhưngtoànbộhệthốngtập tin của Repository sẽcócũngmột con số revision.
So sánh Subversion vớicáchệthốngquảnlýphiênbảnkhác 1. CVS (Concurrent Versions System) • CVS (Concurrent Versions System) tươngtựnhưSVN làmôhìnhmô hình quản lý source code tập trung (Centralized). • CVS ra đời năm 1986,làhệthốngquảnlýphiênbảnđầutiên,sau đó đến sự bùngnổ của SVN. SVN bản chất vẫn là CVS được cải tiến, nhưng có nhiều công cụ hỗ trợ hơn. • Cả CVS và SVN đều có tư tưởng chung về cách làm việc chung giữa các thành viên theo mô hình (quản lý source code tập trung) như sau:
Atomic Commit : có lẽ sự cải thiện lớn nhất của SVN từ CVS là bổ sung việc commit của các thành viên được gọi là Atomic Commit.Atomic Commit cho phép mỗi commit từ thành viên được upate đầy đủ hoặc không có gì cả, điều này rất có ý nghĩa khi máy chủ bị treo trong lúc commit. Với CVS khi máy chủ bị treo hay kết nối bị trục trặc thì việc commit có thể bị dở dang, không đầy đủ. • Với SVN, các commit có thể được roll-back lại trạng thái trước đó, trong khi CVS thì không thể.
SVN tiện lợi hơn CVS trong việc đổi tên và di chuyển các tập tin, thư mục. Với SVN các tập tin được đổi tên hoặc loại bỏ vẫn mang theo đầy đủ history và meta-data của nó trước đó.Trong khi đó với CVS thì tập tin bị đổi tên hoặc di chuyển sẽ bị mất history trước đó. • CVS cũng không thể đẩy bất cứ những thay đổi mới đến Repositorycha mà chỉ có thể đẩy lên Repository con của nó, trong khi một số công cụ SVN có khả nănglàmviệcnày.
Cả hai sử dụng giao thức độc quyền qua một kết nối SSH để đảm bảo an toàn thông tin đang được truyền đi trên mạng. SVN bổ sung WebDAV DeltaV, giao thức này được dựa trên HTTP và HTTPS cung cấp cho người dùng một tùy chọn để kết nối với các SVN qua web. • Về mặt cơ bản cả 2 đều hoạt động như nhau: tất cả source code sẽ được đặt trên 1 server trung tâm, mọi thành viên đều làm việc trên source code đó.
So sánh Subversion vớicácphươngphápquảnlýphiênbảnkhác 2. GIT • GIT làmộtphươngphápquảnlýphiênbảntheohướngphântán(Distributed), hoàntoàntráingượcvớiphươngphápquảnlýtậptrungcủa SVN và CVS. • Dựánphầnmềmsửdụng GIT đểquảnlýkhôngcầncóchungmột Repository lưutrữ. MàmỗithànhviêncủadựánsẽcómộtRepository ở máylocal củahọ.
Tất cả thao tác làm việc với Git đều ở trên máy của local, local repository, khi quyết định đưa những thay đổi đó lên server ta chỉ cần một thao tác “push” nó lên server. • Cácthànhviêntrongdựánvẫncóthể share cácthayđổichonhau, bằng cách commit hoặc update trực tiếp từ máy của họ mà không phải thông qua repositorygốc trên server (thông qua share ssh cho nhau). Và dĩ nhiên là mọi thao tác đều mang theo thông tin history với Git. • Gitđượcđánhgiálàkhósửdụnghơn CVS và SVN.
3. Cáchệthốngquảnlýphiênbảnkhác • Mercurial:làhệthốngquảnlýphiênbảnmãnguồnmở, giốngnhư GIT, nhưngđơngiảnhơnnhiều. Mercurial đượcthiếtkếđểsửdụngchocácdựánlớn. • Bazzar: làhệthốngquảnlýphiênbảnphântán, như GIT và Mercurial, đượcđánhgiálàkháthânthiệnvớingườidùng, cókhảnăngquảnlýbấtkỳdựánnào. • LibreSource: làmột Web Portal dùngđểquảnlýnhiềudựáncộngtácvớinhau, đượcthiếtkếchonhữngngườidùngkhôngcầncónhiềuhiểubiếtvềkỹthuật, côngnghệ. • Monotone: làmộtnhánhnhỏcủahệthốngquảnlýphântán, ítphổbiếnhơncáchệthốngkhác.
SVN Server vàSVN Client • SVN Server Các SVN Server cóthểđượcđặttrênmáy local hoặccácmáychủtrên Internet. Cókhánhiềuphầnmềmvàdịchvụmiễnphícho SVN Server. • Phầnmềm: CollabNet Subversion Server, VisualSVN Server, … • Dịchvụ: SourceForge.net, Google Code, Beanstalk
Các SVN Server và SVN Client 2. SVN Client CácphầnmềmSVN client cóthể chia làm 3 loạichính: stand-alone clients, desktop-integrated clients và IDE plug-in clients. • Stand-alone clients làloạiđứngnhưmộtứngdụngđộclập, nghĩalàkhôngphụthuộcvàophầnmềmnàokhác.
Desktop-intergrated clients làloạiđượctíchhợpvàocácphầnmềm desktop. VídụnhưTortoiseSVNtíchhợpvào Windows File Explorer, mỗikhibạn click chuộtphảitrongmànhìnhcủa Windows File Explorer sẽthấycácchứcnăngcủaSVN client. • IDE plug-in clients làloạitíchhợpvàocácmôitrườnglậptrình (IDE). VídụSubversive đượctíchhợpvào Eclipse.
Danhsáchmộtsố SVN Client: • Subversive:mộtdạng plug-in trong Eclipse. • AnkhSVN:làmộtphầnmềmphụ, bổ sung khảnăngtruycập Subversion chomôitrườnglậptrình Visual Studio .NET. • Insurrection:giaodiện Web cho Subversion. • JSVN:chươngtrìnhkháchviếtbằng Java. • svnX:chươngtrìnhkháchcho Mac OS. • TortoiseSVN: làmộtphầnmềmlàmviệctrênnền Windows Explorer. • WebSVN:làmộtgiaodiện Web cho Subversion, viếtbằngPHP…
Giớithiệucôngcụ Subversive • Subversive làmộtdạng plug-in của Eclipse. Mặcđịnh Eclipse khôngtíchhợpsẵn Subversive, vìvậyđểsửdụng Subversive bạnphảicàiđặtthêm plug-in nàyvào Eclipse. • Càiđặt Subversive bằngchứcnăng update của Eclipse hoặccóthể download file nénchứa Subversive sauđó add vào Eclipse.
Tổngkết - đánhgiá • Subversion làhệthốngquảnlýphiênbảnđượcsửdụngphổbiếnhiện nay. Nhữnglợiíchmà Subversion manglạilàrất to lớn: giúpthúcđẩytiếnđộxâydựngvàpháttriểndựán, pháthuykhảnănglàmviệctheonhóm, dễdàngsaolưuvàphụchồicácphiênbảncủadựán, đảmbảo an toànthông tin dữliệu. • Subversive làmột plug-in của Eclipse – mộtphầnmềmmãnguồnmởhỗtrợrấtnhiềungônngữkhácnhau. Sửdụng Eclipse cácnhàpháttriểncóthểtíchhợpthêmnhiềucôngcụkhácđểtạonênmộtbộcôngcụhoànchỉnhmàkhôngcầndùngđếnbấtcứmộtmôitrườngpháttriểnriêngnàokhác.
Eclipse đượcsựhỗtrợđôngđảocủacộngđồngmãnguồnmở, giúpnóluôntụcđượccậpnhậtnhữngcôngnghệmới, cóthểchạytrênbấtkỳmôitrườngnào, cótínhmởrộngvàtùybiếnrấtcao. Vìthế, Subversive cũngđượcthừahưởngnhữnglợithếđó. • Subversive hỗtrợđầyđủcácgiaothứcvàcáctínhnăngcho Subversion. Côngcụnàysẽngàycàngđượccảitiếnđểđápứngngàycàngtốthơnnữayêucầuquảnlýphiênbảncủacácdựánphầnmềm.