วิธีการทำให้ Subversion ไม่สนใจ(ignore)ไฟล์หรือไดเร็คทอรี่ (Subversion and svn:ignore property)

หากใครเคยใช้ Subversion ก็คงจะทราบดีว่าในบางครั้งเราก็อาจจะมีไฟล์/ไดเร็คทอรี่ที่เราต้องการใช้เฉพาะบนเครื่องของเราเอง และไม่ต้องการที่จะ commit ไฟล์/ไดเร็คทอรี่เหล่านั้นกลับเข้าไปยัง repository ซึ่งโดยส่วนตัวกรณีที่เกิดขึ้นกับผมก็คือ ผมทำงานเขียนโปรแกรมภาษา Java ด้วย Eclipse IDE แต่ทีมของผมไม่ได้ใช้ Eclipse IDE กันทุกคน หรือแม้ว่ามีบางคนใช้ Eclipse IDE แต่ก็ก็ทำงานบน Environment ที่ต่างกันออกไป เช่นผมทำงานบน Linux แต่คนอื่น ๆ ในทีมใช้ Windows เป็นต้น ฉะนั้นผมจึงไม่ต้องการที่จะ commit ไฟล์ที่ เกี่ยวกับ Eclipse Project และ Binary File กลับเข้าไปใน repository เพราะว่า ถ้าผม commit ไฟล์นี้เข้าไปเวลาคนอื่น ๆ check out ออกมา ก็จะต้องมาแก้ไขไฟล์เหล่านั้นเพื่อให้เหมาะสมกับ environment ของตนอีก ซึ่งจะนำไปสู่การ conflict ของไฟล์เหล่านั้นได้ง่าย ๆ และ คงปวดหัวน่าดูในการ maintenance ไฟล์เหล่านี้ ฉะนั้นผมจึงต้องหาวิธีที่จะทำให้ Subversion ไม่สนใจไฟล์เหล่านี้ ซึ่งทำได้ง่าย ๆ ดังนี้...

ใน Subversion เราสามารถ กำหนดค่า property ให้กับไฟล์/ไดเร็คทอรี่ ใด ๆ ก็ได้ ซึ่ง Subversion ก็มี property อันหนึ่งที่ชื่อว่า svn:ignore ซึ่งใช้ในการระบุว่าไฟล์ใดบ้างที่เราไม่ต้องการให้ Subversion สนใจ

  1. เปิด Terminal (Command prompt) แล้วเข้าไปยังไดเร็คทอรี่ที่มีไฟล์ที่เราไม่ต้องการให้ subversion สนใจ
  2. เรียกใช้คำสั่งต่อไปนี้
    $ svn propedit svn:ignore .
  3. เมื่อเรียกคำสั่งในขั้นตอนที่แล้ว ก็จะมีโปรแกรม Text Editor ปรากฎขึ้นมาให้เพื่อให้เราใส่ชื่อไฟล์/ที่เราไม่ต้องการให้ Subversion สนใจ ซึ่งคุณอาจจะใส่ชื่อไฟล์เต็ม ๆ หรือใช้ wild card ร่วมด้วยก็ได้ เช่นในกรณีของผม มี 2 ไฟล์ (".classpath", ".project") กับ 1 ไดเร็คทอรี่ ("bin") ที่ผมไม่ต้องการให้ Subversion สนใจ ผมก็ชื่อไฟล์/ไดเร็คทอรี่ดังกล่าวเข้าไปใน Text Editor ดังนี้
    .classpath
    .project
    bin
  4. ซึ่งเมื่อเราปิดโปรแกรม Text Editor ก็จะมีข้อความต่องไปนี้แสดงที่ Terminal (Command Prompt)นี้
    Set new value for property 'svn:ignore' on '.'
  5. นอกจากนี้ถ้าเราต้องการตรวจสอบว่าค่าที่อยู่ใน svn:ignore ที่เราใส่ไปในขั้นตอนที่แล้วถูกต้องหรือไม่เราก็สามารถใช้คำสั่ง svn propget ตรวจสอบได้ดังนี้ครับ
    $ svn propget svn:ignore .
    .classpath
    .project
    bin
  6. หลังจากนั้นเราก็ commit ด้วยคำสั่งนี้ครับ
    $ svn commit .
    เป็นอันเสร็จเรียบร้อยครับ

เพียงง่าย ๆ แค่นี้เราก็ไม่ต้องรำคาญกับการที่ SVN Client แสดงชื่อไฟล์ต่าง ๆ ที่คุณไม่ต้องการให้ Subversion สนใจในตอนที่คุณจะ commit ไฟล์ต่าง ๆ กลับเข้าไปใน repository อีกแล้วครับ :)

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd><img> <object> <embed> <param>
  • Lines and paragraphs break automatically.
  • Images can be added to this post.

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Copy the characters (respecting upper/lower case) from the image.
ญาณรักข์ วรรณสาย