Chức năng của VCSCVS Concurrent Versioning System CVS Concurrent Versioning System Ghi lại lịch sử: ghi lại các thông tin cần thiết của từng sửa đổi một, như tác giả, thời gian, các gh
Trang 2Concurrent Version System
CVS
Concurrent Version System
Phạm Tấn Đạt - 51003033
Vũ Văn Hiền - 51003049
Phạm Văn Tiến - 51003192
Trần Minh Tân - 51003161
Lê Hoàng Minh Tâm - 51003157
CVS Concurrent Versioning System
CVS Concurrent Versioning System
Giảng viên: ThS Phạm Ngọc Nam
Trang 3VCS – Version Control Systems
CVS – Concurrent Version System
vs
CVS Concurrent Versioning System
CVS Concurrent Versioning System
Trang 4Tại sao phải sử dụng VCS?
CVS Concurrent Versioning System
CVS Concurrent Versioning System
Trang 5Chức năng của VCS
CVS Concurrent Versioning System
CVS Concurrent Versioning System
Ghi lại lịch sử: ghi lại các thông tin cần thiết của từng sửa đổi một, như tác giả, thời gian, các ghi chú giải
trình thao tác thay đổi đó…
Chức năng đồng bộ: cho phép nhiều người cùng sửa một hoặc nhiều tệp tin cùng lúc vì các thao tác sửa
đổi gây xung đột có thể được phát hiện và giải quyết sau đó
Chức năng phục hồi: cho phép khôi phục trạng thái trước khi phát hiện ra có lỗi trong một thao tác sửa
đổi đã làm
Trang 6Một số khái niệm cơ bản
Repository
Là một nơi chung chứa mọi bản chính (master copy) của các tập tin khi chúng được thêm
vào trong cơ sở dữ liệu của một VCS.
Có thể được lưu trữ riêng cho từng tập tin hoặc chung cho mọi tập tin.
Trong môi trường phát triển nhóm, thường nằm trên một server riêng.
Có thể chứa: mã nguồn, sưu liệu, các tài liệu khác (hình ảnh, âm thanh, )
CVS Concurrent Versioning System
CVS Concurrent Versioning System
Trang 7working folder
Nơi mà chúng ta lấy phiên bản của tập tin (checking-out) và hiệu chỉnh (revision).
Thường được đặt trên máy client cho từng thành viên trong khi làm việc nhóm.
Khi các phiên bản được lấy ra, đây sẽ là nơi mặc định mà một VCS sẽ dùng để chứa các
bản sao phiên bản đó.
CVS Concurrent Versioning System
CVS Concurrent Versioning System
Một số khái niệm cơ bản
Trang 8lock (khóa)
Khóa nghiêm ngặt (strict locking):
• khi một tập tin được lấy ra để hiệu chỉnh, nó sẽ bị đặt thuộc tính là read-only
• thành viên khác có thể đọc nhưng không thể hiệu chỉnh nội dung của nó
Khóa tự do (optimistic locking)
khi một tập tin được lấy ra để sửa, các thành viên khác cũng có quyền cập nhật dữ liệu trong tập tin đó
??? Vấn đề cập nhật sẽ được tiến hành như thế nào?
CVS Concurrent Versioning System
CVS Concurrent Versioning System
Một số khái niệm cơ bản
Trang 9 Là thao tác ra lệnh cho VCS ghi lại những thay đổi (change-sets) mà tác giả vừa thực hiện với (các) file
mà VCS đang theo dõi
Người sử dụng phải nhập các ghi chú (comment) lí giải cho các commit của mình (commit message)
Khi cần xem lại các commit trước đó, người ta tìm đến lịch sử commit (commit history)
CVS Concurrent Versioning System
CVS Concurrent Versioning System
Một số khái niệm cơ bản
Trang 10Patch và diff
Thao tác “diff” sẽ tự động phân tích hai phiên bản khác nhau của một file để chỉ ra phần khác nhau (diff) Phần khác nhau này có thể được xuất ra thành một file gọi là “patch” chứa thông tin về thay đổi theo quy chuẩn
Cần lưu ý là patch với nghĩa là “bản vá” chỉ là một ứng dụng cụ thể của patch Thao tác applying patch nói chung là “từ file trước sửa đổi và bản patch tổng hợp thành file sau sửa đổi”
Các thao tác diff và patch có thể thực hiện trực tiếp thông qua các lệnh cùng tên trên các hệ thống GNU/Linux hoặc gián tiếp nhờ sự giúp đỡ của các VCS
CVS Concurrent Versioning System
CVS Concurrent Versioning System
Một số khái niệm cơ bản
Trang 11 Xung đột (conflict) giữa các commit xảy ra khi có hai (hay nhiều hơn) commit độc lập với nhau xuất phát từ cùng một commit cũ trước đó
Xung đột thường xảy ra khi có một trong các commit mới đó chứa thao tác xoá bỏ Trường hợp các commit đều là thao tác thêm sẽ dễ dàng được các RCS tự động xử lí (resolve)
Khi xung đột xảy ra, lập trình viên phải cho VCS biết kết quả cuối cùng mà mình mong muốn
CVS Concurrent Versioning System
CVS Concurrent Versioning System
Một số khái niệm cơ bản
Trang 12project, module, file
Project: một thư mục chứa toàn bộ thông tin của các tập tin của nhóm Một nhóm có thể thực hiện nhiều project khác nhau Các project này có thể chia sẻ các tập tin (shared file) Mỗi VCS thường có một project gốc cho mọi project
Tập tin (file) trong dự án có thể thuộc về một hoặc nhiều dự án (shared file)
Module: một dự án con (sub-project) nằm trong một dự án mẹ
CVS Concurrent Versioning System
CVS Concurrent Versioning System
Một số khái niệm cơ bản
Trang 13Branch & branching
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/trunk/master branch) 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
CVS Concurrent Versioning System
CVS Concurrent Versioning System
Một số khái niệm cơ bản
Trang 14Branch & branching
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.
CVS Concurrent Versioning System
CVS Concurrent Versioning System
Một số khái niệm cơ bản
1.2.1.1 1.2.1.2 1.2.1.3
1.2.1.1
1.4
1.4.1.1
1.2.1.2
merge
main trunk
branch branch
1.2.1.1.1.1 1.2.1.1.1.2
Trang 15• Có nhiều nhánh (branch) có thể được tách ra làm việc độc lập Nếu họ trong khi làm thấy
rằng có một số lỗi (bug) phát sinh và có ảnh hưởng tới nhánh chính họ sẽ làm sao để cập nhật nhanh nhất mã trong nhánh chính và dùng cách ghép tập tin (merge).
• Ghép tập tin sẽ cho phép loại bỏ được việc phải cắt dán nhiều lần trên các phiên bản
khác nhau của hệ thống.
CVS Concurrent Versioning System
CVS Concurrent Versioning System
Một số khái niệm cơ bản
Trang 16Version & Revision
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ộ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 phiên bản cuối
so với phiên bản trước đó.
Các số phiên bản (như 1.0, 1.1, hay 1.2, ) còn được gọi là Revision.
CVS Concurrent Versioning System
CVS Concurrent Versioning System
Một số khái niệm cơ bản
Trang 17to be continue…