เครื่องมือทดสอบ Gitignore
วางกฎ .gitignore และรายการพาธของไฟล์เพื่อดูว่าไฟล์ใดบ้างที่ถูกละเว้น กฎและบรรทัดใดที่แน่นอน และกฎการปฏิเสธใดที่ไม่ทำงานอย่างเงียบๆ เนื่องจากไดเร็กทอรีหลักถูกละเว้นแล้ว
ผลลัพธ์
"เหตุใดการปฏิเสธ .gitignore ของฉันจึงไม่ทำงาน" เป็นหนึ่งในคำถามเกี่ยวกับคอมไพล์ที่พบบ่อยที่สุด และคำตอบที่ตรงไปตรงมาก็มักจะเหมือนเดิมเสมอ นั่นคือ `!รูปแบบ` ที่พยายามรวมไฟล์เข้าไปใหม่ภายในไดเร็กทอรีที่กฎก่อนหน้านี้ได้แยกออกไปแล้วจะไม่สามารถทำงานได้ เนื่องจากคอมไพล์จะไม่ลงมายังไดเร็กทอรีที่ถูกละเว้นเพื่อตรวจสอบทุกสิ่งในไดเร็กทอรีนั้นอีกครั้ง เครื่องมือนี้จะปรับใช้อัลกอริธึมการจับคู่ .gitignore จริงของ git อีกครั้ง ไม่ใช่การประมาณค่า โดยเฉพาะเพื่อให้สามารถจับและอธิบายสถานการณ์ที่แน่นอนนั้นได้ พร้อมกับกฎรูปแบบอื่นๆ ที่ git รองรับ
วางกฎ .gitignore ของคุณลงในช่องเดียวและรายการเส้นทางของไฟล์ (หนึ่งรายการต่อบรรทัด เช่น `dist/index.js`, `node_modules/foo/bar.js` หรือ `.env`) ลงในอีกช่องหนึ่ง และเครื่องมือจะประเมินแต่ละเส้นทางเหมือนกับที่ git ทำได้ นั่นคือ ข้ามความคิดเห็นและบรรทัดว่าง ช่องว่างต่อท้ายจะถูกถอดออกเว้นแต่ว่าจะใช้ Escape เครื่องหมาย `!` นำหน้าจะปฏิเสธกฎ `/` นำหน้า ยึดมันไว้ที่รูทแทนที่จะปล่อยให้มันจับคู่ที่ความลึกใดๆ ส่วน `/` ต่อท้ายจะจำกัดมันไว้ที่ไดเร็กทอรี และ `*`, `?`, คลาสอักขระ `[abc]` และ `**` (จับคู่ข้ามขอบเขตไดเร็กทอรี) ทั้งหมดทำงานตามกฎ glob ที่จัดทำเอกสารไว้
ในเชิงวิกฤต เส้นทางจะถูกตรวจสอบไดเร็กทอรีทีละไดเร็กทอรีตั้งแต่รูทลงมา เช่นเดียวกับที่กลไกการละเลยของ git ทำงาน ไม่ใช่โดยการทดสอบพาธแบบเต็มกับทุกกฎที่แยกออกจากกัน นั่นคือสิ่งที่ทำให้สามารถตรวจจับกรณี dead-negation ได้อย่างถูกต้อง: หากละเว้น `dist/` ในบรรทัดที่ 3 และ `!dist/keep.js` ในภายหลังพยายามช่วยเหลือไฟล์หนึ่งไฟล์ที่อยู่ภายในนั้น เครื่องมือนี้จะรายงานว่า `dist/keep.js` ยังคงถูกละเว้น ตั้งชื่อกฎบรรทัดที่ 3 เป็นเหตุผล และแยกแฟล็กการปฏิเสธว่าเป็นเงาแทนที่จะแสร้งทำเป็นว่ามันใช้งานได้โดยไม่เงียบงัน
ตารางผลลัพธ์จะทำให้ทุกเส้นทางที่ทดสอบมีแถวเป็นของตนเอง โดยมีคำตัดสินที่ละเลยใช่/ไม่ใช่อย่างชัดเจน ข้อความกฎและหมายเลขบรรทัดที่แน่ชัดที่ตัดสินเส้นทางนั้น และบันทึกภาษาธรรมดาที่อธิบายการปฏิเสธแบบบดบังหรือกฎไดเร็กทอรีหลักที่สืบทอดมา เมื่อใดก็ตามที่เกี่ยวข้อง นั่นคือรายละเอียดที่เปลี่ยน .gitignore ที่สับสนให้กลายเป็นรายละเอียดที่คุณสามารถให้เหตุผลได้ก่อนที่จะตัดสินใจ