หลังจากที่ สร้าง 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 <?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/README
Committed 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 <?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 เผื่อว่าเวลามาดึงข้อมูลย้อนหลังจะได้นำมาใช้งานได้เลย
ข้อมูลอ้างอิง