Tổng quan về Version control

Sự khác biệt lớn nhất giữa 1 sinh viên học làm phần mềm và 1 kĩ sư phần mềm là gì? Theo mình thì tính hiệu quả trong công việc chính là sự khác biệt lớn nhất. Ngoài những lý do về trình độ, kinh nghiệm thì một trong những lý do khiến các đàn anh luôn hiệu quả hơn nằm ở việc họ biết sử dụng các tools, công cụ một cách hợp lý. Version control chính là một trong những công cụ đó.

Một số từ cần hiểu

Repository: Đây là thuật ngữ dùng để chỉ 1 project được quản lý bởi version control.
Branch: Đây là thuật ngữ dùng để chỉ 1 version được bạn tạo ra.
Commit: khi bạn code xong một module nhỏ, bạn có thể commit code để version control tạo ra 1 mốc theo dõi (bạn sẽ có nhiều commit, commit giống như những version rất nhỏ trong project của bạn, bạn có thể quay lại các commit trước đó nếu muốn).

Version control là gì?

Version control được hiểu như 1 công cụ giúp bạn theo dõi sự thay đổi của toàn bộ cấu trúc chương trình, từ các file code cho đến các file hình ảnh, video. Với version control, bạn có thể tạo ra nhiều phiên bản của các file ứng với từng thay đổi mà bạn tạo ra.
alt text
Giả sử mình sử dụng version control để quản lý code cho dự án làm 1 website như ở hình trên, version control sẽ cho phép mình theo dõi sự thay đổi của các file theo thời gian, tạo ra các phiên bản khác nhau của dự án ứng với từng thay đổi.

Tại sao cần sử dụng Version control?

alt text
Ngoài lý do: “Thầy bắt buộc dùng version control khi làm đồ án” còn có rất nhiều lý do để bạn phải yêu thích version control.
Giả sử trường hợp bạn cần làm dự án theo team 3, 4 thành viên. Như vậy mỗi thành viên sẽ code một số module nhỏ, cuối cùng sẽ phải đến ngày gộp code. Có 2 trường hợp xảy ra, hoặc là team bạn phải ra quán coffee gộp code (như mình từng làm khi mới học code) hoặc team bạn sử dụng version control. Với công cụ này, mỗi thành viên team bạn có thể tạo ra 1 phiên bản riêng cho mình (branch) và làm việc độc lập trên đó, khi cần gộp code, bạn chỉ việc gộp 2 branch lại với nhau, mọi thứ đều được version control đánh dấu thời gian rõ ràng, công việc sẽ trở nên dễ dàng hơn rất nhiều.
alt text
Bạn cũng có thể tạo ra nhiều phiên bản production như hình trên, giả sử bạn cần làm 1 dự án phục vụ cho 10 đối tượng công ty, mỗi công ty cần những chỉnh sửa riêng, thay vì phải tạo ra 10 folder code chứa code riêng cho từng công ty, bạn có thể sử dụng version control, mọi thứ sẽ được lưu trữ trong 1 folder duy nhất, chuyển đổi giữa các version dễ dàng.
Ngoài, verson control còn giúp bạn theo dõi, phân tích tiến độ dự án, mức độ đóng góp của mỗi cá nhân vào dự án, cá nhân gây lỗi chương trình (bắt nó fix)…

Các loại version control

alt text
Có thể chia version control thành 2 loại chính: centralized version control system và distributed version control system.

The centralized version control system

alt text
Ở kiểu version control này, tất cả các folder, file của dự án sẽ nằm tập trung tại 1 server lớn duy nhất (Central Repository), tất cả các thành viên tham gia dự án có thể lấy code về (clone), chỉnh sửa code, sau đó commit trở lại central repository. Như vậy, tất cả các chức năng của 1 version control (theo dõi file, gộp code…) đều nằm ở central server, các thành viên tham gia chỉ đơn giản là sử dụng 1 chương trình client kết nối với central server thông qua network.

The distributed version control system

alt text
Trái ngược với kiểu version control phía trên, với distributed version control system, mỗi thành viên tham gia dự án sẽ có 1 local repository tại máy cá nhân của mình, mỗi người đều có thể tạo ra các branch, commit code, gộp code tại máy riêng của mình mà không ảnh hưởng gì đến central repository, không cần đến network. Sau đó, các thành viên có thể gộp local repository và central repository lại thành một thông qua phương thức push (với git).

Git

Git là 1 đại diện nổi bật của distributed version control system, bạn không nên nhầm lẫn giữa Git và Github. Trong khi Git là 1 version control rất phổ biến thì Github chỉ đơn thuần là 1 công ty cho phép bạn lưu trữ các Git repository mà thôi.
alt text

SVN

SVN là viết tắt của từ Subversion, đây là 1 version control cũng rất nổi tiếng, từng có giai đoạn bá chủ thế giới version control (gần đây Git đã chiếm thế thượng phong). SVN thuộc loại centralized version control system.
alt text

Tạm kết

Ở phạm vi bài viết này, mình chỉ giới thiệu các nội dung cơ bản nhất liên quan đến version control, mình vẫn chưa đề cập đến cách hoạt động cũng như cách sử dụng chúng. Mình hy vọng đem đến cho các bạn 1 góc nhìn tổng quan nhất về chủ đề này. Nếu được các bạn ủng hộ mình sẽ viết 1 bài chi tiết về cách sử dụng Git và SVN. Để lại góp ý để giúp mình cải thiện hơn nhé.

Đọc thêm nhiều bài viết tại: https://thedarkknighttech.com/

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Võ Cao Sơn

19 bài viết.
61 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
34 1
Ngày nay, thời đại của thông tin, của mạng xã hội, chúng ta có xu hướng bị đắm chìm trong những thông tin vô bổ, kém hữu ích. Video game show, thôn...
Võ Cao Sơn viết hơn 1 năm trước
34 1
White
33 8
Ở bài trước, mình đã nói về cách duy nhất giúp bạn trở thành một developer giỏi hơn. Nếu bạn chưa đọc thì có thể đọc tại (Link), tuy nhiên mình có ...
Võ Cao Sơn viết 11 tháng trước
33 8
White
30 7
Gần đây mình thấy rất nhiều bài viết câu like dạng như: “Chấm để tham gia khóa học lập trình A, B, C miễn phí”, ngạc nhiên là những bài như vậy đượ...
Võ Cao Sơn viết hơn 1 năm trước
30 7
Bài viết liên quan
White
4 3
Xin chào mọi người, bài viết hôm nay sẽ liên quan đến một công cụ quản lý source code vô cùng quen thuộc đối với developer hiện nay đó chính là Git...
Julian Dong viết 6 tháng trước
4 3
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
19 bài viết.
61 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!