Tải bản đầy đủ (.docx) (49 trang)

Hệ thống quản lý phiên bản theo mô hình phân tán pptx

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, 49 trang )

Hệ Thống Quản Lý Phiên Bản Theo Mô Hình Phân Tán
(Distributed Version Control System)
GVHD :NGUYỄN MINH ĐỨC
SINH VIÊN :
NGUYỄN NGỌC LAN ĐÀI
TRẦN TIẾN LONG
NGUYỄN ĐỨC ANH
 Tổng quan về hệ thống quản lý phiên bản
a.Tại sảo phải có các hệ thống quản lý phiên bản (Version control
system)
Trong công nghệ phần mềm các lập trình viên ,nhóm làm việc với nhiều dự án
,mỗi dự án lại có nhiều phiên bản khác nhau , trong mỗi phiên bản việc liên tục chỉnh sửa
mã nguồn là điều không chánh khỏi .Khi các dự án và các phiên bản đã làm việc có số
lượng lớn thì việc quản lý các phiên bản phải liên tục sử đổi và dự án trở nên phức tạp
VD: Mỗi khi cần lấy lại một số mã nguồn cũ để phát triển thêm lập trình viện lại
phải nhớ vị trí nơi lưu trữ bản sao , hoặc khi cần một đoạn mã nguồn trước đó hiện tại
đã bị chỉnh sửa thì lập trình viên lại phải viết lại , việc chia sẻ,phân chia mã nguồn giữa
các thành viên mất thời gian …
Chính vì vậy cần phải có một hệ thống quản lý phiên bản (VCS - version control
system),
- Nó lưu giữ các phiên bản của mã nguồn của sản phẩm phần mềm một cách ngăn
nắp,trình tự bên trong một thư mục được gọi là Repository
 Theo dõi ,sao lưu,đồng bộ hóa các thay đổi ,giúp các lập trình viên có thể dễ dàng lấy
lại phiên bản mong muốn
 Cho phép nhiều developer cộng tác với nhau để cùng phát triển dự án
http://vi. wikipedia.org/wiki/h ệ_ thống _ quản _ lý _ phiên _ bản )
b. Một số khái niệm sử dụng trong các hệ thống quản lý phiên bản
 
- Repository:Thư mục lưu trữ tất cả các phiên bản của tất cả các file và những thay đổi
của chúng ,nó có thể là nơi chứa các file mã nguồn , hỉnh ảnh ,âm thanh …
(Repository của Egit – một plug in của Eclipse)


- Phiên bản: Mỗi tập tin có thể có nhiều phiên bản (version). Các phiên bản được đánh số
khác nhau. Mỗi lần chúng ta hiệu chỉnh nội dung tập tin và cập nhật vào nơi chứa của VCS,
phiên bản sẽ được cập nhật.
Một số VCS sử dụng hệ thống phiên bản 1, 2, 3, trong khi có một số khác sử dụng hệ thống
1.0, 1.1, 1.2, Các VCS thường lưu phiên bản cuối cùng và các thay đổi của các phiên bản
trước so với phiên bản cuối đó.
Các số phiên bản (như 1.0, 1.1, hay 1.2, ) còn được gọi là revision.
Đi đôi với số phiên bản, VCS lưu thêm các thông tin về ngày giờ cập nhật, người cập nhật và
một số ghi chú nếu có.
Một vấn đề nhỏ trong cách đánh số này là làm sao các thành viên trong nhóm biết được các
phiên bản của dự án. Số phiên bản trong dự án sẽ thay đổi khi phiên bản của tập tin thay đổi. Các
VCS do đó sử dụng thêm một cách ghi nhận phiên bản là đánh nhãn (labeling, tag). Khi đó, cho
dù số phiên bản của dự án thay đổi, nhãn của dự án vẫn không đổi.
- Branch (phân nhánh) : Khi làm việc nhóm, mọi thành viên đều có một phần mã chung, gọi là
nhánh chính (mainline). Và các thành viên đều làm việc với một phần của nhánh chính. Khi có
yêu cầu tách một phần mã chung đó, ví dụ như để tạo một phiên bản để thử nghiệm, các thành
viên của nhóm phân phối thử nghiệm đó cần mã độc lập với nhánh chính. Giải pháp là dùng
phân nhánh.
Chia nhánh (branching) là một cơ chế của hệ thống quản lý phiên bản cho phép tách một phần
của dự án ra riêng. Phần này sẽ hoạt động độc lập với dự án chung. Khi đó, việc đánh phiên bản
cũng thay đổi.
Ví dụ: nếu một tập tin A trong nhánh chính có số phiên bản là 1.14 và một nhánh mới được tạo
ra, A sẽ có số phiên bản trong nhánh là 1.14.1.1. Việc hiệu chỉnh tập tin đó trong nhánh chính sẽ
cho chỉ số phiên bản mới trong nhánh chính là 1.15 tuy nhiên nếu hiệu chỉnh tập tin đó trong
nhánh thì nó có số phiên bản mới là 1.14.1.2
- Check out: Download một hoặc nhiều file từ Repository về thư Repository client ở máy
mình.Quá trình này bắt đầu đưa một phiên bản của project từ trên Server để làm việc
Vi dụ về quá trình Check out sử sụng Subversion một hệ thống quản lý phiên bản
- Commit: Lưu những sửa đổi của phiên bản trong Repository

Hình ảnh minh họa quá trình commit
- Merge (Gộp): Nhóm nội dung của 2 file lại với nhau thay ,trong một số trường hợp cần
thiết thay vì tạo thêm một phiên bản mới có nội dung của 2 file .Khi gộp 2 file lại với nhau vì
mỗi phiên bản có những dòng code không giống nhau vì thế có thể xảy ra xung đột như hình :

 Push: Việc đưa tất cả các commit lên Repository ở Server .Phương thức này chỉ sử
dụng cho mô hình phân phối (DVCS)
 Pull: Cập nhật những thay đổi của Repository ở Server .Phương thức này chỉ sử dụng
cho mô hình phân phối (DVCS).
c. Các loại mô hình của hệ thống quản lý phiên bản.
 Mô hình tập trung: Centralized version control system (CVCs) :các hệ thống sử dụng
mô hình này đang được sử dụng chủ yếu như CVS , Subversion (SVN)…
(Hình ảnh được lấy trong ebook: Pro Git – Scott chacon)
Mô hình tập trung sử dụng kiến trúc Client - Server trong đó
server chứa tất cả các files phiên bản ,hiện tại của dự án và lịch sử các thay đổi chỉnh
sửa trên các file đó ,
các client kết nối tới server để lầy về một phiên bản copy đầy đủ dự án(check out) ,
hoặc cập nhật những thay đổi mới nhất từ dự án (update) ,làm việc trên phiên bản đó và sau
đó lưu lại những thay đổi của họ (commit).
Client và server có thể 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 CVS có nhiệm vụ theo vế 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ộ.
Phần mềm server thường chạy trên Unix trong khi CVS client có thể chạy trên nhiều hệ
điều hành khác nhau
(trích từ : />Kiến trúc client – server là đặc trưng của VCS , cả 2 hệ thống tập trung và phân bố đều
sử dụng kiến trúc này .
 Mô hình phân tán : Distributed version control system (DVCs) Các hệ thống sử dụng
mô hình này hiện nay là Git, Mercurial, Bazaar,Darcs
Mỗi thành viên sẽ có một repository ở local và tất cả các thao tác như commit, add…

đều làm việc trực tiếp với nó giống như bản nó vừa là client vừa là một server.Các thành viên
trong local có thể share trực tiếp với giao thông qua share SSH.Và nó cũng cũng hoạt động
được với kiến trúc client – server như trong CVCs
 Ứng dụng của DVCs
Một số ứng dụng của DVCs
/>Google code đã sử dụng 2 hệ thống quản lý để người dùng lựa chọn là Subversion
của hệ thống tập trung và Mercurial của hệ thống phân tán
Git cũng là một DVCs và hiện tại Git được rất nhiều các cộng đồng lập trình viên thế
giới sử dụng.
(Đây cũng là một mạng xã hội lập cho trình viên sử dụng Git
để quản lý các project)
Các Repository của Linux Kernel
 !" !#$" %%&

''%%$" %%&
()%ột Repo đầu tiên tên là “'%%” có các thông tin về URL để làm việc
với Repo trên server nhà nhật kí các commit
/>Đây là bản đồ thống kế các công cụ được sử dụng để quản lý mã nguồn các project
trên trang ohloh.net .Cho thấy các hệ thống quản lý phân tán (Git + mercurial +
Bazaar ) mặc dù ra sau nhưng đang ngày càng được quan tâm và sử dụng, đặc biệt
là Git
Ảnh chụp số người tham gia github.com (một mạng xã hội cho lập trình viên sử dụng
Git để quản lý mã nguồn) và các Repository được sử dụng vào khoảng cuối tháng
10/2010 (ảnh trên trang : . Git cũng được rất nhiều cộng
đồng lập trình viên trên toàn thế giới sử dụng như Twitter,facebook,yahoo,….
Ảnh chụp số người tham gia github và số lượng các Repository được sử cho thấy
hiện tại số lượng người sử dụng dịch vụ sử dụng Git tăng rất nhanh.
Việt Nam:

/> />Chỉ với một từ khóa tiếng việt có thể tìm kiếm rất nhiều các lập trình viên Việt Nam
của các công ty phần mềm hiện đang sử dụng github để quản lý mã nguồn
Một số Git hosting (Nơi lưu trữ source code hỗ trợ quản lý bằng Git)

* Kết quả nghiên cứu của một số nhóm trước đó
Các nghiên cứu của một số nhóm trước đó đã giới thiệu về hệ thống phân bố qua
qua việc tìm hiểu về Git một VCS sử dụng hệ thống phân bố và Github (mạng xã
hội cho lập trình viên) nhưng hầu hết chỉ ở mức ngắn gọn chưa khái quát hết .Có
thể xem bài viết được đánh giá cao tại


+ Nội dung thực hiện
 Mô hình của DVCS:
(ebook Pro Git – Scott Chacon –, -"".,/0)
DVCS cũng là một server ,có một Repository để mọi người gửi những
thay đổi lên, mỗi client có một Repo nằm ở máy họ ,vì vậy họ chỉ cần kết nối
đến Repository trung tâm khi cảm thấy thích chia sẻ những thay đổi.Và các
hoạt động như commit , update xảy ra ở Repository nằm ở trên máy , chúng
được đồng bộ với Repository trung tâm thông qua push/pull.Nhưng trong
mô hình phân phối bất cứ ai cũng có thể là một máy chủ nên có thể Push/pull
với nhau.

- Một số Workflow Của hệ thống phân tán
(Theo ebook: Pro Git – Scoot chacon)
 Centralized Workflow:
Trong hệ thống tập trung ,có chung một mô hình hợp tác duy nhất
Centralized Workflow “Share repository” là một Repo trung tâm mà mọi người có thể
gửi các thay đổi và cập nhật, đồng bộ hóa .Những developer là những node của Repo
trung tâm đó.Khi 2 developer cùng gửi (Push) những thay đổi lên một Repo , thì người
gửi lên sau phải cập nhật (Pull) những thay đổi mà người trước đó đã gửi lên và giải

quyết các xung đột mã sau đó mới gửi lên được
 Integration-Manager Workflow:
Vì DVCs cho phép có nhiều Repository trung tâm,nên nó có thể có một
Workflow mà mỗi developer truy cập và gửi những thay đổi lên Repo public và đọc từ
những Repo khác .Kịch bản này thường bao gồm một Repo chuẩn đại diện cho dự án .Để
một developer đóng góp vào dự án thì developer tạo cho riêng mình một bản sao dự ánvà
đưa (push) những thay đổi lên.Sau đó có thể gửi những yêu cầu cập nhật những thay đổi
đó vào dự án chính và nếu được dự án chính sẽ cập nhật (pull) những thay đổi đó.Và
người kiểm soát dự án chính có thể test những thay đổi và gộp (merge) những thay đổi
đó ở trong nhánh làm việc của họ ở máy của họ và push trở lại Repo chính.
(Ebook: “Pro git”,tác giả : scott chacon,NXB:APPRES )
Kịch bản:

×