หลังจากที่ สร้าง svn repository ในบทความนี้จะแนะนำการใช้งาน svn เบื้องต้น โดยจะประกอบด้วยคำสั่ง import, checkout, commit
อนุญาตให้ users สามารถเขียนไฟล์ใน repository ได้
ก่อนที่ users สามารถที่จะใส่ไฟล์เข้าไปใน repository ที่ root เป็นคนสร้างไว้ ต้องเปลี่ยน permission ของไดเร็คทอรีที่สร้างขึ้นก่อน ในที่นี้คือ /var/svn/test_svn/
[root@svn ~]# cd /var/svn/
[root@svn svn]# chmod -R g+w test_svn/
[root@svn svn]# chgrp -R users test_svn/
[root@svn svn]# ls -l
total 4
drwxrwxr-x 7 root users 4096 2008-11-27 23:37 test_svn
svn import – เริ่มต้นใส่ข้อมูล
ทดสอบโดยใช้ user01 เขียนโปรแกรมขึ้นมาเก็บไว้ในไดเร็คทอรี my-scripts/ และในนี้มีไฟล์ที่สร้างขึ้นสองไฟล์ คือ index.php และ README
[user01@svn ~]$ ls -lR my-scripts/
my-scripts/:
total 8
-rw-r--r-- 1 user01 users 25 2008-11-27 23:51 index.php
-rw-r--r-- 1 user01 users 7 2008-11-27 23:51 README
ตัวอย่างไฟล์ที่สร้างขึ้น
[user01@svn ~]$ cat my-scripts/index.php
echo "hello";?>ใช้คำสั่ง svn import เพื่อใส่ไฟล์ที่สร้างขึ้นเข้าไปใน repository ได้ ดังตัวอย่าง
[user01@svn ~]$ svn import my-scripts file:///var/svn/test_svn/my-scripts -m "Initial import"
Adding my-scripts/index.php
Adding my-scripts/READMECommitted revision 1.คำอธิบาย
- my-scripts ส่วนแรกเป็นการระบุไดเร็คทอรี ที่เราเพิ่งสร้างไฟล์ขึ้น
- my-scripts อันหลังจะเป็นการระบุชื่อที่เก็บไว้ใน repository
- ออปชั่น -m เป็นคำอธิบายในการเปลี่ยนแปลงข้อมูลใน repository เพื่อการอ้างอิงย้อนหลังได้
- file:///var/svn/test_svn ระบุที่อยู่ของ repository โดยเริ่มต้นเราจะทดสอบบน local disk ข้อสังเกต มีเครื่องหมาย / สามอัน
หลังจากที่ import ไฟล์เข้าไปแล้ว แนะนำให้เก็บสำรอง ไฟล์ดั้งเดิมเอาไว้ก่อน ในตัวอย่างนี้จะเปลี่ยนชื่อเป็น .bak
[user01@svn ~]$ mv my-scripts my-scripts.bak
[user01@svn ~]$ ls -l
total 4
drwxr-xr-x 2 user01 users 4096 2008-11-27 23:51 my-scripts.bak
svn checkout – ดึงไฟล์ออกมาจาก repository
ใช้คำสั่ง svn checkout เพื่อดึงไฟล์ที่ต้องการออกมา โดยต้องระบุ path ให้ถูกต้อง ตามที่ระบุไว้ตอนที่ import เข้าไป
[user01@svn ~]$ svn checkout file:///var/svn/test_svn/my-scripts
A my-scripts/README
A my-scripts/index.php
Checked out revision 1.
[user01@svn ~]$ ls -l
total 8
drwxr-xr-x 3 user01 users 4096 2008-11-28 00:03 my-scripts
drwxr-xr-x 2 user01 users 4096 2008-11-27 23:51 my-scripts.bak
เราจะได้ไดเร็คทอรี่ และไฟล์ที่เราเพิ่งใส่เข้าไปกลับคืนมา ในที่นี้คือ my-scripts
ลองตรวจสอบไฟล์ที่อยู่ในนี้ จะเห็นว่ามี ไดเร็คทอรี่ พิเศษเพิ่มเติมขึ้นมา ชื่อว่า .svn/ โดยจะเป็นส่วนที่เก็บคอนฟิกและการตรวจสอบการเปลี่ยนแปลงไฟล์ของ subversion ห้ามลบทิ้ง
[user01@svn ~]$ cd my-scripts
[user01@svn my-scripts]$ ls -la
total 20
drwxr-xr-x 3 user01 users 4096 2008-11-28 00:03 .
drwx------ 6 user01 users 4096 2008-11-28 00:03 ..
-rw-r--r-- 1 user01 users 25 2008-11-28 00:03 index.php
-rw-r--r-- 1 user01 users 7 2008-11-28 00:03 README
drwxr-xr-x 6 user01 users 4096 2008-11-28 00:03 .svn
[user01@svn my-scripts]$ ls -l .svn/
total 24
-r--r--r-- 1 user01 users 438 2008-11-28 00:03 entries
-r--r--r-- 1 user01 users 2 2008-11-28 00:03 format
drwxr-xr-x 2 user01 users 4096 2008-11-28 00:03 prop-base
drwxr-xr-x 2 user01 users 4096 2008-11-28 00:03 props
drwxr-xr-x 2 user01 users 4096 2008-11-28 00:03 text-base
drwxr-xr-x 5 user01 users 4096 2008-11-28 00:03 tmp
svn info – ตรวจสอบเวอร์ชั่นของไฟล์
ใช้คำสั่ง svn info เพื่อตรวจสอบเวอร์ชั่น (Revision) และข้อมูลการเปลี่ยนแปลงล่าสุดของไฟล์ได้
[user01@svn my-scripts]$ svn info
Path: .
URL: file:///var/svn/test_svn/my-scripts
Repository Root: file:///var/svn/test_svn
Repository UUID: 1b23135d-c21e-4acd-826f-e74e671c30c9
Revision: 1
Node Kind: directory
Schedule: normal
Last Changed Author: user01
Last Changed Rev: 1
Last Changed Date: 2008-11-27 23:56:16 +0700 (Thu, 27 Nov 2008)
svn status – ตรวจสอบสถานะการแก้ไขไฟล์
ทดลองแก้ไขไฟล์ index.php ในที่นี้จะแก้เป็น
[user01@svn my-scripts]$ cat index.php
echo "hello";
echo "world";
echo "test subversion";?>ใช้คำสั่ง svn status เพื่อตรวจสอบการแก้ไข
[user01@svn my-scripts]$ svn status
M index.phpผลลัพธ์ที่ได้จากคำสั่ง svn status จะแสดงรายชื่อไฟล์ที่มีการเปลี่ยนแปลง พร้อมทั้งตัวอักษรย่อ เช่น
- M ไฟล์มีการแก้ไข
- A ไฟล์ถูกสร้างขึ้นมาใหม่
- D ไฟล์ถูกลบไป
- ? ยังไม่มีข้อมูลของไฟล์
svn commit – ปรับปรุงการแก้ไขไฟล์เข้าไปใน repository
หลังจากที่แก้ไขไฟล์ต่างๆ เสร็จเรียบร้อย ใช้คำสั่ง svn commit เพื่อใส่ข้อมูลการเปลี่ยนแปลง กลับเข้าไปใน repository อีกครั้ง ระบุออปชั่น ‘-m’ เพื่อใส่คำอธิบายการแก้ไข
[user01@svn my-scripts]$ svn commit -m "added more lines"
Sending index.php
Transmitting file data .
Committed revision 2.
svn add – เพิ่มไฟล์ใหม่
หากต้องการสร้างไฟล์ใหม่ขึ้นมา ก็สามารถสร้างได้ตามปกติ แล้วใช้คำสั่ง svn add เพื่อเพิ่มไฟล์ใหม่นี้เข้าไปใน repository
[user01@svn my-scripts]$ ls -l
total 12
-rw-r--r-- 1 user01 users 63 2008-11-28 00:10 index.php
-rw-r--r-- 1 user01 users 40 2008-11-28 00:16 new-file1.php
-rw-r--r-- 1 user01 users 7 2008-11-28 00:03 README
[user01@svn my-scripts]$ svn status
? new-file1.php
[user01@svn my-scripts]$ svn add new-file1.php
A new-file1.php
[user01@svn my-scripts]$ svn commit -m "added a new file 1"
Adding new-file1.php
Transmitting file data .
Committed revision 3.
svn delete – ลบไฟล์ออก
หากต้องการลบไฟล์ สามารถทำได้โดยใช้คำสั่ง svn delete ไฟล์จะถูกลบออกทั้งจาก ไดเร็คทอรี และจาก repository
[user01@svn my-scripts]$ svn delete new-file1.php
D new-file1.php
[user01@svn my-scripts]$ svn commit -m "deleted a new file 1"
Deleting new-file1.php
Committed revision 4.
[user01@svn my-scripts]$ ls -l
total 8
-rw-r--r-- 1 user01 users 63 2008-11-28 00:10 index.php
-rw-r--r-- 1 user01 users 7 2008-11-28 00:03 README
คำแนะนำการ commit
จะเห็นว่ากการ commit แต่ละครั้ง ตัวเลข Revision จะเพิ่มทีละหนึ่ง ซึ่งอาจเกินความจำเป็นและจะยากต่อการอ้างอิงเพื่อดึงข้อมูลย้อนหลัง (revert) คำแนะนำคือ ให้ commit หลังจากที่ปรับปรุงโปรแกรมไปพอสมควร เช่นแก้ไขปัญหาที่เกิดขึ้นจบไป หรืออาจจะวันละครั้ง ใส่คำอธิบายหรือเหตุผลของการเปลี่ยนแปลง และให้แน่ใจว่าสิ่งที่แก้ไขไปนั้นโปรแกรมสามารถรันได้โดยไม่มีข้อผิดพลาด แล้วค่อย commit กลับเข้าไปใน repository เผื่อว่าเวลามาดึงข้อมูลย้อนหลังจะได้นำมาใช้งานได้เลย
credit : http://spalinux.com/2008/11/basic_using_subversion