Tải bản đầy đủ (.pdf) (20 trang)

SỬ DỤNG SUBVERSION TRONG LẬP TRÌNH NHÓM

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.62 MB, 20 trang )

Nội Dung Seminar :
SỬ DỤNG SUBVERSION TRONG LẬP TRÌNH NHÓM

I. Giới thiệu về Subversion :
Subversion là một phần mềm mã nguồn mở dùng để quản lý và kiểm tra các phiên
bản mã nguồn (hay còn gọi là version -version control system - VCS ) khác nhau trong quá
trình phát triển phần mềm. Subversion được giới thiệu vào năm 2000 bởi công ty
CollabNet (http:// Subversion.tigris.org). Đây là hệ thống hỗ trợ làm việc theo nhóm rất
hiệu quả. Khi một nhóm làm việc trên cùng một project, việc nhiều người cùng chỉnh sửa
nội dung của một file là điều không thể tránh khỏi. SVN cung cấp các chức năng để có thể
thực hiện việc này một cách đơn giản và an toàn.
Subversion cũng còn được gọi là svn. Svn là lệnh dùng để thực hiện các chức năng
Subversion trong môi trường thi hành lệnh trên các pc. Subversion được thiết kế với mục
đích thay thế phần mềm quản lý phiên bản
Concurrent Versioning System
(CVS) đã cũ và
có nhiều nhược điểm. Subversion có thể được sử dụng để quản lý bất cứ hệ thống phiên
bản nào. Một số các lập trình viên chính cho dự án CVS hiện đang tham gia phát triển
Subversion.
Subversion rất phổ biến trong giới mã nguồn mỡ và được dùng để quản lý mã nguồn
cho nhiều ứng dụng tự do như: Apache Software Foundation, KDE, GNOME, Free Pascal,
FreeBSD, GCC, Python, Django, Ruby, và Mono. SourceForge.net và Tigris.org, nơi lưu trữ
miễn phí chuyên nghiệp dành cho các ứng dụng tự do, đều có hỗ trợ Subversion cho các
ứng dụng được lưu trữ trong máy chủ. Ngoài ra Google Code và BountySource chỉ sử dụng
Subversion để quản lý các phiên bản mã nguồn.
II. Đặc đểm của Subversion :
- Subversion được phát hành với giấy phép Apache License. Do đó Subversion
là một phần mềm nguồn mở và tự do.
- Subversion là hệ thống quản lý source code tập trung (Centralized).
- Subversion quản lý tập tin và thư mục theo thời gian
- SVN giống như một hệ thống file server mà các client có thể download và


upload file một cách bình thường.
- Điểm đặt biệt của SVN là nó lưu lại tất cả những gì thay đổi trên hệ thống file:
file nào đã bị thay đổi lúc nào, thay đổi như thế nào, và ai đã thay đổi nó.
- SVN cũng cho phép recover lại những version cũ một cách chính xác. Các
chức năng này giúp cho việc làm việc nhóm trở nên hiệu quả và an toàn hơn rất
nhiều.
- Thông thường, client và server kết nối thông qua mạng LAN hoặc Internet.
Client và server có thể cùng chạy trên một máy nếu SVN có nhiệm vụ theo vết lịch
sử của dự án do các nhà phát triển phần mềm phát triển trong nội bộ.
- Subversion hỗ trợ khá nhiều giao thức để kết nối giữa client và server.
o Ví dụ bạn có thể dùng các giao thức của ứng dụng web như http://
hoặc https://, hay các giao thức của svn như svn:// hoặc svn+ssh://, hoặc
nếu phần mềm client và server cài chung trên 1 máy thì có thể dùng file://.
o Việc cho phép server hỗ trợ giao thức nào phụ thuộc vào lúc cấu hình.
III. Một số khái niệm cơ bản
Subversion dựa trên mô hình quản lí tập trung kiểu client/server. Mô hình này có 2
khái niệm cơ bản: Repository và Working Copies.
- Repository đặt ở server là nơi tập trung quản lý các phiên bản của dự án phần
mềm.
 Các thư mục và tập tin của dự án được đặt vào trong kho lưu trữ trung
tâm này. Nó giống như một máy chủ tập tin thông thường, ngoại trừ việc nó ghi
lại được mọi thông tin thay đổi theo thời gian của hệ thống tập tin và thư mục.
 Repository cho phép khôi phục lại phiên bản cũ của dữ liệu, hoặc kiểm
tra lịch sử của dữ liệu thay đổi như thế nào.
- Working Copies đặt ở client là các phiên bản làm việc copy của các tập tin
trong repository.
Repository thì chỉ có một, trong khi working copies có thể có nhiều (tương ứng với
repository đó).
- Checkout: là khái niệm dùng để chỉ một thành viên của dự án ở client sẽ lấy
một phiên bản copy của các file thuộc project trên server về máy cục bộ.

- Commit: thành viên của dự án đưa các thay đổi trên các file của project tại
máy client lên server.
- Update: khi một thành viên muốn cập nhật những thay đổi của các file thuộc
thành viên khác trên Repository về máy cục bộ của mình.
- Merge: nhiều thành viên cùng tiến hành cập nhật trên một tập tin.
- Revision : để quản lí các phiên bản khác nhau, Subversion đưa ra khái niệm
revision. Nói một cách đơn giản, để hệ thống có thể quản lý được sự thay đổi của
các tập tin, mỗi tập tin sẽ có dạng Name-Revision.
Ví dụ: cnpm.doc-rev1 và cnpm.doc-rev2 là 2 revision của tập tin cnpm.doc.
 Cứ mỗi lần commit, toàn bộ Repository sẽ có một con số revision mới
(mỗi con số này là duy nhất và số revision sau lớn hơn revision trước).
 Dù chỉ thay đổi một tập tin sau khi commit, nhưng toàn bộ hệ thống
tập tin của Repository sẽ có cũng một con số revision.
IV. So sánh Subversion với các hệ thống quản lý phiên bản khác
1. CVS (Concurrent Versions System)
- CVS (Concurrent Versions System) tương tự như SVN là mô hình mô hình
quản lý source code tập trung (Centralized).
- CVS ra đời năm 1986, là hệ thống quản lý phiên bản đầu tiên, sau đó đến sự
bùng nổ 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 Repository cha mà
chỉ có thể đẩy lên Repository con của nó, trong khi một số công cụ SVN có khả năng
làm việc này.
2. GIT
- GIT là một phương pháp quản lý phiên bản theo hướng phân tán
(Distributed), hoàn toàn trái ngược với phương pháp quản lý tập trung của SVN và
CVS.
- Dự án phần mềm sử dụng GIT để quản lý không cần có chung một Repository
lưu trữ. Mà mỗi thành viên của dự án sẽ có một Repository ở máy local của họ.
- 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ác thành viên trong dự án vẫn có thể share các thay đổi cho nhau, 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
repository gố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 đánh giá là khó sử dụng hơn CVS và SVN.
3. Các hệ thống quản lý phiên bản khác
- Mercurial: là hệ thống quản lý phiên bản mã nguồn mở, giống như GIT,
nhưng đơn giản hơn nhiều. Mercurial được thiết kế để sử dụng cho các dự án lớn.
- Bazzar: là hệ thống quản lý phiên bản phân tán, như GIT và Mercurial, được
đánh giá là khá thân thiện với người dùng, có khả năng quản lý bất kỳ dự án nào.
- LibreSource: là một Web Portal dùng để quản lý nhiều dự án cộng tác với
nhau, được thiết kế cho những người dùng không cần có nhiều hiểu biết về kỹ
thuật, công nghệ.
- Monotone: là một nhánh nhỏ của hệ thống quản lý phân tán, ít phổ biến hơn
các hệ thống khác.

V. Mô hình hoạt động của Subversion :
Hệ thống Subversion được chia thành 2 thành phần : SVN Server và SVN Client
1. SVN Server
Các SVN Server có thể được đặt trên máy local hoặc các máy chủ trên Internet. Có
khá nhiều phần mềm và dịch vụ miễn phí cho SVN Server.
- Phần mềm: CollabNet Subversion Server, VisualSVN Server, …
- Dịch vụ: SourceForge.net, Google Code, Beanstalk, codeplex,…
2. SVN Client
Các phần mềm SVN client có thể chia làm 3 loại chính: stand-alone clients, desktop-
integrated clients và IDE plug-in clients.
- Stand-alone clients là loại đứng như một ứng dụng độc lập, nghĩa là
không phụ thuộc vào phần mềm nào khác.
- Desktop-intergrated clients là loại được tích hợp vào các phần mềm
desktop. Ví dụ như TortoiseSVN tích hợp vào Windows File Explorer, mỗi khi bạn
click chuột phải trong màn hình của Windows File Explorer sẽ thấy các chức năng
của SVN client.
- IDE plug-in clients là loại tích hợp vào các môi trường lập trình (IDE). Ví
dụ Subversive được tích hợp vào Eclipse.
Danh sách một số SVN Client:
- Subversive: một dạng plug-in trong Eclipse.
- AnkhSVN: là một phần mềm phụ, bổ sung khả năng truy cập Subversion
cho môi trường lập trình Visual Studio .NET.
- Insurrection: giao diện Web cho Subversion.
- JSVN: chương trình khách viết bằng Java.
- svnX: chương trình khách cho Mac OS.
- TortoiseSVN: là một phần mềm làm việc trên nền Windows Explorer.
- WebSVN: là một giao diện Web cho Subversion, viết bằng PHP…
VI. Hướng dẫn cài đặt :
a. Cài đặt trên SVN Server :
Ở đây chúng ta dung dịch vụ của google code. Google cho chúng ta 4GB free để lưu

trữ code project
Các bạn sẽ làm them các hình hướng dẫn sau :

- Đây là trang chính của google code ()
 Mục 1 – My favorites : là nơi theo dõi cái projects mà bạn đang tham
gia
 Mục 2 – Project Hosting : nếu muốn chọn tạo project mới thì bạn click
mouse vào đây

Sauk hi bạn chọn Project Hosting thì sẽ đến màng hình này, tại đây bạn sẽ chọn mục
Project Hosting On Google Code

Tiếp tục bạn sẽ click vào mục : Create a new project

Bây giờ bạn sẽ tiến hành khai báo các thông tin cho project của mình, sau đó click
vào mục Create project

Đây là trang quản lý các thành viên tham gia vào project, bạn có thể them thành viên
(add members) hay cài đặt các quyền truy cập của thành viên vào ptoject

Còn đây là trang quản lý soure, chúng ta đang ở mục checkout, ở mục này bạn chú ý
vào đoạn text bạn hãy copy lưu lại, chúng ta
sẽ sử dụng nó trong phần cài đặt trên SVN client. Khi một thành viên tham gia vào project
google sẽ cung cấp cho mỗi thành viên một password riêng để sử dụng trong lúc commit
hay update. Để lấy password này bạn click vào mục google.com password

Và đây là password mà google cung cấp cho bạn, hãy lưu trữ lại cẩn thận

Hiện tại ta đang ở mục Browse. Mục này là mục quản lý các file của project mà ta
commit lên


Còn dây là mục Changes là mục theo dõi Revision của project cũng như lịch sử thay
đỗi của project
b. Cài đặt trên SVN Client
Thì chúng ta sử dụng chương trình AnkhSvn đây là một plug-in cho visual studio hoàn
toàn miễn phí. Các bạn có thể download trên mạng về sử dụng.
Sau đây các bạn sẽ được hướng dẫn sử dụng Subversion căn bản


Hiện tại chúng ta đang có một project được dung để làm việc theo nhóm. Và cần chia
sẽ cho mọi người cùng nhau phát triển thì ta chọn mục Add Solution to Subversion hoặc
Add Selected Project to Subvesion

Sau đó sẽ xuất hiện màng hình này. Chúng ta sẽ sử dụng link mà google code cung
cấp ở phần trên vào ô Repository. Sau đó click vào mục Subversion Repositories và đợi
visual tải dữ liệu về. sau khi đó sẽ hiện lên hình cây thư mục như ở hình trên. Ta sẽ chọn
nơi lưu project theo cây thư mục này. Từ nay trở về sau project của chúng ta sẽ được lưu
trên google code giống như cây thư mục này

Sau đó sẽ xuất hiện màng hình này. Nếu chúng ta cần ghi một messeng để log thì ghi
vào. Không thì click ok!

Và đây là màng hình đăng nhập với user name : là tài khoản gmail của bạn sử dụng
google code. Còn password là password được lấy ở mục google.com password

Và đây là những hình ảnh của lần commit đầu tiên sau khi bạn đăng nhập thành công

Còn đây là menu Subversion khi bạn click chuột phải lên project. Trên đây có tất cả

các button chức năng của chương trình như : update, commit,…
Khi bạn muốn commit thì chỉ cần click button commit Project changes, muốn update
resion từ dịch vụ thì click button update to specific version hay update to lastest version.
Quá trình commit hay update sẽ được tự động thực hiện giống như quá trình Add
Solution.
Sau đây, chúng ta sẽ tiến hành lấy một project có sẳn trên mạng về cho máy mình.
Quá trình được thực hiện như sau :

Vào File  Open  Subversion Project

Khi đó sẽ hiện màng hình này. Bạn click vào button để add link của project
(tương tự như link khi bạn sử dụng trong quá trình Add Solution)

Khi đó hiện màng hình này ra. Chúng ta sẽ paste link vào ô Url  ok

ở màng hình này bạn sẽ tìm đến project cần tải về máy sử dụng


Sau khi chọn được project thì sẽ hiện ra màng hình này. bạn sẽ chọn nơi lưu project
của mình trên PC. Và chương trình sẽ bắt đầu tự động update project về

Đến đây là kết thúc quá trình update đầu tiên.
Và phần hướng dẫn cài đặt của mình cũng kết thúc tại đây!

V. Tổng kết - đánh giá :
- Subversion là hệ thống quản lý phiên bản được sử dụng phổ biến hiện nay.
Những lợi ích mà Subversion mang lại là rất to lớn: giúp thúc đẩy tiến độ xây dựng
và phát triển dự án, phát huy khả năng làm việc theo nhóm, dễ dàng sao lưu và
phục hồi các phiên bản của dự án, đảm bảo an toàn thông tin dữ liệu.
- Subversive hỗ trợ đầy đủ các giao thức và các tính năng cho Subversion.

- Công cụ này sẽ ngày càng được cải tiến để đáp ứng ngày càng tốt hơn nữa
yêu cầu quản lý phiên bản của các dự án phần mềm.

×