Professional Documents
Culture Documents
Hệ Thống Quản Lý Phiên Bản Subversion
Hệ Thống Quản Lý Phiên Bản Subversion
Hệ Thống Quản Lý Phiên Bản Subversion
Dưới đây là so sánh giữa SVN và công cụ quản lý phiên bản Git
1. SVN (Subversion):
Kiểu quản lý phiên bản: SVN sử dụng kiểu quản lý phiên bản tập
trung (centralized version control). Mọi phiên bản được lưu trữ tại
máy chủ trung tâm và các nhà phát triển cần phải kết nối đến máy
chủ để thực hiện các thao tác quản lý phiên bản.
Phân nhánh và gộp nhánh: SVN hỗ trợ phân nhánh và gộp nhánh,
nhưng quá trình này thường tương đối tốn kém và phức tạp hơn so
với Git và Mercurial.
Xử lý xung đột: SVN cũng hỗ trợ xử lý xung đột nhưng trong mô
hình tập trung, việc giải quyết xung đột có thể phức tạp hơn so với
mô hình phân tán của Git.
Sử dụng: SVN thường được sử dụng trong các dự án phát triển
phần mềm truyền thống, nơi các nhóm làm việc tập trung tại một
địa điểm.
2. Git:
Kiểu quản lý phiên bản: Git sử dụng kiểu quản lý phiên bản phân
tán (distributed version control). Mỗi bản sao của mã nguồn đều
chứa toàn bộ lịch sử phiên bản và có thể làm việc độc lập mà
không cần kết nối tới máy chủ trung tâm.
Phân nhánh và gộp nhánh: Git là một trong những công cụ mạnh
mẽ nhất cho việc phân nhánh và gộp nhánh. Quá trình này nhanh
chóng và linh hoạt, giúp tạo ra nhiều nhánh cho các tính năng, sửa
lỗi và thử nghiệm mà không gây xung đột lớn.
Xử lý xung đột: Git cung cấp cách tiếp cận tốt hơn trong việc xử lý
xung đột, đặc biệt trong mô hình phân tán, giúp người dùng giải
quyết xung đột dễ dàng hơn.
Sử dụng: Git thường được sử dụng rộng rãi trong nhiều loại dự án
phát triển, từ dự án cá nhân đến dự án lớn với nhiều nhóm làm việc
khác nhau.
* Quy trình làm việc với Phân nhánh và Gộp nhánh trong SVN:
1. Tạo và Cập nhật Nhánh Chính:
Tạo một nhánh chính trên máy chủ SVN (thường là nhánh
trunk hoặc master).
Thường xuyên cập nhật nhánh chính từ mã nguồn của nhóm
bằng cách sử dụng lệnh svn update.
2. Tạo Nhánh Tính năng:
Khi muốn phát triển một tính năng mới hoặc sửa lỗi, tạo một
nhánh con từ nhánh chính bằng lệnh svn copy.
Tên nhánh thường phản ánh tính năng hoặc sửa lỗi được thực
hiện.
3. Làm Việc trên Nhánh Tính năng:
Thực hiện thay đổi trên nhánh tính năng, thêm, sửa hoặc xóa
tệp tin.
Commit thay đổi lên nhánh tính năng bằng lệnh svn commit.
4. Cập nhật và Gộp Nhánh Tính năng:
Thường xuyên cập nhật nhánh tính năng từ nhánh chính bằng
lệnh svn update để đảm bảo bạn có phiên bản mới nhất của
mã nguồn chính.
Khi tính năng hoặc sửa lỗi được hoàn thành, gộp (merge)
nhánh tính năng vào nhánh chính bằng lệnh svn merge.
5. Giải Quyết Xung Đột (Nếu Có):
Nếu xảy ra xung đột khi gộp nhánh, sử dụng lệnh svn resolve
để giải quyết xung đột.
Kiểm tra kỹ lưỡng và thử nghiệm sau khi giải quyết để đảm
bảo tính ổn định của mã nguồn.
6. Commit và Cập Nhật Nhánh Chính:
Sau khi gộp thành công, commit thay đổi lên nhánh chính
bằng lệnh svn commit.
Cập nhật nhánh chính bằng lệnh svn update để đồng bộ với
thay đổi mới nhất.
7. Lặp Lại Quy Trình:
Lặp lại quy trình cho các tính năng hoặc sửa lỗi khác bằng
cách tạo và làm việc trên các nhánh tính năng khác nhau.
8. Cuối Cùng:
Khi đủ ổn định và có các tính năng hoàn thiện, bạn có thể
thực hiện release hoặc deployment từ nhánh chính.
IV. Cài đặt SVN Server
Trong phần hướng dẫn này chúng ta sử dụng Vmware Workstation 17
Player để chạy máy ảo linux Ubuntu 20.04, và cài đặt và cấu hình SVN
Server trên máy ảo đó
Màn hình desktop của Ubuntu 20.04 hiện lên, Quá trình tạo máy ảo hoàn
thành
3. Cài đặt SVN Server trong Ubuntu
B1: Trong máy ảo Ubuntu, ấn tổ hợp phím Window + S rồi nhập và
chọn terminal. Cửa sổ terminal hiện lên.
# Thêm user mới – khi chạy lệnh này sẽ yêu cầu tạo mật khẩu cho user
sudo htpasswd -m /etc/apache2/dav_svn.passwd user1
sudo htpasswd -m /etc/apache2/dav_svn.passwd user2
DAV svn
SVNParentPath /var/lib/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
</Location>
# Sau khi paste thành công ấn ctrl + X, rồi ấn Y, rồi enter là chỉnh sửa
thành công (nên dùng lệnh mở file ở trên kiểm tra lại)
# Khởi động lại apache
sudo service apache2 restart
B3: Kiểm tra xem SVN server đã hoạt động chưa
- Tìm địa chỉ IP của máy ảo Ubuntu, bằng cách sau:
# Chạy lệnh sau
ip addr show
Tìm dòng có inet và có địa chỉ IP ví dụ như trong hình trên: inet
192.168.249.130/24
Ip là 192.168.249.130
- Tiếp theo ta dùng trình duyệt web bất kì trên máy thật Window hoặc
máy ảo Ubuntu, đi đến URL: http://192.168.249.130/svn/myrepo/
Trong đó: http:// + IP Ubuntu + /svn/ + Tên repository của bạn
- Nếu server đã cấu hình và chạy thành công, sẽ hiện lên kết quả như
sau:
- Sau đó đăng nhập bằng user SVN đã tạo ở bước 2
B2: Nhập URL của repo vào URL of repository, chọn nơi chứa repo
trên window của bạn ở Checkout directory. Rồi chọn OK
B3: Cửa sổ xác thực người dùng hiện lên, nhập username, password để
có quyền truy cập vào repository, OK
Cửa sổ thông tin checkout hiện lên, đã checkout thành công
B4: Mở folder myrepo, click chuột phải. Các tùy chọn trong tortoise
hiện lên. Ta có thể thấy được các chức năng cơ bản như: checkout, add,
commit, branch, switch, merge, revert, update, show log, repo-browser.
B5: Kết nối đến repo myrepo thành công, bắt đầu quy trình như thường
lệ