Subversion (SVN) là gì? Khái niệm và cách hoạt động

1598
04-04-2025
Subversion (SVN) là gì? Khái niệm và cách hoạt động

Trong những dự án yêu cầu sự hợp tác chặt chẽ của các bộ phận hay nhóm trong công ty thì cần có một công cụ để quản lý dự án, các doanh nghiệp đã lựa chọn Subversion. Vậy Subversion là gì? Cùng Bizfly Cloud tìm hiểu về công cụ này trong bài sau.

Subversion là gì?

Subversion (SVN) là một phần mềm kiểm soát phiên bản mã nguồn mở. Subversion được ra mắt vào năm 2000 bởi CollabNet, sau đó được cấp phép theo Apache. Người dùng có thể thông qua Subversion xem các phiên bản file trước đó và theo dõi chúng thay đổi theo thời gian. 

Subversion là gì?

Subversion là gì?

SVN hoạt động như thế nào?

Bản chất của Subversion là những câu lệnh, bạn chỉ cần mở Terminal rồi nhập các câu lệnh đó. Để SVN có thể hoạt động, bạn cần thiết lập SVN dựa vào hai yếu tố chính:

  • Máy chủ có tất cả các phiên bản của các tệp nguồn. 
  • Bản sao cục bộ của các tệp trên máy tính cá nhân. 

Tệp trên máy tính được gọi là tệp làm việc, người dùng sẽ thực hiện chỉnh sửa và thay đổi trên máy chủ SVN. SVN sẽ quản lý và ghi lại những sự thay đổi đồng thời tạo ra phiên bản mới. Người dùng sẽ làm việc trên phiên bản mới nhưng hoàn toàn có thể quay trở lại các phiên bản cũ hơn nếu cần. 

Các loại Subversion phổ biến hiện nay

Subversion 1.1 (Tháng Chín 2004)

Bản phát hành 1.1 giới thiệu FSFS, một tuỳ chọn lưu trữ dạng tập tin, trở thành mặc định cho việc tạo kho do dễ triển khai và bảo trì thấp. Bản phát hành này còn cho phép đặt liên kết tượng trưng vào kiểm soát phiên bản, tự động mã hoá URL và hỗ trợ giao diện người dùng địa phương hoá.

Subversion 1.2 (Tháng Năm 2005)

Bản phát hành 1.2 giới thiệu khả năng tạo khoá phía máy chủ cho các tập tin, giúp tuần tự hoá việc chuyển giao tài nguyên cụ thể. Dù Subversion vẫn là hệ thống kiểm soát phiên bản đồng thời, chức năng khoá hỗ trợ việc đánh phiên bản và bảo vệ các tài nguyên nhị phân như hình ảnh. Bản phát hành này cũng tích hợp tự động WebDAV, cho phép kho Subversion được ánh xạ như thư mục mạng. Cuối cùng, Subversion 1.2 sử dụng thuật toán binary-differencing mới để nén và truy xuất phiên bản cũ nhanh hơn.

Subversion 1.3 (Tháng Mười Hai 2005)

Bản phát hành 1.3 mang chức năng kiểm soát uỷ quyền theo đường dẫn vào máy chủ svnserve, đồng nhất với tính năng mà trước đó chỉ có trên máy chủ Apache. Tuy nhiên, máy chủ Apache đã đạt được một vài tính năng ghi nhật ký của riêng nó và API của Subversion kết hợp với các ngôn ngữ khác cũng đã có bước nhảy vọt về phía trước.

Subversion 1.4 (Tháng Chín 2006)

Bản phát hành 1.4 giới thiệu tính năng hoàn toàn mới—svnsync—để sao chép một chiều kho lưu trữ trong mạng. Nhiều phần siêu dữ liệu của bản sao làm việc được cải tiến, không còn sử dụng XML, giúp tăng tốc độ ứng dụng khách. Đồng thời, kho lưu trữ Berkeley DB đã có khả năng tự phục hồi sau sự cố máy chủ.

Subversion 1.5 (Tháng Sáu 2008)

Bản phát hành 1.5 mất nhiều thời gian hoàn thành hơn các phiên bản trước, nhưng tính năng nổi bật là theo dõi phân nhánh và hợp nhất bán tự động, mang lại lợi ích lớn cho người dùng và nâng Subversion lên tầm cao mới so với CVS và các đối thủ thương mại như Perforce và ClearCase. Subversion 1.5 cũng giới thiệu nhiều tính năng hướng tới người dùng, bao gồm giải quyết xung đột tập tin, kiểm xuất rời rạc, quản lý danh sách thay đổi ở phía khách, cú pháp mới cho mục bên ngoài và hỗ trợ xác thực SASL cho máy chủ svnserve.

Subversion 1.6 (Tháng Ba 2009)

Bản phát hành 1.6 tiếp tục cải tiến chức năng phân nhánh và hợp nhất, giới thiệu cây xung đột và nâng cấp nhiều tính năng hiện có, bao gồm nhiều tuỳ chọn giải quyết xung đột tương tác và loại bỏ hỗ trợ cho kiểm xuất rời rạc. Bản phát hành này cũng bổ sung mục bên ngoài dựa trên tập tin và hỗ trợ ghi nhật ký hoạt động cho svnserve tương tự như mod_dav_svn. Ứng dụng khách dòng lệnh Subversion giới thiệu cú pháp phím tắt mới để tham chiếu URL của kho lưu trữ.

Subversion 1.7 (Tháng Mười 2011)

