1) Apache Server (ตามตัวอย่างถูกติดตั้งอยู่ใน XAMPP)
ขั้นตอนการติดตั้ง
1) Stop Apache ก่อน
2) Download แพ็คเกจ Subversion ที่ run บน Windows ตาม link นี้
http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=11151&expandFolder=11151&folderID=91
3) หลังจาก download ติดตั้งให้เรียบร้อย
4) ให้คัดลอก mod_dav_svn.so และ mod_authz_svn.so ที่อยู่ใน Folder bin ของ Subversion ที่ติดตั้งไว้ก่อนหน้านี้ (C:\Program Files\Subversion\bin) ใ้ห้ไปวางไว้ใน Folder modules ของ Apache (ตามตัวอย่างนี้อยู่ใน XAMPP : C:\xampp\apache\modules)
5) เข้าไป set Environment Variables ของ Path ที่ System Variables โดยให้เพิ่มค่า path Foler bin ของ Subversion เข้าไปตามภาพ
6) reboot เครื่องเพื่อให้ Apache เห็น lib ของ Subversion
7) หลังจากนั้น ให้ไปแก้ไขไฟล์ httpd.conf (ตามตัวอย่างอยู่ใน C:\xampp\apache\conf) โดย
Uncomment บรรทัด #LoadModule dav_fs_module modules/mod_dav_fs.so ตามภาพ
และเพิ่ม LoadModule dav_svn_module modules/mod_dav_svn.so และ LoadModule authz_svn_module modules/mod_authz_svn.so ทั้ง 2 Modules เข้าไปตอนท้ายของ LoadModule ตามภาพ
และสุดท้ายให้เพิ่ม Subversion configuration ซึ่งเราจะไปสร้าง file เหล่านี้ไว้ในข้อต่อๆไป ซึ่งไปใส่ในบรรทัดสุดท้ายของ file ใสค่าตามนี้ Include c:/etc/subversion.conf ตามภาพ
8) ให้ สร้าง Folder ที่ชื่อ etc ไว้ที่ Drive C เพื่อไว้ใส่ Config ค่าทั้งหลายของ Subversion เนื่องจากที่เราได้เพิ่ม Subversion configuration ไว้ซึ่งอ้างอิงไปที่ C:\etc
9) หัวข้อนี้ เป็นการสร้าง Config ของ Subversion ซึ่งทั้งหมดวางไว้ใน C:\etc ตามนี้
9.1) สร้างไฟล์ svn-auth-file เพื่อกำหนดผู้ใช้งานบน Subversion โดยเข้าไป command พิมพ์ตามนี้
cd C:\xampp\apache\binC:\xampp\apache\bin>htpasswd -cm C:\etc\svn-auth-file harry
New password: *****
Re-type new password: *****
Adding password for user harry
C:\xampp\apache\bin>htpasswd -m C:\etc\svn-auth-file sally
New password: *****
Re-type new password: *****
Adding password for user sally
พูดถึง option
-c หมายถึง สร้างไฟล์ C:\etc\svn-auth-file
-m หมายถึง เข้ารหัส MD5 ของ Password
9.2) สร้างไฟล์ svn-acl เพื่อกำหนดสิทธิ์เข้าใช้ Subversion แต่ละ Project
9.2.1) เข้าไปสร้างไฟล์ svn-acl ที่ C:\etc (ไฟล์ไม่มีนามสกุล)
9.2.2) เปิดไฟล์ขึ้นมาเพื่อใส่ค่าตามนี้
#
# specify groups here
#
[groups]
team1 = harry, sally
#
# team1 group has a read/write access to project1 repository
# all subdirectories
# all others have read access only
#
[project1:/]
@team1 = rw
* = r
9.3) สุดท้ายสร้าง subversion.conf ไว้สำหรับกำหนดค่า Config ของ Subversion ไปยังไฟล์ทั้งสองก่อนหน้า ซึ่ง file config นี้ถูกลิงค์มายัง file Config ของ Apache เพื่อให้การจัดการ Config แยกเป็นสัดส่วน มีขั้นตอนสร้างตามนี้
9.3.1) เข้าไปสร้างไฟล์ subversion.conf ที่ C:\etc
9.3.2) เปิดไฟล์ขึ้นมาเพื่อใส่ค่าตามนี้
DAV svn
SVNPath C:/Repositories/project1
AuthType Basic
AuthName "Subversion Project1 repository"
AuthUserFile c:/etc/svn-auth-file
Require valid-user
AuthzSVNAccessFile c:/etc/svn-acl
DAV svn
SVNPath C:/Repositories/project2
AuthType Basic
AuthName "Subversion Project2 repository"
AuthUserFile c:/etc/svn-auth-file
Require valid-user
AuthzSVNAccessFile c:/etc/svn-acl
SVNPath คือ Folder repo หรือที่ำไว้ก็บไฟล์ Project ของเราเปรีบเสมือนเป็นฐานข้อมูลเก็บ Project
10) พร้อมกันแล้ว Start Apache (ถ้าไม่ผ่านให้เข้าไปดู error.log ใน Folder logs ของ Apache)
11) เรียบร้อยสำหรับ Server
ต่อมาเรามาลุยกันต่อที่ Client
1) Download TortoiseSVN ได้ที่ http://tortoisesvn.net/downloads
2) ติดตั้งให้เรียบร้อย
3) ไปที่ C:\Repositories\Project1 (ตาม SVNPath ใน file subversion.conf) เพื่อที่จะไปสร้าง Repo โดยคลิกขวาที่ว่างๆ TortoiseSVN -> Create repository here ตามภาพ
4) ทดสอบโดย คลิกขวาที่ว่างๆ เลือก TortoiseSVN -> Repo-Browser ตามภาพ
5) ใส่ URL http://localhost/Project1 จะเข้ามายังหน้าจอจัดการ Project ตามภาพ
6) ต่อมาจะมาสร้างโครงสร้างเก็บ Source code ซึ่งทั่วๆไป เข้าจะสร้างกันตามนี้
/trunkเราจะสร้าง Folder ตามนี้ในหน้าจอก่อนหน้านี้ก็ได้ โดยคลิกขวาเลือก Create Folder แล้วสร้างให้ครบทั้งสาม แต่เนื่องจากเราอาจจะทำหลายๆ Project เราสร้าง Folder ว่างๆ ไว้มีโครงสร้างทั้งสาม Folder ตามนี้ไว้ที่ c:\temp\new หลังจากนั้นเข้าไปข้่างใน Folder new คลิกขวาที่ว่างๆ เลือก TortoiseSVN -> import หลังจากนั้นใส่ URL : http://localhost/Project1 ซึ่งเป็น Project ตัวอย่าง ในช่อง Import message ใส่ข้อความว่า create a /trunk /tags /branches structure หลังจากนี้กด OK
/branches
/tags
7) หลังจากกด OK จะพบกับ message Import Finished ตามนี้
8) ลองตรวจสอบดู โดยคลิกขวาที่ว่างๆ เลือก TortoiseSVN -> Repo-Browser จะพบโครงสร้างตาม Temp ของเรา
9) โอ้ พร้อมแล้วที่จะเอา Source code เข้า Repo โดยที่หลังจากเข้าไปที่ Repo-Browser จากข้อที่แล้ว ให้คลิกขวา check out ที่ trunk
10) ใส่ Checkout directory : D:\Dev\Project1 ซึ่งเป็นที่จะนำ Source Code มาไว้เพื่อพัฒนา
11) หลังจากกด Checkout จะได้รับ Message Checkout Finished
12) หลังจากนี้ก็เอา Project เข้าไปวางไว้
13) กด Up folder ขี้นมายัง path D:\Dev คลิกขวา Folder Project1 เลือก SNV Commit เพื่อขี้น Subversion
14) มี Dialog ให้ใส่ message ซะหน่อยว่า Initial project กด Select /deselect All เพื่อเลือกทั้งหมด หลังจากนั้นกด OK
15) เรียบร้อยพร้อมหน้าจอ Commit - TortoiseSVN Finished!
16) เข้าไป Repo-Browser จะเห็นว่ามี Source code ของเราเข้าไปอยู่ใน truck เรียบร้อย
Reference:
- http://svn.spears.at/
- README.txt ใน Folder bin ของ Subversion
- วิธีการใช้ Subversion (SVN) ดูได้ที่่ http://www.solidskill.net/post/Introduction-to-Subversion-(SVN).aspx
ศึกษาเพิ่มเติม
- Source Control : เรื่องจำเป็นที่ไม่ควรมองข้าม ดูได้ที่ http://coredeveloper.net/blogs/nantcom/archive/2009/03/16/version-control.aspx
- แนวคิดเบื้องต้นและการนำไปใช้ สำหรับ web application บน Ubuntu