Mục lục

Hệ thống Quản lí phiên bản (Version Control System)

Để quản lý kho code của mình, NukeViet 3.4 trở về trước (từ phiên bản NukeViet 2.0 cho tới phiên bản NukeViet 3.4) sử dụng hệ thống quản lý phiên bản (Version Control System, viết tắt là VCS) Subversion (SVN) lưu trữ trên kho Google code. Từ phiên bản NukeViet 3.5, NukeViet chuyển sang sử dụng Git (lưu trữ trên kho Github).

VCS là gì?

Hệ thống quản lý phiên bản (Version control system - VCS) là một dạng phần mềm Quản lý mã nguồn (Source Code Management- SCM)

Vì sao phải sử dụng VCS?

VCS 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 cùng trên một dự án (project), việc nhiều người cùng chỉnh sửa nội dung của một tệp tin là điều không thể tránh khỏi. Việc chỉnh sửa như vậy sẽ tạo ra các phiên bản (Versions/Revisions) khác nhau và phát sinh nhu cầu quản lý chúng. VCS ra đời để 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.

Chức năng của các VCS

Các Hệ thống Quản lí phiên bản cung cấp đồng thời ba chức năng quan trọng nhất:

Các khái niệm thường sử dụng trong các VCS

Đơn vị cơ bản của các VCS: Commit

Thao tác sửa đổi nội dung: patch và diff

Xung đột (conflict) giữa các commit

Một số thuật ngữ khác

Các thuật ngữ này cũng sẽ được bắt gặp khi thao tác thực tế. Mỗi hệ thống quản lí phiên bản khác nhau có thể sử dụng các thuật ngữ khác nhau. Việc hiểu các thuật ngữ trên đòi hỏi một quá trình thực hành trên hệ thống cụ thể.

Hai dạng Hệ thống Quản lí phiên bản chính

Dạng tập trung

Dạng tập trung (Centralized Version/Revision Control) là dạng quản lý cũ, được sử dụng nhiều cách đây vài năm. Ví dụ điển hình cho dạng này là Concurrent Versions System (CVS) và Subversion (SVN). Đặc điểm của dạng này là hệ thống làm việc theo mô hình client – server trong đó server (kho mã nguồn) đặt một nơi và cho phép các client kết nối đến nó.

Dạng phi tập trung

Dạng phi tập trung (Decentralized/Distributed Version/Revision Control) là mô hình quản lý mới ra đời và phổ biến trong vài năm gần đây. Trong mô hình của các hệ thống này, mỗi người sử dụng có bản sao của toàn bộ kho mã nguồn (repository), bao gồm cả tập hợp các file và lịch sử sửa đổi. Trong các hệ phi tập trung các kho mã nguồn đồng bộ với nhau bằng cách trao đổi các commit dưới dạng các patch. Hai hệ thống quản lí phiên bản phân tán phổ biến nhất hiện nay là Git và Mercurial. Sự khác biệt quan trọng so với các hệ tập trung là:

Chiến lược cho việc sửa đổi: Thay đổi theo từng bước lớn hay nhỏ? (Big steps/small steps?)

Nhiều người nghĩ rằng nên “để dành” các thay đổi đến khi “đáng kể” rồi mới commit một lượt. Trên thực tế, chiến lược này không tiết kiệm thời gian như họ tưởng.

Tóm lại, chiến lược big steps chỉ có thể gắn với các VCS tập trung vốn thống trị trong quá khứ chủ yếu do hạ tầng máy tính và mạng còn hạn chế.

Lựa chọn hệ thống quản lí phiên bản

Có nhiều hệ thống quản lí phiên bản và chúng rất khác nhau từ quan điểm thiết kế đến cách thức vận hành. Chúng ta phải có lựa chọn khi bắt đầu dự án mới, hoặc khi rà soát lại hệ thống đang sử dụng và quyết định xem có nên chuyển đổi hay không. Việc lựa chọn trước hết cần dựa trên việc trả lời câu hỏi: Thế nào là một hệ thống quản lí phiên bản tốt?

Hệ thống quản lí phiên bản tốt

Với đặc điểm thường xuyên làm việc với khối lượng mã nguồn khổng lồ, yêu cầu về đồng bộ hoá cao, cộng đồng phần mềm Tự do nguồn mở luôn đi đầu về Hệ thống quản lí phiên bản. Các đại diện ưu tú của phần mềm Tự do nguồn mở trong lĩnh vực này là git và mecurial.

Lựa chọn của NukeViet

Nguồn tham khảo