
http://vietjack.com/svn/index.jsp Copyright © vietjack.com
http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 1
Mục lục
Giới thiệu về SVN ................................................................................................................. 2
Đối với độc giả ...................................................................................................................... 2
Điều kiện tiền đề ................................................................................................................... 2
Các khái niệm cơ bản về SVN .............................................................................................. 3
Hệ thống quản lý phiên bản (VCS) trong SVN là gì? ......................................................... 3
Thuật ngữ kiểm soát phiên bản (Version control) trong SVN ............................................. 3
Cài đặt môi trường SVN ....................................................................................................... 4
Cài đặt SVN ...................................................................................................................... 4
Cài đặt Apache ................................................................................................................. 5
Cài đặt tài khoản sử dụng trong SVN ................................................................................ 6
Cài đặt repository trong SVN ............................................................................................. 7
Vòng đời trong SVN .............................................................................................................. 9
Tạo repository trong SVN: ................................................................................................. 9
Tiến trình Checkout trong SVN ......................................................................................... 9
Tiến trình Update trong SVN ........................................................................................... 10
Thực hiện các thay đổi trong SVN .................................................................................. 10
Duyệt các thay đổi (review) trong SVN ............................................................................ 10
Sửa các lỗi trong SVN .................................................................................................... 11
Giải quyết các xung đột trong SVN:................................................................................. 11
Ký thác các thay đổi (commit) trong SVN ........................................................................ 11
Tiến trình Checkout trong SVN ........................................................................................... 12
Thực hiện các thay đổi trong SVN ...................................................................................... 13
Review các thay đổi trong SVN ........................................................................................... 15
Tiến trình Update trong SVN ............................................................................................... 17
Sửa lỗi trong SVN ............................................................................................................... 22
Xử lý các xung đột (Conflict) trong SVN .............................................................................. 25
Bước 1: Kiểm tra xung đột .............................................................................................. 27

http://vietjack.com/svn/index.jsp Copyright © vietjack.com
http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 2
Bước 2: Trì hoãn các xung đột ........................................................................................ 28
Bước 3: Giải quyết xung đột ........................................................................................... 29
Hoạt động Tag trong SVN .................................................................................................. 29
Chia nhánh trong SVN ........................................................................................................ 30
Tài liệu tham khảo SVN ...................................................................................................... 40
Các đường link hữu ích về SVN ..................................................................................... 40
Giới thiệu về SVN
Apache Subversion thường được viết tắt là SVN, là một phần mềm mã nguồn mở dùng để quản
lý và kiểm tra các phiên bản mã nguồn khác nhau trong quá trình phát triển phần mềm. Subversion
được tạo bởi CollabNet Inc trong năm 2000, nhưng bây giờ nó được phát triển bởi một dự án của
Apache Software Foundation, và nó là một phần không thể thiếu của cộng đồng các nhà lập trình
và phát triển web.
Mời các bạn vào trang chủ của Viet Jack để tham khảo thêm các loạt bài online miễn phí khác
Loạt bài hướng dẫn của chúng tôi dựa trên nguồn tài liệu của: Tutorialspoint
Đối với độc giả
Phần hướng dẫn này được thiết kế cho những ai quan tâm về các khái niệm của hệ thống SVN
theo các bước đơn giản và logic. Sau khi kết thúc phần hướng dẫn này, bạn sẽ có sự hiểu biết hơn
về SVN, từ đó có thể nâng cao trình độ của mình.
Điều kiện tiền đề
Trước khi theo tiến trình của phần hướng dẫn này, bạn nên có kiến thức cơ bản về các thuật ngữ
như ngôn ngữ chương trình, mã nguồn, tài liệu…. Bởi vì sử dụng SVN để giải quyết tất cả các mức
độ trong các dự án phần mềm trong tổ chức của bạn, nó sẽ là tốt nếu bạn có kiến thức làm việc cơ
bản về phát triển phần mềm và tiến trình kiểm tra phần mềm.

http://vietjack.com/svn/index.jsp Copyright © vietjack.com
http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 3
Các khái niệm cơ bản về SVN
Hệ thống quản lý phiên bản (VCS) trong SVN là gì?
Version Control System (VCS) là một phần mềm mà giúp các nhà phát triển phần mềm làm việc
với nhau và duy trì một lịch sử đầy đủ công việc của họ.
Dưới đây là mục tiêu của một Version Control System
Cho phép các nhà phát triển phần mềm làm việc tương tác với nhau;
Không viết đè lên thay đổi của mỗi thành viên tạo ra;
Duy trì lịch sử của mỗi phiên bản.
Một VCS được chia thành hai kiểu
Hệ thống quản lý phiên bản tập trung (CVCS), và
Hệ thống quản lý phiên bản phân phối/phân cấp (DVCS).
Trong phần hướng dẫn này, chúng ta sẽ chỉ tập trung vào hệ thống phiên bản tập trung mà đặc
biệt là Subversion. Subversion sử dụng một máy chủ trung tâm để giữ tất cả các file và cung cấp
quyền hợp tác của team.
Thuật ngữ kiểm soát phiên bản (Version control) trong
SVN
Hãy cùng bàn về một số mục mà chúng ta sử dụng trong phần hướng dẫn này:
Repository (Kho chứa): Một repository là trái tim của bất cứ hệ thống quản lý phiên bản.
Nó là khu vực trung tâm để các nhà phát triển giữ tất cả công việc của họ. Kho lưu không
chỉ lưu các file mà còn lưu giữ cả lịch sử làm việc. Kho lưu được truy cập thông qua mạng,
thực hiện vai trò như một máy chủ và công cụ điều khiển phiên bản là một máy khách. Các
máy khách có thể kết nối với repository và sau đó họ có thể giữ/lấy lại những thay đổi họ
thực hiện tới/từ repository. Bằng cách giữ các thay đổi , một khách tạo các thay đổi này tới
người khác và bằng cách lấy lại những thay đổi, một khách có thể nhận được các thay đổi
được thực hiện bởi người khác như là một bản sao công việc.
Trunk (Thân): Một thân là một thư mục tại đó tất cả các phát triển chính xảy ra và thường
được kiểm tra bởi các nhà phát triển làm việc trên dự án.

