ไม่คิดถึง source control เมื่องานไม่หาย

ไม่คิดถึง source control เมื่องานไม่หาย

หากได้อ่านที่ผมเขียนบทความมานาน จะรู้ว่า ผมชอบเอาเรื่อง SVN (แบบหนึ่งของการทำ Source Control) มาพูดให้ฟังบ่อยๆ ซึ่งจะเป็นช่วงที่ผมได้ใช้มันจริงๆ จึงได้พยายามถ่ายทอดออกมาให้ได้ใช้งานกันด้วย จริงๆก็เป็นเรื่องที่ดี ที่เราใช้มัน เพราะว่าการทำ Source Control นี้ มีใช้ในทุกบริษัทที่เป็น software house ที่มีมาตรฐานอยู่แล้ว ซึ่งมันก็ชัดเจนว่า หากไม่ดีเค้าก็ไม่ทำกันหรอก

แต่ผมขอสารภาพผิดตรงนี้ก่อน ก็คือทุกครั้ง หลังจากที่ผมเขียนบทความ SVN ไป ผมก็จะใช้ได้อีกสักพัก แล้วก็เลิกใช้ เท่าที่จำเหตุผล(หรืออีกนัย เรียกว่าข้ออ้างสินะ) ก็คือไม่สะดวก, ไม่จำเป็น, เสียเวลาเพิ่ม, ลืม

ไม่สะดวก ก็คือ ปกติเปิดงานมา ก็ลุยเขียนก่อนเลย แต่ใช้ SVN แล้ว ต้อง checkout ก่อนเริ่มเขียนทุกครั้ง และต้อง commit ก่อนปิดงานในรอบ หรือวันนั้นๆเสมอ

ไม่จำเป็น ก็คือ ทำงานอยู่คนเดียว ไม่เกี่ยวกับใครเลย เลยไม่รู้จะ commit ไปให้ใครดู เพราะตัวเองยังไม่ดูเลย 555

เสียเวลาเพิ่ม ก็ปกติ เวลาย้ายงานไปไหนมาไหน ผมจะ pack ก่อน แล้วค่อยย้าย แต่มีขั้นตอนเพิ่มมาอีกคือ commit ก่อน pack

ลืม ก็คือ ลืม commit ไปเฉยๆนี่แหล่ะ มานึกขึ้นได้ก็ผ่านไปไกลและ การ commit เริ่มไม่ค่อยมีประโยชน์

จนกระทั่ง เจอเหตุการณ์ shock ชีวิต คือลบงานตัวเองทิ้งด้วยความเผลอนั่นล่ะ ทำให้หวนกลับมาคิดถึง ระบบที่เคยรักกัน

วันนี้ มาเสนอขายของ(ฟรี) อีกสักรอบ ในเรื่องของการทำ Source code control ในรูปแบบ SVN ดีกว่า เอาแบบสบายๆ ไม่เน้นทฤษฏี

การทำ Source code control มีหลายชื่อ ไม่ว่าจะเป็น Source control, Source code management, Srource code version control แต่ล้วนแล้วแต่มีเป้าหมายเดียวกันทั้งหมด คือการควบคุม และจัดการ Source code ถ้าอธิบายเพิ่มเติม คงต้องมาพูดกันถึงข้อดีของมัน น่าจะเข้าใจได้ง่ายกว่า จะได้ไม่งงกับศัพท์อะไรมากมาย โดยผมจะ base มาจากการใช้ SVN นะครับ เพราะว่าระบบอื่นยังไม่เคยใช้

source code มีระเบียบ - หลังจากที่เราใช้ระบบ source code control แล้ว เราจะสามารถดูวิวัฒนาการ ของ source code ที่เราเขียนได้  สามารถดู version ก่อนหน้า หรือ version แรกสุดนับตั้งแต่เราสร้างไฟล์แล้ว save ครั้งแรก ก็ยังได้เลยไม่ว่าจะผ่านการแก้ไขมากี่ครั้ง จุดไหน ยังไง ดูได้หมด

ย้อนกลับ เมื่อเกิดข้อผิดพลาดได้ - จากระบบ ที่ทำงานอยู่ดีๆ เราก็อยากเพิ่ม function ใหม่ ทำไป save ไปแล้ว ไฟดับ เปิดเครื่องขึ้นมาใหม่ พร้อมกับงานที่แก้จุดล่าสุด พอแก้จนเสร็จ พบว่า มันไปกระทบกับระบบโดยรวม ซึ่งทางออกที่ดีที่สุด คือการย้อนกลับไปจุดที่ก่อนจะแก้ ถึงตอนนั้น ก็ทำไม่ได้แล้ว เพราะว่าไฟดับ กด ctrl+z ย้อนกลับไปไม่ได้แล้ว ถ้าไม่มี backup ชีวิตคงมืดมนแน่นอน แต่เมื่อใช้ SVN แล้วไม่จำเป็นต้อง backup อะไรเลย

