DVMS

www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
Số: 04072012-QT/TECH-SVN 150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

HƯỚNG DẪN SỬ DỤNG PHẦN MỀM SUBVERSION (SVN)
( Tài liệu kỹ thuật )

Nhật ký thay đổi
A – Added, M – Modified, D – Deleted
Ngày Người thực hiện A,M,D (*) Detail Version Phê duyệt

07/2012 TECH TEAM Hướng dẫn sử dụng SVN 2.x

10/2017 TECH TEAM A,M Update tính năng mới 3.6.x

Mục lục
1. Giới thiệu. ........................................................................................................................................ 3

2. Các quy định khi làm việc với SVN: ............................................................................................... 3

3. Cài đặt và cấu hình SVN Server trên Windows ............................................................................. 4
1. Tạo và quản lý user, nhóm user ................................................................................................................. 9
2. Quản lý Repository và dự án .................................................................................................................... 10
3. Phân quyền cho user hoặc group user ..................................................................................................... 15

4. Hướng dẫn sử dụng SVN trên TortoiseSVN client ...................................................................... 18
1. Đưa một project vào SVN server ( Trường hợp tạo mới )............................................................................. 18
2. Lấy một project, dữ liệu từ SVN ( Trường hợp tạo lần đầu ) ....................................................................... 20
3. Kiểm tra các file bị thay đổi với server SVN ( phần này sử dụng nhiều ) ..................................................... 21
4. Đưa file mới vào SVN ( phần này hay sử dụng)........................................................................................... 26
5. Lấy lại phiên bản trước đó về client (thư mục thực hiện dự án) ................................................................... 27
6. Xóa dữ liệu: ................................................................................................................................................. 30
7. Các trạng thái của TortoiseSVN................................................................................................................... 30
8.Tối ưu Tortoise SVN Cache .......................................................................................................................... 31

5. Cài đặt và cấu hình SVN Server trên Linux ( Centos, Ubuntu ) ................................................. 32
1. Cài đặt và cấu hình SVN Server trên Centos ............................................................................................ 32
2. Cài đặt SVN Server và Apache trên Ubuntu ............................................................................................. 35

1 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

3. Sử dụng SVN trên máy trạm dùng Linux hoặc Mac .................................................................................. 37
4. Tự động commit ....................................................................................................................................... 38

6. Truy cập trên trình duyệt ............................................................................................................. 40

7. Theo tác trực tiếp trên hệ thống editor code ................................................................................ 40

8. Dùng SVN Google Code ................................................................................................................ 40

Một số links tham khảo khác ............................................................................................................... 40

2 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

1. Giới thiệu.

- Hệ thống SVN là một hệ thống quản lý phần tài nguyên của một dự án. Hệ thống có khả năng tự cập nhật,
so sánh và kết hợp tài nguyên mới vào phần tài nguyên cũ.
- Bạn cũng có thể dung SVN để quản lý tài nguyên của công và thay thế cho các hệ thống chia sẻ file theo
kiểu cổ điển, hoặc các phần mềm quản lý file khác. Vì SVN có cơ chế phân quyền khá tốt và ngoài ra khá
dễ để lấy lại file cũ… hỗ trợ truy cập cả LAN và WAN, vì vậy rất cơ động và linh hoạt và bảo mật.
- SVN sẽ gồm 2 thành phần đó là
+ SVN SERVER: Phần mềm lưu trữ, phân quyền tại server.
+ Client: Phần mềm giao tiếp, đồng bộ dữ liệu ở máy trạm, tức là phần mềm trên máy của bạn.
- Về mặt khái quát, SVN giống như một hệ thống file server mà các client có thể download và upload file
một cách bình thường. Điểm đặt biệt của SVN là nó lưu lại tất cả những gì thay đổi trên hệ thống file: file
nào đã bị thay đổi lúc nào, thay đổi như thế nào, và ai đã thay đổi nó. SVN cũng cho phép recover lại
những version cũ một cách chính xác. Các chức năng này giúp cho việc làm việc nhóm trở nên trơn tru và
an toàn hơn rất nhiều.
- Các chức năng mà các bạn cần quan tâm nhất là chức năng Commit – để đưa các dữ liệu của các bạn lên
thư mục dự án. Và tính năng thứ 2, là update, để cập nhập tài nguyên của dự án, phần mềm tự so sánh mã
nguồn từ server và của các bạn và tìm ra chỗ nào khác sẽ tự động nối (merge) vào mã nguồn của các bạn
đảm bảo không bị lỗi). Các bạn mỗi khi commit khuyến khích nên update xong rồi hãy commit để tránh
tình trạng bị lỗi.

