Tuesday, February 13, 2007

Version Control

เห็นข้อมูลหนังสือ Ship It เขาอ้างว่า
ที่อเมริกา ยังมี project ที่ไม่ได้ใช้พวก SCM อยู่ประมาณ 40 %
อืมม์อยากรู้จังว่าบ้านเรา มีกี่เปอร์เซนต์
คงจะมากกว่า 40 อย่างแน่นอน

ในส่วนตัวผมในแง่งานที่บริษัทฯ, ใช้ SCM มาได้หลายปีอยู่
โดยเริ่มจาก CVS แล้วก็เปลี่ยนมาเป็น SVN
สถานะปัจจุบัน "ชีวิตนี้ขาด SCM ไม่ได้แล้ว"
(prototype บางอัน ทำแค่คนเดียว ยังอุตส่าห์ใส่ SCM ด้วย)

แน่นอนว่าหลังจากเปลี่ยนมาใช้ SCM แล้ว
คุณภาพชีวิตย่อมดีขึ้นแน่นอน
แต่ก็ยังมีประเด็นเล็กๆน้อยที่ยังต้องตามแก้ไขต่อ เช่น

  • การใช้อะไรที่มากกว่า trunk
    ข้อนี้พบว่า developer ที่บริษัทผม ใช้ SCM ในการ develop main trunk เพียงอย่างเดียว
    ไม่มีใครเคยใช้ branches แม้ว่าสภาพงานบางงานเอื้อให้เกิด branch เสียเหลือเกิน
    (โปรเจคที่บริษัทฯ ส่วนใหญ่ไม่มี release
    เพราะเป็นโปรเจคแบบลูกค้าคนเดียว
    แถมยัง evolve ไปเรื่อยๆด้วย)
  • นิสัยในการแก้ไข code
    มี developer หลายๆคนที่ยังติดความเคยชินเก่าๆ ในการแก้ไข source code อยู่ เช่น
    สมมติ เรามี
    x = 1.2 * y

    ถ้ามีการแก้ไขขึ้นมา เช่นเปลี่ยน constant ที่ใช้คูณ
    แทนที่จะแก้ตรงๆ ก็ดันไปทำแบบนี้แทน
    // x = 1.2 * y
    x = 1.3 * y

    คือยังทำเหมือนกับไม่ได้ใช้ SCM
    ส่งผลให้ทั้ง source code และผลลัพท์ที่เกิดจากการ diff version, ดูรกหูรกตา
  • วิธีการ commit
    บางคนยังชอบไล่ commit ที่ละ file
    แทนที่จะทำ commit เป็น set ของการเปลี่ยนแปลง
    (ซึ่งจะทำให้การไล่อ่าน history หรือ ตรวจติดตาม change มันง่ายกว่า)
  • การใส่คำอธิบาย ในส่วนของการ commit
    อันนี้ก็คงประเด็นต่อเนื่องมาจาก comment
    ก็คือ ในเมื่อ comment ใน code ยังใส่น้อยอยู่เลย
    นับประสาอะไรกับ comment ใน changeset

Related link from Roti

2 comments:

veer said...

แบบที่ทำคนเดียวผมเลือก bzr ก่อนเลย

polawat phetra said...

กรณีคนเดียว
ของผมใช้ Mercurial

จริงๆ อยากใช้ darcs
(เพราะมันเขียนด้วย haskell)
แต่ชุดคำสั่งมันไม่ค่อยคุ้น
ก็เลยเลือกใช้ Mercurial
ที่มีศัพท์แสงไกล้เคียง svn, cvs มากกว่า