Vòng đời trong SVN



Vòng đời của hệ thống quản lý phiên bản được bàn luận trong chương này. Trong chương sau chúng ta sẽ quan sát lệnh của subversion cho mỗi tiến trình.

Tạo repository trong SVN:

Kho lưu là địa điểm trung tâm mà các lập trình viên giữ tất cả những gì liên quan đến công việc của họ. Kho lưu khong chỉ giữ file mà còn lưu giữ cả lịch sử về các thay đổi. Điều này có nghĩa là nó duy trì một lịch sử của các sự thay đổi được thực hiện trong các file.

Tiến trình create được sử dụng để tạo một repository mới. Hầu hết thời gian tiến trình này được thực hiện chỉ một lần. Khi bạn tạo một repository mới, VCS của bạn sẽ hi vọng bạn nói gì đó để nhận diện nó, như là nơi bạn muốn được tạo hoặc tên mà bạn muốn đặt cho repository.

Tiến trình Checkout trong SVN

Tiến trình checkout được sử dụng để tạo ra một bản sao làm việc từ repository. Bản sao làm việc là khu vực làm việc riêng nơi mà các nhà lập trình thực hiện những thay đổi của họ, và sau đó, đệ trình những thay đổi này tới repository.

Tiến trình Update trong SVN

Như tên gọi đã đề cập, tiến trình update được sử dụng để cập nhật bản sao làm việc. Tiến trình này đồng bộ khu vực làm việc với repository. Khi repository được chia sẻ thì tất cả các thành viên trong team có thể commit những thay đổi của họ và bản sao làm việc trở lên cũ đi.

Bây giờ chúng ta giả sử rằng TomJerry là hai nhà lập trình làm việc trên một dự án. Cả hai kiểm tra phiên bản mới nhất từ repository và bắt đầu làm việc. Tại thời điểm này, bản sao công việc là đồng bộ hoàn toàn với repository. Jerry hoàn thành công việc của anh ta rất hiệu quả và commit những thay đổi anh ta thực hiện tới repository.

Bây giờ khu vực làm việc của Tom chưa được cập nhật. Tiến trình update sẽ kéo những thay đổi mới nhất của Jerry từ repository và sẽ cập nhật khu vực làm việc của Tom.

Thực hiện các thay đổi trong SVN

Sau khi checkout, ai đó có thể thực hiện các tiến trình đa dạng để thực hiện các thay đổi. Chỉnh sửa là tiến trình thông thường nhất. Người nào đó có thể chỉnh sửa: thêm/gỡ bỏ nội dung file đang hiện hữu.

Một ai đó có thể thêm các file/thư mục. Nhưng ngay lập tức những file/thư mục này không không trở thành một phần của repository, trừ khi chúng đã được thêm trong quá trình diễn ra liệt kê thay đổi và trở thành một phần của repository sau tiến trình commit.

Tương tự, một ai đó có thể xóa file/thư mục. Tiến trình delete này ngay lập tức xóa file từ trong khu vực làm việc, nhưng sự xóa bỏ thực sự của file là được thêm vào trong quá trình diễn ra liệt kê thay đổi (pending change-list)và những thay đổi được hoàn thành tới repository sau tiến trình commit.

Tiến trình rename thay đổi tên của file/thư mục. Tiến trình move được sử dụng để di chuyển file/thư mục từ một địa điểm tới địa điểm khác trong cây repository.

Duyệt các thay đổi (review) trong SVN

Khi bạn kiểm tra hoặc cập nhật khu vực làm việc, thì khi đó khu vực làm việc của bạn được hoàn toàn đồng bộ với repository. Nhưng khi bạn thực hiện các thay đổi tới khu vực làm việc, nó trở nên mới hơn repository. Và nó là thói quen tốt để Review - duyệt lại những thay đổi của bạn trước khi thực hiện tiến trình commit.

Tiến trình status trong SVN liệt kê các chỉnh sửa mà đã thực hiện tới khu vực làm việc. Như chúng ta đã đề cập trước đó, bất cứ khi nào bạn gây ra thay đổi trong khu vực làm việc, tất cả những thay đổi đó trở thành một phần của quá trình diễn ra liệt kê thay đổi. Và tiến trình Status được sử dụng để quan sát quá trình diễn ra liệt kê thay đổi này.

Tiến trình status chỉ cung cấp một danh sách các thay đổi nhưng không đưa ra những chi tiết về chúng. Một ai đó có thể sử dụng tiến trình diff để quan sát các chi tiết này của sự chỉnh sửa mà đã được thực hiện tới khu vực làm việc.

Sửa các lỗi trong SVN

Chúng tôi giả sử rằng một ai đó đã gây ra các thay đổi tới khu vực làm việc của anh ta, nhưng bây giờ anh ta muốn dỡ bỏ các thay đổi này. Trong tình huống này, tiến trình revert sẽ giúp làm điều đó.

Tiến trình revert trả lại các chỉnh sửa mà đã thực hiện tới khu vực làm việc. Nó là có thể để trả lại một hoặc nhiều file/thư mục. Nó cũng có thể trả lại toàn bộ khu vực làm việc. Trong trường hợp này, tiến trình revert sẽ phá hủy quá trình diễn ra liệt kê thay đổi và sẽ mang khu vực làm việc trở lại trạng thái ban đầu.

Giải quyết các xung đột trong SVN:

Các xung đột có thể xảy ra tại thời gian của việc sáp nhập. Tiến trình merge tự động thực hiện mọi thứ mà có thể thực hiện theo một cách an toàn. Mọi thứ khác được cân nhắc là sự xung đột. Ví dụ, tệp hello.c được chỉnh sửa trong một nhánh và bị xóa trong nhánh khác. Trong tình huống như vậy cần một người đưa ra quyết định. Tiến trình resolve được sử dụng để giúp người sử dụng tính toán các thứ và để thông báo cho VCS về cách giải quyết các xung đột.

Ký thác các thay đổi (commit) trong SVN

Tiến trình commit được sử dụng để áp dụng các thay đổi từ khu vực làm việc tới repository. Tiến trình này chỉnh sửa repository và các nhà lập trình khác có thể quan sát những thay đổi này bằng cách cập nhật khu vực làm việc.

Trước khi commit, một ai đó phải thêm file/thư mục tới quá trình diễn ra liệt kê thay đổi. Đây là nơi mà những thay đổi chờ để được commit. Với commit, chúng ta thường cung cấp một thông báo log để giải thích tại sao ai đó gây ra các thay đổi. Thông báo log này trở thành một phần của lịch sử của repository. Ký thác là một tiến trình nguyên tử, mà có nghĩa là không thể chia tiến trình này được. Hoặc là nó được thực hiện hoặc không. Bạn không thể thấy một tiến trình commit bỏ dở giữa chừng.

Các bài học SVN phổ biến khác tại VietJack: