Cấu hình SVN

CẤU HÌNH SUBVERSION

Giới thiệu:

Subversion(viết tắt là SVN) là một hệ thống quản lí version (version control system(VCS)) được giới thiệu vào năm 2000 bởi công ty CollabNet. Đây là hệ thống hỗ trợ làm việc theo nhóm rất hiệu quả. Khi một nhóm làm việc cùng trên một project, việc nhiều người cùng chỉnh sửa nội dung của một file là điều không thể tránh khỏi. SVN cung cấp các chức năng để có thể thực hiện việc này một cách đơn giản và an toà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.

Link download cho phiên bản chạy trên WINDOWS:

Subversion Client:

Dưới đây là một số các chương trình khách (CLIENT) hay giao diện người dùng có khả năng truy cập các máy chủ chạy Subversion.

  1. AnkhSVN là một phần mềm phụ, bổ sung khả năng truy cập Subversion cho môi trường lập trình Visual Studio .NET.

  2. eSvn, chương trình khách dựa trên thư viện Qt.

  3. Insurrection, giao diện Web cho Subversion.

  4. JSVN, chương trình khách viết bằng Java.

  5. kdesvn, chương trình khách cho KDE.

  6. psvn.el, giao diện Subversion cho Emacs.

  7. PushOk SVN SCC PlugIn là một phần mềm phụ, bổ sung khả năng truy cập Subversion cho môi trường lập trình Visual Studio .NET.

  8. RapidSVN, chương trình khác đa hệ điều hành dựa trên thư viện wxWidgets.

  9. SCPlugin, phần mềm phụ cho Macintosh Finder.

  10. SmartSVN là một chương trình khác đa hệ điều hành, có hai bản quyền: tự do và thương mại, được viết bằng Java.

  11. Subcommander, chương trình khách đa hệ điều hành dựa trên thư viện Qt

  12. svnX, chương trình khách cho Mac OS

  13. TortoiseSVN là một phần mềm bổ sung cho Explorer.

  14. TurtleSVN đi kèm với TortoiseSVN để hỗ trợ môi trường lập trình Visual Studio .NET.

  15. WebSVN, là một giao diện Web cho Subversion, viết bằng PHP

  16. WebClient for SVN là một chương trình khách mã nguồn mở viết bằng Java/JSP, thường được dùng cho các thao tác đơn giản.

  17. ZigVersion là một chương trình khác thương mại cho Mac OS X Subversion.

Link tham khảo” http://subversion.tigris.org/links.html

Hosted source control

In case you need to host your code online, mostly for open source projects, here are some providers you can try:

Notes:

  • Not all accept closed source projects.

  • Not all support binary releases.

  • Most offer more services than just source code hosting: forums, bug tracking, task management, project web site, etc.

Link tham khảo: http://weblogs.asp.net/fmarguerie/archive/2005/04/27/404793.aspx

CÀI ĐẶT, CẤU HÌNH SUBVERSION TRÊN WINDOWS

Cài APACHE.

Trong trường hợp này tôi cài

XAMPP: http://jaist.dl.sourceforge.net/sourceforge/xampp/xampp-win32-1.6.6a-installer.exe

vào ổ D:\xampp

Cấu trúc thư mục: D:\xampp\apache\conf\httpd.conf

D:\xampp\apache\modules\

Cài SUBVERSION: D:\Program Files\Subversion

Tạo thư mục etc: D:\Program Files\Subversion\etc

Copy các file:

  1. mod_dav.so

  2. mod_dav_svn.so

  3. mod_authz_svn.so

từ thư mục: D:\Program Files\Subversion\bin\

vào thư mục: D:\xampp\apache\modules\

(Trước khi chỉnh sửa file D:\xampp\apache\conf\httpd.conf, chúng ta sao lưu trước)

Mở file D:\xampp\apache\conf\httpd.conf bằng trình soạn thảo bất kỳ (Notepad++ chẳng hạn)

D:\xampp\apache\conf\httpd.conf

Thêm vào các dòng sau:

#@@SVN

<Directory />

Options FollowSymLinks

AllowOverride None

#Order deny,allow

#Deny from all

#@@SVN

Order Allow,Deny

Allow from all

#Allow from network (ví dụ 10.0.5 => tất cả các máy trong dải 10.0.5.x có thể #truy cập vào svn server

</Directory>

#@@SVN

<Directory “D:/xampp/htdocs“>

#

#

AllowOverride All

#

#

# Controls who can get stuff from this server.

#

Order allow,deny

Allow from all

#Allow from network (ví dụ 10.0.5 => tất cả các máy trong dải 10.0.5.x có thể #truy cập vào svn server

