25/08/2026
GIT VÀ SVN TRONG PHÁT TRIỂN PHẦN MỀM
Git thì hầu như lập trình viên nào cũng biết, thời còn sinh viên thì ai cũng phải nộp bài lên GitHub cho thầy chấm điểm, đi làm vào cty thì cty nào cũng sử dụng Git để quản lý source code.
Nhưng SVN thì khác, hỏi ra thì ít ai biết, tuy nhiên có 1 ưu điểm rất lớn của SVN trong việc phát triển phần mềm nội bộ, nhất là các cty có hệ sinh thái sản phẩm rộng, cần viết lib phục vụ cho các project. Đó chính là External, 1 tính năng cũng tương tự Sub Module của Git nhưng linh hoạt hơn rất nhiều.
Cũng như các cty khác, chúng tôi cũng sử dụng đa dạng Git repository như GitHub, GitLab và GitLab EE (Enterprise Edition). GitLab EE là source code của GitLab, cho phép người dùng tự deploy lên server/VPS riêng để sử dụng. Lợi ích của nó là có Web Admin rất chuyên nghiệp, dễ dàng thao tác với đầy đủ chức năng từ phân quyền, Access token, CI/CD,... Từng 1 thời cạnh tranh sòng phẳng với BitBucket của Atlassian.
Quay lại chuyện code, một project Computer Vision có thể rất nhiều lib, 3rd lib (C++, CLR) và package (C #), VD như lib đọc camera, lib OCR, curl, crypto, opencv, FFMPEG,... Một project hoàn chỉnh cần ít nhất 20 lib và packages như vậy, thậm chí có thể lên tới 40 lib nếu như đó là giải pháp all-in-one, hoặc là SDK bán cho các doanh nghiệp sử dụng.
Còn chưa kể tới model sử dụng chung trong các project, config file, database gốc,... sử dụng chung giữa các project với nhau. External của SVN có thể trỏ tới folder hoặc từng file đều được.
Lúc này, tính năng External của SVN phát huy tác dụng, các project sử dụng chung 1 lib nào đó như lib đọc camera chẳng hạn, khi update 1 tính năng cho lib camera thì tất cả các project sẽ được cập nhật. Nếu chỉ có 1 vài project thì không sao, nhưng hàng chục project thì ngồi merge cũng là vấn đề. Với external thì chỉ cần update 1 phát là xong.
Và nó cũng là dao 2 lưỡi: khi code lib sai thì các project cũng ảnh hưởng theo. Vì vậy đòi hỏi người viết lib phải có năng lực cao, hiểu các project của cty hoạt động thế nào để đảm bảo rằng mọi thứ trơn tru.