http://vietjack.com/svn/index.jsp Copyright © vietjack.com
http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 4
Tags (Thẻ): Thư mục các thẻ được sử dụng để giữ các ảnh chụp nhanh (snapshot) được
đặt tên của dự án. Hoạt động thẻ cho phép đặt các tên để mô tả và dễ ghi nhớ cho các
phiên bản cụ thể trong repository.
Ví dụ, LAST_STABLE_CODE_BEFORE_EMAIL_SUPPORT thì dễ ghi nhớ hơn
7ceef8cb-3799-40dd-a067-c216ec2e5247 của repository UUID và
Revision: 13
Branches (Nhánh): Hoạt động nhánh được sử dụng để tạo một tiến trình khác của sự phát
triển. Nó hữu ích khi bạn muốn tiến trình phát triển của bạn phân theo hai hướng khác
nhau. Ví dụ, khi bạn công bố phiên bản 5.0, bạn có thể muốn tạo ra một nhánh để phát
triển các tính năng phiên bản 6.0 mà được giữ riêng rẽ với phiên bản 5.0.
Working copy (Bản sao công việc ): Bản sao công việc là hình chụp nhanh (snapshot)
của repository. Kho lưu được chia sẻ bởi cả team, nhưng người ta không thể sửa nó một
cách trực tiếp. Thay vào đó mỗi nhà lập trình kiểm tra bản sao công việc. Bản sao công
việc là khu vực làm việc riêng, tại đó các nhà lập trình có thể thực hiện công việc của họ
riêng rẽ một mình, cách biệt với phần còn lại của team.
Các thay đổi commit: Commit là tiến trình của việc giữ các thay đổi từ khu vực làm việc
riêng tới máy chủ trung tâm. Sau khi commit, các thay đổi sẵn sàng được sử dụng bởi các
thành viên khác trong team. Các thành viên khác có thể lấy lại các thay đổi này bằng cách
cập nhật bản sao công việc. Commit là một hoạt động nguyên tử (atomic operation) tức là
không thể chia nhỏ hoạt động đó được. Hoặc là nó thành công hoặc là thất bại. Bạn không
bao giờ nhìn thấy một commit hoàn thành giữa chừng.
Cài đặt môi trường SVN
Cài đặt SVN
Subversion là một công cụ quản lý phiên bản mã nguồn mở. Nó có sẵn và miễn phí trên mạng. Nó
đi kèm theo các bản mặc định với các bản phân phối của GNU/Linux, vì thế nó có thể đã được cài
đặt trên máy của bạn. Để kiểm tra có hay không nó đã được cài đặt trên máy, bạn sử dụng lệnh
sau:

http://vietjack.com/svn/index.jsp Copyright © vietjack.com
http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 5
[jerry@CentOS ~]$ svn --version
Nếu bản Subversion client chưa được cài đặt, thì khi đó lệnh sẽ báo lỗi, ngoài ra nó sẽ hiển thị
phiên bản của phần mềm cài đặt.
[jerry@CentOS ~]$ svn --version
-bash: svn: command not found
Nếu bạn đang sử dụng RPM- trên nền tảng GNU/Linux, thì khi đó bạn sử dụng lệnh yum để cài
đặt. Sau khi cài đặt thành công, chạy lệnh svn--version.
[jerry@CentOS ~]$ su -
Password:
[root@CentOS ~]# yum install subversion
[jerry@CentOS ~]$ svn --version
svn, version 1.6.11 (r934486)
compiled Jun 23 2012, 00:44:03
Nếu bạn đang sử dụng Debian- trên nền tảng GNU/Linux, bạn sử dụng lệnh apt để cài đặt.
[jerry@Ubuntu]$ sudo apt-get update
[sudo] password for jerry:
[jerry@Ubuntu]$ sudo apt-get install subversion
[jerry@Ubuntu]$ svn --version
svn, version 1.7.5 (r1336830)
compiled Jun 21 2013, 22:11:49
Cài đặt Apache
Chúng ta đã thấy cách để cài đặt Subversion client trên GNU/Linux. Bây giờ hãy xem cách để tạo
một repository mới và cho phép người sử dụng truy cập.
Trên server chúng ta phải cài đặt môđun Apache httpd và công cụ svnadmin.
[jerry@CentOS ~]$ su -
Password:
[root@CentOS ~]# yum install mod_dav_svn subversion