</Directory>

#@@SVN

Include “D:/Program Files/Subversion/etc/subversion.conf

Nội dung file: D:\Program Files\Subversion\etc\subversion.conf

#Edited by tinh_cx

#

LoadModule dav_module modules/mod_dav.so

LoadModule dav_svn_module modules/mod_dav_svn.so

LoadModule authz_svn_module modules/mod_authz_svn.so

#

#

#Temples cua 1 project nhu sau:

#Voi moi project, ta copy them nguyen doan text nay

######################BEGIN

#<Location /webapp1> ###trong do “/webapp1” la ten bat ky user tu dat

<Location /webapp1>

DAV svn

#Duong dan tuyet doi chua project

SVNPath “E:/bkProject/WebProject/webapp1

AuthType Basic

AuthName “Subversion Project1 repository”

#File luu thong tin user/password da duoc ma hoa

AuthUserFile “D:/Program Files/Subversion/etc/svn-auth-file

Require valid-user

AuthzSVNAccessFile “D:/Program Files/Subversion/etc/svn-acl

</Location>

######################END

######################BEGIN

#<Location /webapp2> ###trong do “/webapp2” la ten bat ky user tu dat

<Location /webapp2>

DAV svn

#Duong dan tuyet doi chua project

SVNPath “E:/bkProject/WebProject/webapp2

AuthType Basic

AuthName “Subversion Project1 repository”

#File luu thong tin user/password da duoc ma hoa

AuthUserFile “D:/Program Files/Subversion/etc/svn-auth-file

Require valid-user

AuthzSVNAccessFile “D:/Program Files/Subversion/etc/svn-acl

</Location>

######################END

Người dùng có thể truy cập đến thư mục:

E:/bkProject/WebProject/webapp1 qua URL:

http://<server name>:<port number>/webapp1 hoặc có thể vào trực tiếp

file:/// E:/bkProject/WebProject/webapp1 Apache server có thể đọc các thông tin về user/ password từ file:

D:/Program Files/Subversion/etc/svn-auth-file” , thông tin về quyền truy cập các project:

D:/Program Files/Subversion/etc/svn-acl”

File “D:/Program Files/Subversion/etc/svn-acl” định nghĩa các quyền có thể truy cập đến project1.

Nội dung file: D:\Program Files\Subversion\etc\svn-acl

#Edited by tinh_cx

# ACCESS CONTROL LIST (ACL)

#

# specify groups here

#

###################################### webapp1

[groups]

team1 = tinh_cx, backup

#

# team1 group has a read/write access to webapp1 repository

# all subdirectories

# all others have read access only

#

[webapp1:/]

@team1 = rw #(User nam trong team1 co the doc/ghi)

#* = r #(Tat ca cac user co quyen doc)

######################################

#

#
###################################### webapp2

# webapp2 repository, only harry and sally have read-write access to project2

#

[webapp2:/]

harry = rw

sally = rw

* = r

#

# ross is helping with the time zone part of the project2

#

[webapp2:/timezone]

harry = rw

sally = rw

ross = rw

* = r

######################################

Chú thích cho việc phân quyền ở webapp1:

Các nhóm làm việc có thể định nghĩa trong thẻ groups. Trong file nói trên, nội dung của webapp1 có thể được đọc và ghi bởi những người trong team1. Tât cả các user khác chỉ có quyền đọc

Tạo user:

htpasswd -[c]m “d:\Program Files\Subversion\etc\svn-auth-file” <username>

Mở cmd, chạy lệnh sau:

htpasswd -[c]m “d:\Program Files\Subversion\etc\svn-auth-file” tinh_cx

Chú thích:

htpasswd: File này nằm tại: D:\xampp\apache\bin\htpasswd.exe

Tham số: -[c]: C: Create (dùng khi file svn-auth-file chưa được tạo ra. Nếu đã tạo ra rồi, tham số này sẽ xoá file cũ đi, tạo file mới). Các user sau không cần tham số C. Chỉ thêm tham số M.

Tạo nơi lưu trữ Project:

(không phải thư mục muốn làm project)

C1: Dùng câu lệnh:

svnadmin create “E:\bkProject\WebProject\<project name>”

Mở cmd, chạy lệnh sau:

svnadmin create “E:\bkProject\WebProject\webapp1”

C2: Dùng giao diện:

Tại thư mục muốn lưu trữ project

Thư mục này sẽ được SUBVERSION “lưu các phiên bản” mỗi khi có sự thay đổi

Tạo workspace nơi chứa code thật sự:D:\workspace\WebProject\webapp1

(Thư mục webapp1 phải rỗng – không chứa bất kỳ file/thư mục khác)

