ห้องลับ

แหล่งความรู้ที่ไม่มีใครเปิดเผย
Twitter
Follow me on Twitter

Creating a Simple Tag vs Creating a Complex Tag

จากคำถามของคุณพิเชฐที่โพสต์ไว้ “สงสัยเรื่องการทำงานของ SVN ระหว่าง Creating a Simple Tag กับ Creating a Complex Tag แตกต่างกันอย่างไร, ใช้งานต่างกันอย่างไร และใช้งานตอนไหนบ้าง” ช่วงนี้ผมมีเวลาว่างมากขึ้น ค้นหาคำตอบให้คุณพิเชฐและบอกเล่าต่อให้เพื่อนๆ ทุกคนครับ :)

ก่อนจะพูดถึงเรื่อง Creating a Simple Tag vs Creating a Complex Tag ขออธิบายโครงสร้าง SVN repository คร่าวๆ ก่อน

โครงสร้างของ SVN repository แบ่งออกเป็น 3 ส่วน ซึ่งเหมาะในการพัฒนาโปรแกรมหรือระบบ

  1. trunk: คือ ลำต้น (main-line) ในการพัฒนาโปรแกรม นั่นหมายความว่า โค้ดส่วนนี้ต้องเสถียร
  2. branches: คือ กิ่งก้านสาขา (side-line) ในการพัฒนาโปรแกรม นั่นหมายความว่า ถ้าเราจะเพิ่มฟีเจอร์ใหม่ให้กับระบบที่เรากำลังพัฒนาอยู่ และไม่อยากให้กระทบกับโค้ดใน trunk
  3. tags: จะใช้ก็ต่อเมื่อโค้ดเราเสถียรมากพอ และพร้อม deploy โค้ดชุดนี้ให้ลูกค้าใช้งาน การเก็บเป็น Release Tags คือการ snapshot โค้ดนั่นเอง ทำให้เราควบคุมเวอร์ชั่น และบั๊กที่เกิดขึ้นจากโปรแกรมได้

    ปัญหาที่เกิดขึ้น เมื่อไม่ทำ Release Tags คือ เวลามี Buglist รายงานกลับมาจากลูกค้าอิงกับโค้ดเวอร์ชั่นเก่า เราจะไม่รู้เลยว่ามีไฟล์ไหนในเวอร์ชั่นนั้นแก้ไปบ้าง สุดท้ายก็ต้องกลับไปไล่ถามโปรแกรมเมอร์ คงจะไม่มีใครตอบได้หมด พอไปดูที่ trunk จะพบว่าโค้ดถูกอัพเดตไปเป็นเวอร์ชั่นใหม่หมดแล้ว

อ่านต่อ…

Optimize TortoiseSVN Cache

สำหรับคนที่ใช้งาน Subversion ผ่านโปรแกรม TortoiseSVN จะมี process ที่ชื่อว่า TSVNCache.exe (ลองเปิด Task Manager ดูได้) โดย Process นี้จะคอยดูว่าเรามีการเปิดใช้งาน folder ใน Windows explorer แล้วทำการ check การเปลี่ยนแปลง folder นั้นๆ เพื่อแสดง icon ที่ถูกต้อง เช่น เครื่องหมายถูกสีเขียวสำหรับ folder ที่ไม่มีการเปลี่ยนแปลง ซึ่งมันจะ scan ทุกๆ folder ที่เราเข้าไปใช้งาน สิ่งที่ตามมาคือ เวลาที่เรา delete/copy ไฟล์หรือโฟล์เดอร์ในปริมาณเยอะๆ จะทำให้เครื่องช้าลงอย่างเห็นได้ชัด อ่านต่อ…

Enable HTTPS access for Subversion

คราวที่แล้ว เรา Setup SVN server ขึ้นมาได้แล้ว แต่ก็มีหลายคนที่อยากใช้ https:// แต่ไม่รู้ว่าจะเริ่มต้นอย่างไรดี ผมก็เคยเป็นหนึ่งคนที่สงสัยและพยายามหาทางเปิดใช้ HTTPS