เรียกงานได้จากทุกที่ของมุมโลก ขอมีเพียง internet ก็แล้วกัน(ใช้กับ svn server) และทุกคน จะได้ source code ที่หน้าตาเหมือนกันทั้งหมดทุกครั้ง

ลดปัญหาจากการทำงานเดียวกันหลายๆคน เพราะว่าบางครั้ง 1 เว็บ หรือ 1 โปรเจค ไม่ได้ทำคนเดียว ดังนั้น เวลาจะเอา source ไฟล์มารวมกัน จะรู้ได้อย่างไร ว่าไฟล์อื่นๆที่เป็นไฟล์ส่วนกลางของใครใหม่กว่ากัน

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

รื้อฟื้นความจำน้อยลง งานเก่าๆที่เราเขียนไว้นานๆ หลายครั้ง ขนาดเขียนเองกับมือ ยังไม่อยากเปิดมาแก้เลย ดังนั้น ส่วนช่วยเหลือเช่น comment , wiki , blog ก็เข้ามาช่วยได้มาก

มี backup อยู่เสมอ ไม่ว่าจะฝนตกไฟดับ หรือแม้กระทั่งเครื่องพังไปเลย ก็ยังเอางานจากจุดล่าสุดมาทำต่อได้เสมอ (ใช้ักับ svn server)

จริงๆยังมีอีกเยอะล่ะครับ เพราะบริษัท software หลายๆที่เค้าบังคับพนักงานใช้ด้วยซ้ำ 

แต่จากที่ได้พบ ปัญหาของการทำ source code control ก็คือเรื่องของความคิด ถ้าได้ย้อนไปอ่านข้อผิดพลาดของผมที่เล่าให้ฟัง จะพบว่ามันเกิดจากผมเองทั้งนั้น เพราะว่าจริงๆ ระบบเค้าดี แต่เราเองนั่นล่ะ ที่เอามาใช้ไม่เป็น หรือไม่เหมาะสม ไม่ใส่ใจเพียงพอ ดังนั้น หากเมื่อเราสามารถเปลี่ยนความคิด ในการใช้เครื่องมือเหล่านี้ได้แล้วล่ะก็ ชีวิตเราจะดีขึ้นจริงๆครับ 

แต่อย่างไรก็ตาม meewebfree ที่ท่านได้อ่านอยู่นี้ ก็ใช้ SVN อยู่เหมือนกันนะครับ แม้ว่าจะไม่ใช่ทุกส่วนของเว็บก็ตาม (คราวหน้าจะปรับปรุงคร้าบ) 

สำหรับคนที่สนใจจะใช้ SVN ใช้ไม่ยากครับ แต่ต้องเข้าใจ

การทำงานของ SVN จะแบ่งเป็นสองส่วน คือ server กับ client โดยฝ่ายเราจะเรียกว่า client ซึ่งการจะทำงานต่างๆ จะต้องติดต่อกับ server โดยตลอด (เว้นแต่ส่วนที่ตรวจสอบการแก้ไขปรับปรุงไฟล์ จะเป็นหน้าที่ของ client ที่ตรวจว่าเป็นสีเขียวหรือแดง) 

โดยเราจะใช้โปรแกรมช่วยเราทำงาน เช่น Tortoise SVN client โดยตัวนี้ค่อนข้างเป็นที่นิยม เพราะว่ามีเมนูให้เราสั่งงานด้วยเม้าส์ได้ เนื่องจาก client โดยปกติของ SVN จะทำงานด้วย command line นั่นเอง ทำให้ยาก และต้องจำคำสั่งเยอะ

อีกส่วนที่เราจะขาดไม่ได้ นั่นคือส่วนของ server ซึ่ง เราจะต้องหาผู้ให้บริการ ที่มีอยู่พอประมาณ (ไม่มาก แต่ไม่น้อยไป) โดย server จะทำหน้าที่หลักในการเก็บไฟล์ของเรา และจัดทำ version แยกแยะความแตกต่างนี่แหล่ะครับ จึงเป็นสิ่งที่ขาดไม่ได้

ทั้งนี้ ส่วนของ server ก็มีทั้งฟรี และเสียเงินให้เลือกใช้ โดยผมจะมาแนะนำในครั้งต่อไป ว่าใช้ที่ไหนดี มีอยู่ในตัวเลือก สัก2-3ตัวแล้วครับ (ส่วนตัวผมเอง ได้เลือกเรียบร้อยแล้ว) รวมทั้งวิธีการใช้งาน โดยละเอียดเลยทีเดียว

ทั้งนี้ เพื่อคุณภาพของงานที่ทำ และเพื่อนประโยชน์ในอนาคตครับ โดยไม่ต้องหน้าชา ตัวแข็งเหมือนผม เมื่องานหาย

และในบทความต่อไปจะเป็นการใช้จริงแล้วนะครับ เพื่อที่จะได้ทำตามกันได้ และใช้เป็นต่อไปครับ

Create: Modify : 2010-10-08 10:12:43 Read : 6239 URL :