Check out thành công:

Thư mục webapp1 sẽ được thêm thư mục ẩn: “.svn”

Không quan tâm thư mục ẩn này. Code của project sẽ được đặt trong thư mục webapp1

Mở Eclipse, chọn workspace nằm tại đường dẫn:

Mọi sự thay đổi trong thư mục webapp1 này sẽ được SVN Server “theo dõi”.

The end.

Minh hoạ cụ thể:

Học cách sử dụng Subversion qua TortoiseSVN:

TortoiseSVN là một chương trình phía client của Subversion system. Chương trình có thể download miễn phí:
http://jaist.dl.sourceforge.net/sourceforge/tortoisesvn/TortoiseSVN-1.4.8.12137-win32-svn-1.4.6.msi

Sau khi cài đặt xong, các bạn có thể dùng thử TortoiseSVN theo hướng dẫn dưới đây

Hướng dẫn sử dụng TortoiseSVN:

Đây chỉ là hướng dẫn để làm quen với khái niệm và các thao tác trên TortoiseSVN. Cách setup một SVN server thực sự và các chức năng cụ thể của TortoiseSVN xin tham khảo file help trong thư mục cài đặt. Để đơn giản, bài viết sẽ tạo cả server lẫn client trên cùng một máy tính.

1. Tạo thư mục Repository(thư mục để chứa các file trên server)
Tạo một thư mục tên bất kì tại nơi bạn muốn đặt server. Vi dụ: C:/SVN/MyRepository.

Click vào thư mục vừa tạo và click chuột phải, chọn TortoiseSVN→Create Repository.

Click OK ở bước tiếp theo

Repository đã được tạo xong. Ban không nên(và không được) tự mình chỉnh sửa những file trong đó.

2. Access vào Repository như một client

Tạo một thư mục bất kì và di chuyển vào đó(ví dụ C:\Client1)

Click chuột phải, chọn SVN Checkout…

Nhập URL repository trên server(trong trường hợp này là file:///C:/SVN/MyRepository), click OK.

Nếu check out thành công, bạn sẽ thấy trong thư mục xuất hiện thư mục .svn(thư mục ẩn) cùng tất cả các file có trên server (hiện tại trên server chưa có file nào nên chỉ có thư mục .svn xuất hiện). Bạn có thể chỉnh sửa cũng như tạo mới, xóa bớt các file trong đó.

3. Upload file lên server (commit)

Sau khi đã chỉnh sửa file, các bạn có thể commit những thay đổi lên server bằng cách click chuột phải, chọn SVN commit…, check những file cần commit, viết thêm ghi chú về thay đổi (nếu cần) vào phần log message rồi click ok. Ở bước này các bạn chú ý là chỉ nên commit những file chung cho project, những file chỉ sử dụng cho riêng mình (ví dụ các file test, backup…) các bạn không nên commit.

4. Xử lí khi bị conflict

Conflict xảy ra khi 2 client đồng thời thay đổi nội dung của của 1 file. Để hiểu rõ hơn về conflict, các bạn làm theo ví dụ sau:

Trong thư mục client1, check out, sau đó tạo file bất kì (ví dụ main.c).

Commit file main.c.

Edit file main.c, thêm vào dòng “I am client1”. Save file. (chưa commit)

Ra khỏi thư mục client1, tạo thư mục client2 (giả định đây là 1 client khác cùng tham gia 1 project với client1). Check out as client2.

Edit file main.c, thêm vào dòng “I am client2”. Commit file main.c

Trở lại thư mục client1. Commit file main.c. Bảng hiển thị lỗi sẽ hiện ra và bạn sẽ không thể commit lên server.

Cách khắc phục:

Trước tiên bạn phải update. Click chuột phải, chọn SVN update. File main.c của bạn sẽ được copy qua main.cpp.mine, còn file main.cpp sẽ có nội dung mà cả 2 client đã thay đổi. Xem file main.cpp để “đoán” xem chuyện gì đã xảy ra và chỉnh sửa lại. Hoặc bạn có thể dùng check modification tool(click chuột phải, chọn TortoiseSVN→Check for modification). Sau khi đã chỉnh sửa xong file main.cpp, bạn phải thông báo cho SVN rằng conflict đã được fix bằng cách click chuột phải, chọn TortoiseSVN→Resolved… Sau đó mới có thể commit được.

One Comment

  1. asteriskese
    Posted 23, April, 2008 at 7:40 pm | Permalink

    qX4eJ3mS4GZ4
    https://tuhocjava.googlecode.com/svn/trunk/ tuhocjava –username tinhcx.apt


Post a Comment

Required fields are marked *

*
*

%d bloggers like this: