Tag Archives | GIT

git post-receive hook & npm

อาทิตย์นี้ทำ script เพื่อให้รัน test ทุกครั้งที่ push เจออะไรแปลกๆ บางอย่างเเมื่อใช้คู่กับ npm ที่สั่งให้ install dependencies หลังจาก push สำเร็จแล้ว ความแปลกอยู่ที่ถ้าไฟล์ package.json ใช้ private repo ที่ชี้ไปยัง git repo อื่นจะไม่สามารถ install dependencies ด้วย post-receive hook ได้ขึ้น error ทุกครั้งประมาณว่าไม่สามารถ checkout branch ออกมาได้ ทางแก้แบบชั่วคราวตอนนี้คือแก้ npm source เองตามด้านล่าง diff ด้านบนเพื่อให้ skip error ชั่วคราวแต่ถ้าจะแก้จริงๆ คงต้องไล่ให้มากกว่านี้ก่อน สำหรับ script เจ้าปัญหาคือ runtest.js ที่เห็นด้านบนเป็น script ทำมือเพื่อรวม test ทั้งหมดมารันทีเดียว วางแผนไว้ว่าจะทำให้มันดูดีกว่านี้แต่ยังขี้เกียจอยู่ [...]

Read full story Comments { 0 }

คำสั่ง git ที่ใช้ประจำ

หลังจากใช้ git เป็นประจำมาปี เลยอยากจดคำสั่งที่ใช้ประจำเสียหน่อย โดยเฉพาะช่วงนี้ที่เอามาทำ automate test แบบต่างๆ git clone [--bare] <url> คำสั่งนี้เป็นคำสั่งแรกสุดที่ทุกคนน่าจะใช้กันไว้สำหรับดึง repo มาเก็บไว้ในเครื่อง git checkout <folder/file/branch> เป็นอีกคำสั่งที่ใช้บ่อย และดันมีสองแบบด้วยคือ ไว้ reset file ที่ยังไม่ได้ add เข้า stage รอ commit เพื่อให้ได้ไฟล์ต้นฉบับมา กับเปลี่ยน branch ใช้บ่อยทั้งสองแบบเลย git clean [-x] [-X] [-d] [-f] [-n]  ป็นคำสั่งที่มีประโยชน์มากเวลาจะทดลองอะไรที เพื่อกำจัดไฟล์ที่เกิดขึ้นตอน dev แล้วลองอะไรเล็กน้อย สั่งทีไฟล์ที่ไม่ต้องการ แฟ้มที่ไม่ต้องการทั้งหมดจะหายไป (ขึ้นอยู่กับ option ที่เติมเข้ามา -x บอกว่าลบไฟล์ทั้งหมดรวมถึงไฟล์ที่ไม่ได้ใส่เข้า repo มาก่อน, -X เฉพาะไฟล์ที่ใส่เข้ามาใน repo, [...]

Read full story Comments { 1 }

Remember git password when cloning from HTTP

Short note for GIT Create file .netrc in home directory Append machine record with username and password in that file with format In OSX, change username to login. Clone/Push again from netrc machine shouldn’t show any username/password prompt anymore.

Read full story Comments { 0 }

GIT Sparse checkout

หลังจากเริ่มย้ายมาใช้ git ถาวรปัญหาหนึ่งที่เจอแบบไม่คาดคิดคือไฟล์บางไฟล์ใน *nix ไม่สามารถ clone ออกมาได้เพราะข้อจำกัดของระบบไฟล์ Windows ที่ห้ามให้ชื่อไฟล์มีตัวอักษร ‘:’ ซึ่งดันมีอยู่ในบางไฟล์ของ source FreeBSD (ยังมีเรื่องภาษาไทยอีกแต่นั่นต้องแก้อีกวิธี) จนเห็นพี่ @i_nook หา sparse checkout ก็สงสัยว่าใช้ทำอะไรจนมาอ๋อตอนที่เห็น tweet link นี้เข้า ขั้นตอนการทำก็เริ่มจาก Clone repository ด้วย เพื่อ clone ออกมาแต่ไม่ checkout ตามด้วยกำหนดให้ repository ให้ใช้ sparsecheckout กำหนดว่า path ไหนจะ checkout ออกมา สุดท้าย checkout ออกมา ข้อดีของวิธีนี้นอกจากจะประหยัดเนื้อที่แล้ว ยังสามารถเลือกไม่เอา path ที่มีปัญหาออกมาได้ด้วย พรุ่งนี้คงได้ลองกับ Tortoise ว่าจะทำได้หรือป่าว แต่ก็น่าจะมี Option ให้ตั้งเหมือนกัน ไว้ถ้าไม่ได้ค่อยมาเพิ่มอีกที

Read full story Comments { 6 }

Hello, GIT again.

อาทิตย์นี้เตรียมงานใหญ่ย้าย VCS Project หลักจาก SVN ไป GIT ซึ่งคาดเดาไว้แล้วว่าต้องเจอปัญหาแน่นอน ก็คิดไม่ผิดเสียจริงๆ แต่ทำคราวนี้พบว่าเดี๊ยวนี้ GIT มีตัวช่วยสำหรับ HTTP แล้วเรียกว่า Smart HTTP ขั้นตอนก็ต่างจากคราวที่แล้วนิดหน่อย แต่คราวนี้จะตัดส่วน Trac ทิ้งทั้งหมด เพราะสิ่งที่ทำให้ลำบากชีวิตมากสุดก็คือ Trac นั่นเอง (นั่งทำให้มันแสดง source ได้กับ repository ที่มีขนาดใหญ่นี่ไม่สนุกเลย) เริ่มจากแก้ไข Apache ให้รู้ว่า URL ไหนจะเป็น repository สำหรับ path ของ git-http-backend ก็ขึ้นอยู่กับตำแหน่งที่ลงหรือ OS เพราะถ้าเป็น FreeBSD git-http-backend จะอยู่ที่ /usr/local/libexec/git-core/git-http-backend แทน จากนั้นกำหนดให้ Apache ตรวจสอบคนที่จะ push/pull หรือถ้าอยากให้ใคร clone ก็ได้แต่ถ้าต้องการ push ต้อง [...]

Read full story Comments { 0 }