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:
-
Dùng cho APACHE 2.0:
http://subversion.tigris.org/files/documents/15/41686/svn-1.4.6-setup.exe
Dùng cho APACHE 2.2:
http://subversion.tigris.org/files/documents/15/41687/svn-1.4.6-setup.exe -
Tài liệu hướng dẫn sử dụng trên trang chủ: http://subversion.tigris.org/servlets/ProjectDocumentList
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.
-
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.
-
eSvn, chương trình khách dựa trên thư viện Qt.
-
Insurrection, giao diện Web cho Subversion.
-
JSVN, chương trình khách viết bằng Java.
-
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.
-
RapidSVN, chương trình khác đa hệ điều hành dựa trên thư viện wxWidgets.
-
SCPlugin, phần mềm phụ cho Macintosh Finder.
-
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.
-
Subcommander, chương trình khách đa hệ điều hành dựa trên thư viện Qt
-
svnX, chương trình khách cho Mac OS
-
TortoiseSVN là một phần mềm bổ sung cho Explorer.
-
TurtleSVN đi kèm với TortoiseSVN để hỗ trợ môi trường lập trình Visual Studio .NET.
-
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.
-
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:
-
http://www.tigris.org (Subversion and CVS)
-
http://developer.berlios.de (Subversion and CVS)
-
http://wdevs.com (Vault)
-
http://freepository.com (CVS)
-
http://sourceforge.net (Subversion and CVS, often reported as slow)
-
http://gotdotnet.com/workspaces (if you don’t mind using an unpredictable site)
-
http://community.java.net/projects (for Java project obviously)
-
http://www.sourcehosting.net (CVS, not free)
-
http://www.projxpert.com (Subversion)
-
http://wush.net (Subversion, not free)
-
http://www.cvsdude.org (Subversion and CVS)
-
http://www.projectlocker.com (Subversion and CVS, not free)
-
http://www.bitkeeper.com/Hosted.html (BitKeeper)
-
http://forge.novell.com (Subversion and CVS)
-
https://opensvn.csie.org (Subversion)
-
http://www.hosted-projects.com (Subversion)
-
http://www.codeplex.com (Visual Studio Team Foundation Server)
-
http://www.devguard.com (Subversion, not free)
-
http://www.assembla.com (Subversion)
-
http://www.orcsweb.com/hosting/sourcegearvault.aspx (Vault, not free)
-
http://www.dynamsoft.com/Products/SAWhosted_Overview.aspx (SourceAnywhere)
-
http://www.codespaces.com (Subversion)
-
http://svnrepository.com (Subversion, not free)
- http://sharpforge.org and http://sharpforge.com (Subversion)
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:
-
mod_dav.so
-
mod_dav_svn.so
-
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
qX4eJ3mS4GZ4
https://tuhocjava.googlecode.com/svn/trunk/ tuhocjava –username tinhcx.apt