Bản phát hành 1.7 tập trung vào hai sửa chữa lớn cho các thành phần Subversion: WC-NG, một bản viết lại hoàn toàn của thư viện quản lý bản sao làm việc libsvn_wc, và một giao thức HTTP cải tiến cho giao tiếp chủ/khách. Nó cũng bao gồm một số tính năng khác, sửa lỗi và cải thiện hiệu năng.

Subversion 1.8 (Tháng Sáu 2013)

Trong phiên bản 1.8, Subversion cải tiến khả năng theo dõi việc đổi tên tập tin và thư mục, làm cho tuỳ chọn --reintegrate trong lệnh svn merge không còn cần thiết. Nó cũng cho phép kế thừa các giá trị thuộc tính từ thư mục cha, giúp tự động thiết lập thuộc tính và mẫu tập tin có thể bỏ qua, mang lại sự nhất quán cho người dùng mà trước đây cần quản lý thủ công. Thêm vào đó, có lệnh dòng lệnh mới cho công cụ hợp nhất tập tin để giải quyết xung đột. Như thường lệ, Subversion 1.8 cũng bao gồm nhiều tính năng bổ sung, sửa lỗi và cải tiến hiệu năng.

Lợi ích khi sử dụng SVN

Subversion là lựa chọn hoàn hảo cho các đội ngũ phát triển phần mềm nhờ những lợi ích mà chúng mang lại:

Lợi ích khi sử dụng SVN

Lợi ích khi sử dụng SVN

  • Các thành viên trong nhóm có thể thoải mái chỉnh sửa file một cách an toàn, đơn giản, nhanh chóng. 
  • Là phần mềm thay thế cho hệ thống quản lý CVS có nhiều nhược điểm.
  • Được coi là hệ thống quản lý source code tập trung, mạnh mẽ, linh hoạt, quản lý được bất kỳ hệ thống phiên bản nào. 
  • Có vai trò như một file server, quản lý thư mục và tập tin theo thời gian, máy khách có thể tải file một cách bình thường. 
  • Có khả năng lưu lại tất cả nhưng thay đổi trên file như ai thay đổi, thời gian thay đổi, thay đổi những gì,...
  • Khôi phục lại các phiên bản cũ nhanh chóng, chính xác.
  • Cả máy chủ và máy khách có thể chạy trên cùng SVN, có trách nhiệm ghi lại lịch sử. 
  • Hỗ trợ giao thức kết nối máy chủ và máy khách tuy nhiên còn tùy thuộc vào cấu hình. 

Một số hạn chế còn tồn tại

Bên cạnh những lợi ích mà SVN mang lại thì việc kiểm soát phiên bản với SVN vẫn còn tồn tại một số hạn chế cần lưu ý như sau:

  • SVN có mô hình phân nhánh phức tạp, một người có thể làm việc trên nhiều phiên bản của mình cùng một lúc, gây ra xung đột, SVN không thể làm việc khi có xung đột.
  • Người dùng phải kết nối với repo trung tâm, sử dụng subversion nhưng không kết nối với repo trung tâm là điều vô nghĩa.
  • Khi mọi thứ trở nên phức tạp, có nhiều người làm việc trên cùng một phiên bản và cần đồng nhất thì người dùng sẽ cần giải quyết xung đột thủ công, gây lãng phí thời gian. 

Những lệnh cơ bản khi sử dụng SVN

Để làm việc hiệu quả với Subversion, bạn cần nắm vững một số lệnh cơ bản như:

  • Lệnh tạo thư mục mkdir: Lệnh này sử dụng để tạo thư mục trong repository của bạn.
  • Lệnh xóa thư mục delete (del, remove, rm): Xóa thư mục.
  • Lệnh List (ls): Liệt kê danh sách các thư mục và file bên trong thư mục đang được list.
  • Lệnh checkout (co): Lấy phiên bản mã nguồn mới nhất từ thư mục dự án trên repository về thư mục trên máy trạm.
  • Lệnh update: Cập nhật bản sao làm việc của bạn với phiên bản mới nhất từ repository.
  • Lệnh commit: Đưa thay đổi của bạn lên repository.
  • Lệnh status: Xem lại những thay đổi trong bản sao làm việc của bạn.
  • Lệnh diff: Hiển thị sự khác biệt giữa các phiên bản của một tập tin.
  • Lệnh add: Thêm tập tin hoặc thư mục vào repository.
  • Lệnh copy: Tạo bản sao của một tập tin hoặc thư mục.
  • Lệnh move: Di chuyển hoặc đổi tên một tập tin hoặc thư mục.
  • Lệnh revert: Phục hồi một tập tin hoặc thư mục về trạng thái trước đó.

Cách kiểm tra phiên bản mới nhất

Để kiểm tra phiên bản máy chủ SVN, bạn có thể thực hiện như sau:

  • Bước 1: Khi truy cập máy chủ thông qua trình duyệt, hãy chuyển sang kho lưu trữ máy chủ SVN và tìm kiếm phiên bản trong mã nguồn HTML.
  • Bước 2: Khi kiểm tra phiên bản máy chủ bằng cách sử dụng máy khách SVN, hãy chạy svn --versiontrong terminal.

Kết luận

Với khả năng theo dõi lịch sử thay đổi, hỗ trợ làm việc nhóm và bảo vệ mã nguồn, SVN đã chứng minh được giá trị của mình trong nhiều dự án lớn và nhỏ. Tuy nhiên, người dùng cũng cần nhận thức rõ những hạn chế của hệ thống, bao gồm sự phụ thuộc vào kết nối mạng và khó khăn trong việc xử lý xung đột.

SHARE