Nội dung bài viết
VCS Là Gì
VCS viết tắt của Version Control System là một loại ứng dụng giúp tất cả chúng ta quản lý sự đổi khác trong source code của dự án Bất Động Sản theo thời hạn một cách thuận tiện và thuận tiện .
VCS tàng trữ mọi sự đổi khác trong source code của dự án Bất Động Sản trong một cơ sở tài liệu đặc biệt quan trọng. Chúng ta hoàn toàn có thể dễ ràng truy vấn ra được sự đổi khác của source code trong một file tại một thời gian bất kể. Và nếu cần tất cả chúng ta hoàn toàn có thể thuận tiện đảo ngược source code trong file quay trở lại một thời gian trước đó .
Lưu ý: Hai thuật ngữ VCS (Version Control System) và SCM (Source Code Management) được sử dụng thay thế cho nhau.
Tại Sao Cần Sử Dụng VCS
VCS đặc biệt quan trọng hữu dụng trong những dự án Bất Động Sản lớn yên cầu sự tham gia của nhiều lập trình viên. Ví dụ tại cùng một thời gian, tất cả chúng ta cần tăng trưởng thêm nhiều feature ( tính năng ) mới cho ứng dụng. Và mỗi thành viên trong team được phân công để tăng trưởng một feature. Khi có hai thành viên cùng hoàn thành xong xong hai feature riêng không liên quan gì đến nhau cùng lúc thì khi đó việc merge ( gộp ) code lại hoàn toàn có thể sẽ gây ra conflict ( xung đột ) vì hai người này hoàn toàn có thể sửa đổi cùng một đoạn code trên cùng một file .
Lúc này sử dụng VCS tất cả chúng ta hoàn toàn có thể thuận tiện kiểm tra được sự đổi khác nào đến từ ai và cho feature nào .
VCS Phân Tán và VCS Tập Trung
Dự theo cách phong cách thiết kế thì VCS được chia thành hai kiểu khác nhau đó là VCS tập trung chuyên sâu ( centralized ) và VCS phân tán ( distributed ) .
Với những VCS dạng tập trung chuyên sâu thì source code của dự án Bất Động Sản sẽ được tàng trữ trên một kho tập trụng ( hay kho TT ) trên một sever. Mỗi lập trình viên muốn tạo ra sự biến hóa cho source code tàng trữ trong kho TT trung ( centralized repository ) thì họ cần phải thực thi một việc làm trước đó là update source code trên máy tính của họ với kho tập trung chuyên sâu trước sau đó mới được đổi khác .
Cùng tham khảo ví dụ sau đây để bạn có thể hiểu rõ sự khác biệt giữa hai kiểu VCS tập trung và VCS phân tán.
Trong dự ánh đang có bốn anh A, B, C và D cùng làm và source code dự án Bất Động Sản này được quản trị bởi một ứng dụng VCS tập trung chuyên sâu tên là Subversion ( hay SVN ) .
Vào 08:00:00 ngày ngày hôm nay lập trình viên A lên công ty mở máy tính ra và update code trên máy tính của anh ta để đồng điệu với code tàng trữ trên kho tập trung chuyên sâu. Sau đó anh A khởi đầu code để fix một lỗi mà anh ta tìm thấy ngày trong ngày hôm qua. Anh A code rất nhanh nên chỉ mất 15 phút để sửa lỗi và để sửa lỗi này A đã phải biến hóa nội dung của 50 file khác nhau trong source code .
Và sau đó anh này đấy ( push ) code mới của anh ta lên kho tập trung chuyên sâu. Do chưa có ai đổi khác code trên kho tập trung chuyên sâu nên biến hóa của anh ta được trải qua và code trên kho tập trung chuyên sâu được update .
Vào lúc 08:30:00 ba anh B, C và D lên công ty và mở máy tính để liên tục code 3 feature khác nhau và cũng khá quan trọng của dự án Bất Động Sản .
Lúc 08:50:00 khi anh B tạo một phiên bản mới cho source code của mình và với VCS dạng tập trung thì điều này buộc anh phải update code trên máy của anh ta với kho tập trung trên server trước khi có thể tạo ra version mới. Tuy nhiên khi update code trên kho thì anh này gặp phải lỗi xung đột nội dung do anh ta đã thay đổi 10 file mà anh A đã thay đổi lúc 08:15:00 và đấy lên kho tập trung.
Xem thêm: Nhân CPU, luồng CPU là gì? Nên chọn máy tính có bao nhiêu nhân, luồng? – https://swing.com.vn
Lúc 09:15:00 khi anh C và anh D cũng muốn tạo một phiên bản mới cho source code và cũng gặp phải lỗi tựa như như anh B do đã sửa những file mà anh A cũng đã sửa trước đó .
Như vậy để xử lý xung đột thì từng B, C và D lúc này mỗi người cũng phải xem lại đổi khác source code của mình và của anh A để tránh xoá nhầm code tạo thêm bug mới .
trái lại với VCS dạng phân tán thì mỗi lập trình viên sẽ có riêng một kho ( repository ) của mình và hoàn toàn có thể tự do tăng trưởng khác feature và tạo version mới ( hay đúng hơn là một commit ) mà không cần phải đồng nhất với kho trên server. Điều này sẽ giúp lập trình viên tập trung chuyên sâu vào việc hoàn thành xong feature hay fix bug mà không cần lo về việc phải liên tục update code trên máy tính của họ với code trên server để giảm thiểu xung đột. Việc giải quyết và xử lý xung đột ( nếu có ) sẽ được thực thi một lần duy nhất .
Source: https://swing.com.vn
Category: Wiki