- Các kiểu truy cập repo trên SVN:

1. file:/// : Truy cập trực tiếp vào repo trên local disk
2. http:// : Truy cập repo qua giao thức WebDAV trên Apache Server
3. https:// : Cũng giống như http:// nhưng sử dụng mã hóa SSL
4. svn:// : Truy cập repo qua giao thức riêng tới svnserve server.
5. svn+ssh:// :Giống với svn:// nhưng phải đi qua đường hầm (tunnel) SSH.
Bài viết này sẽ hướng dẫn bạn sử cách truy cập repo qua http:// và https://

2. Các quy định khi làm việc với SVN:
- Khi thực hiện mới dự án: Nếu là một dự án mới thì quá trình thực hiện dự án như thường lệ, sau đó "Import"
dự án vào SVN.
- Khi thực hiện upgrade từ một dự án có sẳn trong SVN: Nếu phải thực hiện lại một dự án có sẵn thì phải
"checkout" dự án đó từ SVN về thư mục thực hiện dự án. để SVN khởi tạo các thông tin quản lý source nguồn
trên thư mục làm việc của dự án.
- SVN Update trước khi SVN commit
- Quản lý các phiên bản của một file nào đó (bất kỳ là file text, binary,...) vào server SVN. Quá trình kiểm
tra sẽ được SVN sẽ kiểm tra tại 2 nơi:

+ Thư mục dự án (Nơi thực hiện dự án), tức là thư mục trên máy tính của bạn.
+ Thông tin dự án được lưu trữ trên server.

3 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

Khi kiểm tra file hiện hành có sự thay đổi so với trên server SVN là SVN sẽ tạo một phiên bản mới lưu lại ( khi
người dùng update -> commit). Việc quản lý phiên bản sẽ giúp việc phục hồi lại các version trước đó dể dàng mà
không cần phải lưu backup tùm lum mà không biết cái nào trước cái nào sau ... Khi lưu từng phiên bản sẽ cho phép
lưu kèm theo các thông tin liên quan như ...ai là người thay đổi , thay đổi chổ nào,thay đổi cái gì ... giúp cho việc
quản lý source nguồn một các rõ ràng. Việc lưu trữ version SVN sử dụng các thuật toán so sánh và chỉ lưu trữ các
thành phần khác nhau của mỗi verision nên dung lượng lưu trữ sẽ được tối ưu so với việc backup từng file.

3. Cài đặt và cấu hình SVN Server trên Windows
- Có khá nhiều software để tạo SVN server trong đó đang được sử dụng nhiều đó là VISUALSVN
SERVER ( https://www.visualsvn.com/server/ ) dùng cho Windows hoặc dung SVN server tích hợp
chung trong các phần mềm quản lý dự án như Redmine dùng cho Linux… Ngoài ra bạn có thể dung SVN
server của Google và một số hãng.
- Bài này tôi hướng dẫn cài đặt và cấu hình SVN server sử dụng Visual SVN Server trên Windows

Bước 1: Chuẩn bị: Bạn cần có một máy làm server, tùy vào quy mô công ty bạn mà chọn cấu hình máy
server cho phù hợp. Tôi nói là máy dùng làm server chứ không phải bạn cần mua nguyên con server nhé,
tùy vào quy mô công ty mà bạn chọn. Bạn hoàn toàn có thể dùng một máy tính PC thông thường hoặc
laptop để làm SVN server. Trên máy này bạn cài Windows vào, Windows gì thì tùy bạn. Có thể dùng
Windows 7, 8, 10... nhưng theo tôi thì bạn nên dùng Windows server.

Bước 2: Vào https://www.visualsvn.com/server/ download bản Visual SVN Server 32bit hoặc 64bit tùy
vào hệ điều hành trên server bạn đang dùng là 32bit hay 64bit nhé.

Bước 3: Tạo thư mục Repository
Đây là thư mục lưu trữ toàn bộ data của toàn bộ công ty của bạn nhé, vì vậy tôi khuyên bạn nên tạo thư
mục tại ổ khác ổ cài đặt hệ điều hành ví dụ ổ D hay E...

*Lưu ý: Tại sao tôi nói bạn nên tạo thư mục lưu trữ tại ổ khác ổ đĩa cài hệ điều hành. Vì nếu các bạn cài
trên ổ cài hệ điều hành ( thường là ổ C ), thì khi bị hư hệ điều hành thì sẽ khá khó để khôi phục được dữ
liệu của bạn. Ngoài ra bạn cũng phải lưu ý là tất cả các dữ liệu quan trọng khác của bạn cũng vậy nhé,
không bao giờ được lưu trên desktop hoặc các khu vực thuộc ổ đĩa cài hệ điều hành.

Bước 4: cài đặt
Việc cài đặt tương đối đơn giản, bạn click vào file mới download về và làm theo các bước thôi.

4 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

5 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

6 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

- Đến bước chọn nơi lưu trữ ( Repositories ) thì bạn chọn vào thư mục bạn đã tạo trước đó.
- Bạn nên check vào Use Secure Connection (https://) vì giao thức truy cập này an toàn hơn giao thức mặc
định là http.
- Bạn cũng không nên để Server port mặc định. port mặc định nếu bạn không chọn https là 80, còn nếu
chọn https thì mặc định là 443. Tuy nhiên bạn nên đổi sang port khác khó đoán hơn.

 Kết thúc bước 4 là bạn đã có SVN Server.
- Sau khi cài đặt xong thì bạn click vào icon trên desktop hoặc chọn trong menu tab để mở SVN server lên,
chọn VisualSVN Server Manager

7 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

- Bạn sẽ có các thành phần sau:
+ Repositories: Là nơi lưu trữ data
+ Users: Quản lý, tạo, sửa, xóa user
+ Groups: Tạo và quản lý các nhóm làm việc. Tức là bạn có thể phân quyền theo từng user hay theo
nguyên nhóm làm việc.
+ Jobs: ở các version cũ thì không có phần này, từ version 3.6 trở đi thì có thêm phần này, phần này để
bạn tạo các lệnh backup tự động.

8 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

1. Tạo và quản lý user, nhóm user

Nhập thông tin username/password

Cứ lần lượt bạn tạo toàn bộ user cho công ty của bạn.

Bạn có thể tạo ra các nhóm riêng ví dụ tách riêng các phòng bạn ra bằng cách tạo ra các nhóm

9 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

 Sau đó tiến hành add user vào nhóm, bằng cách double click vào tên nhóm muốn add => chọn nút: Add

 Tiếp theo bạn chọn user hoặc nhóm user để add vào nhóm mới tạo.

2. Quản lý Repository và dự án
- Theo mô hình phân cấp thư mục của SVN thì đầu tiên là Repository => sau đó đến Project ( dự án) hoặc
Forder ( thưc mục ) => trong mội dự án hoặc thư mục ta có thể tạo ra dự án hoặc thưc mục con trong nó.

10 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

- Tuy nhiên tùy vào mô hình công ty mà bạn áp dụng mô hình cho phù hợp. Tôi ví dụ một số mô hình tổ
chức như sau:

Mô hình 1: Công ty có nhiều chi nhánh và quản lý theo dự án

SVN

Repository Repository Repository
CN1 CN2 CNn

Forder Forder
Project1 Project2 ...
dùng chung dùng chung

Project con Forder con

Mô hình 2: Công ty có nhiều chi nhánh và quản lý theo phòng ban

SVN

Repository Repository Repository
CN1 CN2 CNn

P.Giải P.Kinh P.Giải P.Kinh
... ...
pháp doanh pháp doanh

Project Forder ... ...

... ...

11 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

Mô hình 3: Quản lý tập trung và hỗn hợp

SVN

Repository

P.Giải P.Kinh
...
pháp doanh

Project Forder ...

... ...

- Bạn có thể chọn các mô hình tổ chức khác nếu tùy vào nghiệp vụ vận hành của công ty.
- Trong các ví dụ tiếp theo tôi sẽ dùng mô hình tổ chức 3.

 Bước tiếp theo chúng ta tạo mới một Repository với tên công ty của bạn ( ví dụ tôi tạo theo tên công ty
tôi là DVMS ). Đây là một Repository rỗng chưa có dữ liệu, dữ liệu sẽ được đồng bộ lên server từ
một subversion client bởi các thành viên được phân quyền.

12 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

13 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

- Mặc định không ai được phép truy cập vào Repository này, chúng ta sẽ phân quyền sau.

14 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

 Tiếp theo bạn sẽ tạo ra các dự án hoặc thư mục riêng cho từng phòng ban, bộ phận.

3. Phân quyền cho user hoặc group user

 Sau khi tạo xong phòng ban, hoặc các dự án chung => nhấn phải chuột vào dự án hoặc thư mục của
từng phòng ban và phân quyền user vào, Ví dụ tôi có phòng giải pháp chẳng hạn => nhấn chuột phải
vào tên phòng giải pháp => Nhấn Add để thêm user có quyền truy cập vào phòng này.

15 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

*Lưu ý: ở đây tôi tạo user tên là tran nhé, với nhóm user thì bạn cũng làm tương tự như đối với user.

 Chọn user hoặc nhóm user cần phân quyền => chọn nút Ok để add vào

16 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

 Lựa chọn quyền hạn của User hoặc nhóm user => Chọn Apply => Ok để thực thi.

17 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

 Bạn cứ tiến hành add lần lượt tất cả user vào từng phòng ban.

*Lưu ý: nếu bạn đã tạo ra nhóm user trước đó rồi thì ở các bước add user phía trên, bạn không cần
add từng user nhé. Chỉ cần add cái group user đó vào và phân quyền là xong, chỉ có user nào bạn cần
cho quyền đặc biệt thì add riêng.
Ví dụ: tôi đã có nhóm user có tên là: phòng giải pháp => tôi add nhóm user này vào thư mục của
phòng giải pháp với quyền Read Only. Như vậy là toàn bộ các user trong nhóm phòng giải pháp có
quyền xem các nội dung, dự án trong thư mục này. Tuy nhiên ông trưởng phòng tran cần có quyền ghi,
update chằng hạn thì tôi cần add riêng user tran và cấp quyền cho user này có quyền Read / Write.

- Các phòng ban khác, hoặc chi nhánh khác thì bạn tiến hành tương tự.

4. Hướng dẫn sử dụng SVN trên TortoiseSVN client
Phần mềm TortoiseSVN (http://tortoisesvn.net/) là client tốt nhất của hệ thống SVN trên môi trường hệ điều hành
Windows.
Hướng dẫn ở dưới chỉ có hướng dẫn vài tính năng cơ bản, các bạn nên đọc thêm phần hướng dẫn của tortoiseSVN
để biết thêm nhiều tính năng rất mạnh của nó.

1. Đưa một project vào SVN server ( Trường hợp tạo mới )
Mở windows explorer lên, chọn thư mục của dự án thực hiện "right click" và chọn

TortoiseSVN -> Import...

Các bước như sau :

Bước 1: Chọn chức năng import

18 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

Bước 2: Điền các thông tin cần thiết (khi truy cập vào url server thì sẽ có dialog yêu cầu nhập thông tin username
+ password đã gửi).

Chú ý: Đường dẫn trong hình dưới chỉ mang tính tham khảo, còn url cụ thể thì sẽ tùy thuộc vào từng dự án mà có
link khách nhau.

19 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

Bước 3 : Ngồi đợi và chờ ....kết thúc ...xong

2. Lấy một project, dữ liệu từ SVN ( Trường hợp tạo lần đầu )

Khi cần lấy các source code, tài liệu từ server SVN thì thực hiện các bước như sau :
Mở windows explorer lên, chọn (hoặc tạo mới) một thư mục để chứa các source code của dự án
*chú ý : thư mục phải rỗng .

Bước 1 : chọn thư mục chứa dự án

20 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

Bước 2 : chọn thông tin dự án trên server

Bước 3 : Ngồi đợi và ...ok thế là xong , bạn đã có các thông tin của dự án trên máy của mình

3. Kiểm tra các file bị thay đổi với server SVN ( phần này sử dụng nhiều )
Kiểm tra sự thay đổi của source nguồn
Nếu chưa có bất kỳ sự thay đổi nào thì icon của thư mục dự án như sau
Nếu có một file, hay một thư mục nào có sự thay đổi thì icon cùa thư mục như sau

21 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

Cho biết file bị thay đổi

Xem file đó thay đổi nội dung gì

Thông tin thay đổi

22 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

Right click ... tìm chức năng "Compare with base"

Tìm xem thử coi chi tiết là nó thay đổi cái gì ?

23 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

Vậy là biết cái file đó đã bị thay đổi như thế nào ....

Giờ làm sao đưa thông tin thay đổi vào server SVN đây .....
Dùng chức năng "Commit ..." để đưa thông tin vào server

Check vào các file cần commit, hoặc bỏ bớt một số file chưa cầu commit (nếu là nhiều file)

24 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

Ok....và ngồi đợi ....... thế là xong ...quá đơn giản ^-^

25 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

Sau khi commit các thông tin giữa clien và version mới nhất tại server hoàn toàn giống nhau thì
icon của thư mục thư mục ..trở về như cũ.

4. Đưa file mới vào SVN ( phần này hay sử dụng)

Nếu trong quá trình phát triển dự án cần thêm một số file vào dự án( có thể thêm thư mục mới ) .... thì sau khi
thêm vào các bạn chọn chức năng "add" để đưa các file này vào SVN

Bước 1: right click vào file chưa có icon SVN

Bước 2: Chọn các file cần đưa .... nếu trong bước 1 là một thư mục.
Bước 3: Ngồi đợi ...và xong.

26 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

Bước 4: sau khi đưa lên thì phải ... commit các thông tin đó
quá trình commit thì tương tự như các bước trên ( cập nhật file có thông tin thay đổi).

5. Lấy lại phiên bản trước đó về client (thư mục thực hiện dự án)
Chọn file cần muốn lấy lại các version (phiên bản) trước đây

27 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

Dialog yêu cầu thông tin version nào

Không biết thì click vào "Show log"

28 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

Chọn được ...một version ưng ý (con số 53)
Oke .... thế là xong ... file trên thư mục local đã được lấy lại các thông tin của version 53 trước đó

29 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

6. Xóa dữ liệu:
- Để xóa một file nào đó đi thì bạn chỉ cần xóa file đó trong thư mục chứa SVN của bạn rồi sau đó commit lên
( những file bạn xóa thì cột: “Text status” sẽ là missing ).

7. Các trạng thái của TortoiseSVN
- Nhìn vào các cảnh báo trong thư mục dự án của bạn thì bạn sẽ biết được phần dữ liệu của mình đang
khác so với server những gì, từ đó bạn thực hiện các hành động để đồng bộ với server.

30 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

8.Tối ưu Tortoise SVN Cache
Khi cài Tortoise SVN thì có 1 process tên là TSVNCache.exe , process này giúp tạo các icon overlay trên các
file và folder trong Windows Explorer. Chính process TSVNCache.exe này đã tiêu tốn 1 số tài nguyên của
máy. Nhiều developer chọn cách disable process này, đồng thời có nghĩa là bạn bỏ chức năng overlay icon của
Tortoise SVN. Có 1 cách để tối ưu hóa TSVNCache.exe mà không disable chức năng overlay icon.

Bước 1: Mở cửa sổ Setting của Tortoise SVN, rồi mò đến cấu hình như hình sau:

31 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

Bước 2:
- Exclude path: ở đây ở máy tôi có 2 partition C & D, bạn liệt kê đường dẫn muốn svncache không scan
đến. Mỗi path trên 1 dòng.
- Ở đây mình muốn svncache không scan toàn bộ computer.
- Include Path: Liệt kê các folder mà bạn muốn svncache scan.
Vì lý do các source code mình để trong 1 folder tên là D:\08_Project nên mình liệt kê 1 folder này thôi,
còn bạn có nhiều folder chứa source code thì set mỗi folder trên dòng.
Lưu ý : bắt buộc có dấu * sau mỗi path. * tức là “sao cũng được”

Bước 3: Reboot lại máy hoặc kill process TSVNCache.exe trong Task Manager rồi open lại TortoiseSVN.

5. Cài đặt và cấu hình SVN Server trên Linux ( Centos, Ubuntu )
- Với môi trường server của bạn dùng hệ điều hành Linux thì bạn có thể dùng các gói all in one tích hợp
sẵn trong các phần mềm quản lý dự án ví dụ như Redmine ... Tuy nhiên bài này tôi sẽ hướng dẫn bạn
cài đặt SVN Server độc lập trên Centos và Ubuntu.

1. Cài đặt và cấu hình SVN Server trên Centos
Yêu cầu trước khi triển khai và cấu hình:

- Centos 5 hoặc 6
- Đã cài HTTPD (Apache)
Cài đặt:

Cài đặt module mod_dav_svn cho apache và chương trình subversion

yum install mod_dav_svn subversion

Cấu hình:

Chỉnh sửa file cấu hình apache (httpd.conf)

vim /etc/httpd/conf/httpd.conf

Bỏ comment ở dòng 232 để nó thành: Include conf.d/*.conf

Tạo thư mục Repository chứa các project:

cd /var/www/svn

Tạo Repository DVMS ( ở đây tôi đặt theo tên công ty tôi, bạn có thể đặt tên khác nhé )

svnadmin create dvms

Chuyển nhóm sở hữu thư mục vừa tạo là user đang chạy httpd (apache), ví dụ tôi để là dvms

chown -R apache.apache dvms

32 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

Bảo với SElinux cho phép httpd truy xuất vào thư mục hieuht (nếu bạn chưa tắt SElinux)

chcon -R -t httpd_sys_content_t dvms

Config HTTPD Subverion. (Sử dụng xác thực người dùng qua HTTPD)
Sau khi đã tạo repository và cấp phép cho chúng, giờ chúng ta config các tham số cần thiết như location http,
giới hạn truy cập, phân quyền người dùng (các lập trình viên) tham gia vào reposition.
Chỉnh sửa file /etc/httpd/conf.d/subversion.conf để truy cập từ HTTP (80), có nội dung như sau:

<Location /dvms>
DAV svn
SVNPath /var/www/svn/dvms
AuthType Basic
AuthName "Subversion dvms project"
AuthUserFile /etc/svn-auth-conf
Require valid-user
AuthzSVNAccessFile /etc/svn-acl-conf
</Location>

Khi đó bạn sẽ truy cập vào repository dvms bằng đường link: http://localhost/dvms
Trong đó cần chú ý:

SVNPath /var/www/svn/repos : Đường dẫn tới SVN repository của bạn
AuthUserFile /etc/svn-auth-conf: File chứa thông tin người dùng (lập trình viên) truy cập vào.

Người dùng được tạo bằng cách:

[root@0day ~] htpasswd -cm /etc/svn-auth-conf yourusername
New password:
Re-type new password:
Adding password for user yourusername
[root@0day ~] htpasswd -m /etc/svn-auth-conf anotherusername
New password:
Re-type new password:
Adding password for user anotherusername

AuthzSVNAccessFile /etc/svn-acl-conf: File chứa nội dung phân quyền, ACL – Access Control List.
File này có format như dưới:
Trong đó:
r = read
rw = read + write
không cho user vào trong ACL thì người đó sẽ bị “Permission Deny” – Không có quyền gì cả!
[reponame:repopath]
user = access
Hoặc phân chia theo từng nhóm. File mẫu:
[groups]
staff = datad, tamhn

33 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

[datad:/]
vandc = r
@staff = rw

Sau khi đã hoàn tất việc cấu hình, tinh chỉnh: Bạn restart lại httpd và test!

service httpd restart

cho apache khởi động cùng máy

chkconfig httpd on

Config SVN:// Subversion
Nếu bạn không muốn cho người dùng (coder) truy cập repository qua web browser (sử dụng webdav) thì bạn
có thể sử dụng cách cấu hình và phân quyền sử dụng giao thức svn://
Sau khi bạn đã tạo được repository dvms `svnadmin createa dvms`, bạn nhảy nhẹ nhàng vào trong `cd
dvms/conf`
Khi đã trong conf/ của repository ấy, bạn chỉnh sửa file sau:
svnserve.conf : File này chứa các thông tin cấu hình như khai báo xác thực người dùng, phân quyền, chính
sách xác thực,.., người dùng anonymous,…, khai báo theo mẫu “variable = value”, các biến chỉ dc thiết lập và
có giá trị khi nằm trong [general], nhứng dòng bắt đầu bằng dấu # thì sẽ không có giá trị.
passwd: Chứa thông tin người dùng, username và mật khẩu, chỉ có nghĩa khi đứng sau [users]. Format,
“username = password”
auhtz: Chứa thông tin về nhóm người dùng và permission người dùng hoặc nhóm.

Ví Dụ:
svserve.conf
[general]
#anon-access: None | Read | Write. Permission cho những người dùng anonymous. Default: Read
anon-access = none
#auth-access: None| Read | Write. Permission cho những người dùng hợp pháp. Default: Write
auth-access = read
#File sẽ lưu thông tin người dùng( trong đây là file passwd, đứng ngang hàng với file svserve.conf)
password-db = passwd
#realm: Tên báo cáo repo
realm = My First Repository

passwd
dvms = 123456
abc = xyz
auhtz
file này được miêu tả rất chi tiết bên trong. Bạn có thể đọc.
Quy ước:
- r: read
- w: write
- không ghi thì không có quyền gì cả.

Chạy dịch vụ svserve như một daemon:

34 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

svnserve -d -r /path/to/svn/repo/

Mặc định: svnserve sẽ giao tiếp qua cổng (port): 3690

Checkout

svn checkout svn://0day.biz/repo

2. Cài đặt SVN Server và Apache trên Ubuntu

- Cài đặt Apache

sudo apt-get install apache2

- Cài đặt Subversion

sudo apt-get install subversion

- Cài đặt thư viện libapache2-svn

sudo apt-get install libapache2-svn

- Khởi động lại apache

sudo /etc/init.d/apache2 restart

- Khởi tạo enable SSL mode

a2enmod ssl

- Cấu hình lại cổng kết nối cho giao thức SSL

sudo gedit /etc/apache2/ports.conf

Listen 80

<IfModule mod_ssl.c>

Listen 443

</IfModule>

- Đăng ký xác thực qua SSL

apache2-ssl-certificate

35 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

* Nếu có thông báo command not found thì:

+ dùng lệnh sau để đăng ký: alias apache2-ssl-certificate='sudo /usr/sbin/make-ssl-cert /usr/share/ssl-
cert/ssleay.cnf /etc/apache2/ssl/apache.pem
hoặc:
+ Tạo thư mục /etc/apache2/ssl bằng lệnh sudo mkdir /etc/apache2/ssl
+ Dùng lệnh sau để đăng ký: sudo /usr/sbin/make-ssl-cert /usr/share/ssl-cert/ssleay.cnf
/etc/apache2/ssl/apache.pem
- Tạo một file config SSL bằng cách copy và đổi tên thành myown-ssl bằng lệnh:

sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/myown-ssl

- Sửa lại nội dung file myown-ssl

sudo gedit /etc/apache2/sites-available/myown-ssl

- Thay đổi các nội dung sau:

NameVirtualHost *
VirtualHost *

thành

NameVirtualHost *:443
VirtualHost *:443

- Chèn đoạn mã sau vào trước thẻ </VirtualHost>

SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.pem
SSLProtocol all
SSLCipherSuite HIGH:MEDIUM

- Ghi lại nội dung file đã sửa đổi và khởi tạo enable cho svn

a2ensite myown-ssl

- Khởi động lại apache

sudo /etc/init.d/apache2 restart

- Cấu hình lại file config của subversion

sudo gedit /etc/apache2/mods-available/dav_svn.conf

<Location /svn>

DAV svn
SVNPath /srv/svn

36 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
AuthzSVNAccessFile /etc/apache2/dav_svn.authz
#<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
#</LimitExcept>

</Location>

-Tạo ra mật khẩu của user ten_user và lưu vào file dav_svn.passwd

sudo htpasswd -cm /etc/apache2/dav_svn.passwd ten_user

(Từ user thứ 2 thì bỏ tham số c (create) ở trên đi, tham số m có nghĩa là mã hoá mật khẩu bằng md5)
-Cấu hình file /etc/apache2/dav_svn.authz để phân quyền cho người dùng đăng nhập vào hệ thống.

[groups]

admins = user1, user2
users = user3, user4

[/]
@admins = rw
@users = r
*=

- Khởi động lại apache

sudo /etc/init.d/apache2 restart

- Tạo Repository cho subversion

sudo svnadmin create /srv/svn
sudo chown -R www-data:www-data /srv/svn
sudo chmod -R g+ws /srv/svn

- Khởi động lại apache và kết nối thử đến https://localhost/svn

3. Sử dụng SVN trên máy trạm dùng Linux hoặc Mac
- Trên máy linux dùng đồ họa thì bạn có thể cài một số tool để làm việc với svn bằng môi trường đồ họa.
Ngoài ra bạn cũng có thể dùng dòng lệnh để làm việc.
- Một số lệnh cơ bản:
import lên SVN:

svn import [đường dẫn dự án ở máy mình] [link dự án trên server] –m [" ghi chú"]

37 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

Ví dụ: svn import webapp/ http://192.168.100.163/repos/webapp -m "import"

Check out SVN

svn co [link svn] [ đường dẫn thư mục dự án ở máy mình]

Ví dụ: svn co http://192.168.100.163/repos/webapp/trunk Magento

Update SVN

svn update [link svn] [ đường dẫn thư mục dự án ở máy mình]

Commit

svn commit [PATH...]

các lệnh khác tham khảo tại:
svn checkout/co

svn add

svn propset

svn delete

svn status

svn update/up

svn commit/ci

svn diff

svn move

4. Tự động commit
A convenient way to make auto commits when the files change.
You need the svn client to make this script work.
Add it as a startup script and worry no more.

#!/bin/bash
# Run commit every second.
# Why? Cron can't do that.
# This can be used combined with a post-commit hook to make a kind of a
versioned FTP :P

38 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

# This script needs a initial checkout! A working copy must exist a priori!

# You need to set-up a "svn-path" file in the same directory as the script
with one working copy a line
# /absolute/working-copy/
# /absolute/working-copy2/

# Bugs:
# Sometimes when you work with someone else on the same file it can overwrite
others modifications with yours without throwing a conflict
# Good thing it's svn and you can easily merge the modifications afterwards.
Still this bug is annoying

# Change this to your paths
script_path="/home/sasha/Scripts/"
paths_file="/home/sasha/Scripts/svn-paths"

while [ true ]; do
message="*Auto-message*"
for local_path in `cat $paths_file| grep -v "#"`; do
stat=`svn status $local_path`
if [[ $stat != '' ]]; then #Are there any changes?
delete_files=`echo $stat|grep -e "^\!"|cut -d" " -f2`
if [[ $delete_files != '' ]]; then
svn delete $delete_files>/dev/null 2>/dev/null
svn commit --non-interactive -m "$message (delete)"
$remote_url >/dev/null 2>>"$script_path"commit_log
fi
# Do we have any files to add
add_files=`echo $stat|grep -e "^\?"|cut -d" " -f2`
if [[ $add_files != '' ]]; then
svn add $add_files >/dev/null 2>/dev/null # Add new
files if there are any

39 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

svn commit --non-interactive -m "$message (add)"
$remote_url >/dev/null 2>>"$script_path"commit_log # Finaly commit
fi
svn update $local_path >/dev/null 2>>/dev/null #Checkout
first
svn commit --non-interactive -m "$message (modified)"
$local_path >/dev/null 2>>"$script_path"commit_log # Finaly commit
fi
done
sleep 1
done

6. Truy cập trên trình duyệt
- Khi ra ngoài mà không có máy cài svn client thì bạn vẫn có thể truy cập vào hệ thống svn để lấy các
văn bản giấy tờ. ví dụ như đi gặp khách hàng mà quên không mang theo biên bản làm việc...
Bằng cách sử dụng trình duyệt web và truy cập vào linh svn của bạn trên server => đăng nhập bằng
username và password của bạn.
- Cách này chỉ dowload được, không update hay commit được nhé.
- Ngoài ra để truy cập được thì hệ thống SVN Server của công ty bạn cần được NAT ra bên ngoài thông
qua domain hoặc IP.

7. Theo tác trực tiếp trên hệ thống editor code
- Một số phần mềm lập trình có hỗ trợ làm việc với SVN, ví dụ như bộ Studio.net , Dreamware,
Eclipse... tuy nhiên đa số bạn sẽ cần cài thêm plugin.

8. Dùng SVN Google Code
- Nếu bạn dùng SVN trên hệ thống Google code thì cũng thao tác phía client tương tự nhé vì khi này thì
Google sẽ đóng vai trò là SVN Server.

Một số links tham khảo khác
http://subversion.apache.org/packages.html#redhat
http://www.syncrosvnclient.com/download.html
http://www.yolinux.com/TUTORIALS/LinuxSubversionAndTracServer.html
http://wiki.greenstone.org/wiki/index.php/Install_SVN_on_Linux#Install_APR_and_APR-Util
http://the.earth.li/pub/subversion/summersoft.fay.ar.us/pub/subversion/latest/

CHÚC THÀNH CÔNG!

40 © DVMS
DVMS
www.dvms.vn | info@dvms.vn
+84836028937 | +84835531145
150/30 Truc Street, 13 Ward, Binh Thanh District,HCM,Viet Nam

DVMS chuyên:

 Tư vấn thiết kế các phần mềm (ứng dụng) trên mobile: iPhone, iPad , Android, Tablet, Windows Phone,
Blackberry...
 Nhận viết các ứng dụng, phần mềm trên mobile: iPhone, iPad , Android, Tablet, Windows Phone,
Blackberry...
 Tích hợp phần mềm hiện có của doanh nghiệp lên smartphone và máy tính bảng, tích hợp các hệ thống
viễn thông, truyền hình...

CTY DVMS
Head Office: 150/30 Truc Street, 13 Ward, Binh Thanh District, Ho Chi Minh City, Viet Nam
Ha Noi Branch: Floor 9, 169 Nguyen Ngoc Vu Street, Trung Hoa Ward, Cau Giay District, Viet Nam
Hai Phong Branch: Hai Phong city, Viet Nam
Tel: +84836028937 | +84835531145 - Fax: +84835531145
Email: sale@dvms.vn
Website: www.dvms.vn | www.giaiphapgiaothong.com

Our Solutions: Giải pháp cho giao thông thông minh: http://giaiphapgiaothong.com ; Vận tải thông minh: http://vantaithongminh.com ; Giải pháp
giao nhận thông minh: http://giaiphapgiaonhan.com ; Giải pháp cho bệnh viện, y tế: http://www.giaiphapbenhvien.com ; Bác sĩ gia đình:
http://bacsigiadinh.giaiphapbenhvien.com ; Giải pháp cho công ty tín dụng http://www.giaiphaptindung.com ; Giải pháp cho giáo dục
http://giaiphapgiaoducdaotao.com ; Giải pháp doanh nghiệp: http://giaiphapdieuhanh.com ; Giải pháp cho công ty bảo hiểm
http://baohiem.taoungdung.com ; Giải pháp bán hàng, quản lý hệ thống phân phối http://ssale.giaiphapdieuhanh.com ; Giải pháp truyền hình; và giải
pháp cho nhiều lĩnh vực khác ...

Nơi nhận:
- Lưu CRM
- Chuyển giao kỹ thuật nội bộ
- Chuyển giao kỹ thuật online

41 © DVMS