วิธีที่เหมาะสมในการตรวจสอบการส่งข้อมูลใน Git คืออะไร?


13

เป้าหมายของฉันคือตรวจสอบข้อมูลการส่งมอบที่ไม่ตรงตามข้อกำหนดบางอย่างจากนั้นปฏิเสธการส่งข้อมูลที่สร้างหรือผลักดันไปยังที่เก็บข้อมูลระยะไกล

ปัญหาของการทำเบ็ด pre-commit คือมันเป็นเรื่องยากที่จะปรับใช้กับคนจำนวนมากที่ต้องอัปเดตไฟล์ hook ก่อนทำหน้าที่ด้วยตนเอง เช่นกัน Git ไม่อนุญาตให้คุณมี submodules ในโฟลเดอร์. git ซึ่งง่ายสำหรับการปรับใช้

ตัวเลือกอื่น ๆ ที่ฉันเห็นกำลังทำการตรวจสอบในฉันเชื่อว่า hook การอัพเดททางด้านระยะไกลซึ่งจะตรวจสอบการคอมมิทแต่ละครั้งที่ถูกส่งโดย dev และปฏิเสธการพุชหากคอมมิชชันใด ๆ ล้มเหลวในการทดสอบ

ใครบ้างมีความเข้าใจในปัญหานี้หรือไม่? และถ้าเป็นเช่นนั้นคุณสามารถให้หรือชี้ให้ฉันดูตัวอย่างเบ็ด update script ได้หรือไม่ ฉันสับสนเล็กน้อยว่ามันทำงานอย่างไร


4
นี่เป็นคำถามแรกที่ดีมาก
Daenyth

คำตอบ:


7

คุณต้องคิดก่อนว่าคุณไม่ต้องการให้รหัสที่ไม่มีเงื่อนไขถูกยืนยันหรือถูกผลัก / เผยแพร่กลับสู่ต้นน้ำ

ในความคิดของฉันภายหลังเป็นไปได้มากขึ้น

ด้วย DVCS เช่นคอมไพล์ คุณไม่ต้องการควบคุมวิธีที่นักพัฒนาซอฟต์แวร์ทุกคนใช้ที่เก็บในเครื่องของเขา และคุณไม่สามารถควบคุมมันได้

เบ็ดที่ผูกมัดไว้ล่วงหน้าทำงานได้ดีเช่นเดียวกับการตรวจสอบความถูกต้องเบื้องต้นและการฆ่าเชื้อหากทุกคนที่เกี่ยวข้องยอมรับด้วยความสมัครใจ เราบังคับใช้อย่างจริงจังใน บริษัท ของเรา git commit --no-verifyแต่มันจะสามารถข้ามกับ

ในทางกลับกันฝั่งเซิร์ฟเวอร์จะไม่แทรกแซงเวิร์กโฟลว์ของโปรแกรมเมอร์และทำให้แน่ใจว่าคนอื่น ๆ ในโครงการจะทำงานเฉพาะในรหัสที่ตรงตามเกณฑ์ที่กำหนดเท่านั้น ปกติแล้วนี่คือสิ่งที่ผู้คนมองหาเมื่อใช้การตรวจสอบอัตโนมัติ

การตรวจสอบอัตโนมัตินี้ไม่ได้หมายถึงการแทนที่การควบคุมคุณภาพฉันเดาซึ่งโดยปกติจะทำได้ด้วยการตรวจสอบรหัสหรือการเขียนโปรแกรมคู่

หากคุณคุ้นเคยกับGitHubคุณจะสังเกตเห็นว่า "คำขอการดึง" เป็นอีกแนวทางหนึ่งในการแก้ไขปัญหานี้ โครงการโอเพ่นซอร์สหลายแห่งและ บริษัท ต่างๆใช้คำขอดึงของ GitHub สำหรับการควบคุมสิทธิ์ในสาขาและการตรวจสอบโค้ด แต่มันต้องมีปฏิสัมพันธ์กับมนุษย์ดังนั้นจึงอาจไม่ใช่สิ่งที่คุณต้องการ


1

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

โซลูชันมาตรฐานจะเป็นตะขอด้านเซิร์ฟเวอร์ คุณอาจติดตั้งpre-receiveตะขอซึ่งจะวิ่งทุกครั้งที่มีการกดและสามารถปฏิเสธการกดได้ถ้าต้องการ ส่วนที่เหลือขึ้นอยู่กับการตรวจสอบที่แน่นอนที่คุณต้องการ

นี่คือคำอธิบายในโปร Gitบทที่7.3 การปรับแต่ง Git - Git เบ็ด


ขอบคุณสำหรับคำตอบของคุณและฉันรักเว็บไซต์ Git ใหม่จริงๆ ปัญหาเดียวของฉันคือมันยากที่จะเริ่มต้นในการเขียน hooks กระทำของคุณเองโดยเฉพาะอย่างยิ่งเพราะคุณไม่รู้ว่าคุณอยู่ตรงไหนในกระบวนการและสิ่งที่คุณควรตรวจสอบ หากฉันกำลังพยายามเขียนขอรับล่วงหน้าฉันจะสมมติว่ารีโมทมีสาขาการติดตามว่าฉันกำลังผลักหรือไม่ ฉันจะรู้ได้อย่างไร ฉันหวังว่าจะมีคุณสมบัติบางอย่างของคอมไพล์ที่จะช่วยให้คุณสามารถจำลองสิ่งที่คุณมีในเวลานี้
dalanmiller
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.