HTTPS ผมคุ้นๆ ว่าต้องติดตั้ง SSL เพิ่มบน Apache 2 โดย SSL ของฟรีก็จะมี OpenSSL ก่อนผมจะติดตั้งผมเช็คก่อนว่าใน \bin มี openssl.exe อยู่หรือเปล่า พบว่า C:\PROGRA~1\CollabNet\Subversion Server\httpd\openssl.exe มีอยู่แล้ว งั้นผมก็ไม่ต้องติดตั้งเพิ่ม

ก่อนเริ่มต้นติดตั้ง เรามารู้จัก OpenSSL ก่อนดีไหม?
เป็นโปรแกรมพร้อมใช้ในการเข้ารหัสสัญญาณ Secure Sockets Layer (SSL v2/v3) และ Transport Layer Security (TLS v1) ในเน็ตเวิร์ค อ่านต่อ…

Version Control (2)

เมื่อคราวที่แล้วผมได้อธิบาย Version Control เพื่อให้เข้าใจภาพใหญ่ คราวนี้ผมจะอธิบายวิธีติดตั้ง SVN Server บน Windows พวกเราต้องเตรียมอะไรกันบ้าง

สิ่งที่ต้องดาวน์โหลด คือ
CollabNet Subversion Downloads Installer ตัวนี้มี Apache มาด้วย เมื่อดับเบิ้ลคลิกติดตั้ง ตัวโปรแกรมจะถามว่าจะติดตั้ง Apache ด้วยไหม ? ให้เลือกว่าต้องการติดตั้ง แต่ถ้าเรามี Apache อยู่แล้ว ให้เช็คว่า Apache เป็นเวอร์ชั่นอะไร ถ้าเป็น Apache 2.0 ให้อัพเกรดเป็น Apache 2.2 ก่อนติดตั้ง

สิ่งที่ต้องอ่านคือ Readme จะบอกวิธีการติดตั้ง แต่ก็คงจะทำให้หลายๆ คนงง ปัญหาของคนส่วนใหญ่ไม่ใช่การติดตั้ง แต่เป็นปัญหาที่การ Configuration เพราะเคยเป็นมาก่อน ลงแล้วลงอีก จนในที่สุดก็เห็นทางสว่าง อ่านต่อ…

Version Control (1)

Version Control ใช้ในการควบคุมเวอร์ชั่นของเอกสารที่ใช้ร่วมกัน ด้วยความเข้าใจของคนส่วนใหญ่ คิดว่า Version Control เอาไว้เก็บซอร์สโค้ดเท่านั้น แต่จริงแล้ว เราสามารถเก็บเอกสาร, รูปภาพ หรือคลิปวีดีโอได้อีกด้วย

ทำไมเราต้องใช้ Version Control ?
ถ้าเราใช้เอกสารนี้คนเดียว แค่สร้างโฟล์เดอร์มาเก็บน่าจะเพียงพออยู่แล้ว ทำไมต้องยุ่งยากมาใช้ Version Control แต่ถ้ามีคนใช้เอกสารนั้นมากกว่า 1 คนล่ะ ก็ใช้วิธี แชร์โฟล์เดอร์ หรือดีหน่อย Map Driver จาก Server อาจจะมีการเซตสิทธิ์นิดหน่อย

ปัญหาที่เกิดขึ้น

  1. เพราะต่างคนต่างมีก๊อปปี้ไฟล์ตัวเดียวกัน พอมีการแก้ไขเอกสาร ทุกคนก็ต้องอัพเดตเอกสารนั้น แล้วที่เคยแก้ไปล่ะ สุดท้ายต้องมีคนมาอ่านและเปรียบเทียบเอกสารของแต่ละคน แล้วอัพเดตกลับไป ซึ่งเสียเวลา และทำให้ข้อมูลผิดเพี้ยนได้
  2. เราไม่สามารถรู้ได้ว่ามีใครแก้อะไรอยู่ไหม ถ้าไม่รอบคอบก๊อปปี้ทับไปเลย ข้อมูลของเพื่อนร่วมงานก็จะหายไป

อ่านต่อ…