การพึ่งพาโครงการ Git บน GitHub


14

ฉันได้เขียนกรอบ PHP และ CMS ที่ด้านบนของกรอบ CMS นั้นขึ้นอยู่กับเฟรมเวิร์ก แต่มีเฟรมเวิร์กเป็นโฟลเดอร์ที่มีในตัวเองภายในไฟล์ CMS ฉันต้องการรักษาพวกเขาเป็นโครงการแยกต่างหากใน GitHub แต่ฉันไม่ต้องการยุ่งกับการปรับปรุงโครงการ CMS ทุกครั้งที่ฉันปรับปรุงกรอบ โดยหลักการแล้วฉันต้องการให้ CMS ดึงไฟล์เฟรมเวิร์กเพื่อรวมไว้ในไดเรกทอรีย่อยที่กำหนดไว้ล่วงหน้าแทนที่จะทำการคอมไฟล์เหล่านั้น

เป็นไปได้ด้วย Git / GitHub? ถ้าเป็นเช่นนั้นฉันต้องรู้อะไรบ้างเพื่อให้ใช้งานได้ โปรดจำไว้ว่าฉันมีประสบการณ์ขั้นพื้นฐานมาก ๆ กับ Git - ฉันสามารถสร้างที่เก็บและคอมมิชชันโดยใช้ปลั๊กอิน Git สำหรับ Eclipse เชื่อมต่อกับ GitHub และนั่นเป็นเรื่องเกี่ยวกับมัน ฉันกำลังทำงานเดี่ยวในโครงการดังนั้นฉันไม่ต้องเรียนรู้มากขึ้นเกี่ยวกับ Git แต่ฉันต้องการเปิดให้ผู้อื่นได้เห็นในอนาคตและฉันต้องการให้แน่ใจว่าฉันทำถูกต้อง

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


ตรวจสอบแผนผัง
นิค

คำตอบ:


11

ก่อนอื่นถ้าคุณต้องการใช้ git จริงๆให้ลองใช้ฟังก์ชั่น Submodule :

การสนับสนุน submodule ของ Git อนุญาตให้ที่เก็บประกอบด้วยไดเรกทอรีย่อยการชำระเงินของโครงการภายนอก Submodules รักษาเอกลักษณ์ของตนเอง การสนับสนุน submodule เพียงแค่เก็บตำแหน่งที่เก็บ submodule และยอมรับ ID ดังนั้นนักพัฒนาคนอื่น ๆ ที่โคลนโครงการที่มี ("superproject") สามารถโคลนทั้งหมดที่ submodules ในการแก้ไขเดียวกันได้อย่างง่ายดาย การชำระเงินบางส่วนของ superproject นั้นเป็นไปได้: คุณสามารถบอกให้ Git โคลนได้บางส่วนหรือทั้งหมดของ submodules

หน้าที่เชื่อมโยงนั้นมีการสนทนาอย่างละเอียดรวมถึงตัวอย่างวิธีการใช้งานอย่างถูกต้อง

ที่กล่าวว่าฉันจะแนะนำไม่ให้ใช้ระบบการควบคุมรุ่นของคุณสำหรับการจัดการการพึ่งพาและค่อนข้างเริ่มใช้เครื่องมือสร้างที่สามารถจัดการกับสิ่งเหล่านี้ให้คุณเช่นMavenหรือมด มีแม้กระทั่งเครื่องมือสร้าง PHP เฉพาะในการพัฒนาที่เรียกว่าPhingแต่ฉันยังไม่ได้ใช้ด้วยตัวเอง มันถูกกล่าวถึงในบทความที่กล่าวถึงคำถามของคุณ: การควบคุมเวอร์ชัน = การจัดการพึ่งพา!

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


+1 - ขอบคุณ Deckard ฉันคิดว่า Git มีอะไรบางอย่างเหมือนกับ Submodules ฉันไม่รู้ว่ามันถูกเรียกว่าอะไร ฉันจะลองดูที่ Phing อย่างแน่นอน ฉันต้องการเครื่องมือสร้าง PHP ที่จัดการการอ้างอิงใช้การทดสอบหน่วยแล้วนำไปใช้กับไซต์ของฉัน ดูเหมือนว่า Phing อาจทำทุกสิ่งได้ ดูเหมือนว่าจะใช้เวลาสักครู่ในการเรียนรู้ คุณรู้จัก screencasts ที่ดีสำหรับ Phing หรือไม่ (Google ไม่ได้เป็นคนใจดีในเรื่องนั้น)
VirtuosiMedia

ลิงก์ไปยัง "ฟังก์ชั่น Submodule" ใช้งานไม่ได้และลิงก์ไปยัง "การควบคุมเวอร์ชัน! = การจัดการการพึ่งพา" ก็ใช้งานไม่ได้เช่นกัน
Ferrybig

6

Git Submodulesเป็นวิธีที่ยอดเยี่ยมในการจัดการการพึ่งพาโครงการGit

หากคุณกำลังมองหาแนวทางอื่น:

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

เพิ่มเติมเกี่ยวกับนักแต่งเพลง:

นักแต่งเพลงเป็นเครื่องมือสำหรับการจัดการการพึ่งพาใน PHP จะช่วยให้คุณประกาศห้องสมุดขึ้นอยู่กับความต้องการของโครงการและจะติดตั้งพวกเขาในโครงการของคุณ

บน หน้าเอกสารคุณจะพบตัวอย่างของวิธีสร้างไฟล์ composer.json ของคุณ:

// Composer.json    
{

    "name": "acme/blog",
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/composer/hello-world"
        }
    ],
    "require": {
        "acme/hello-world": "dev-master"
    }
}

เมื่อคุณมีไฟล์ composer.json และ composer.lock ของคุณสร้างขึ้นสำหรับโครงการของคุณคุณสามารถติดตั้งการพึ่งพาได้ง่าย ๆ :

composer.phar install หรืออัปเดตพวกเขา: composer.phar update หรือสร้างโครงการเฉพาะจากผู้ทำแพ็กเกจ : composer.phar create-project acmeproject


1

เมื่อเร็ว ๆ นี้ฉันเริ่มใช้เครื่องมือที่เรียกว่าPundleเพื่อจัดการการพึ่งพาของโครงการ รองรับเวอร์ชัน PHP, แพ็คเกจแพร์, Git Repositories และ SVN Repository เป็น Dependencies และอนุญาตให้ระบุได้ง่าย ๆ ผ่าน "Pundlefile"

คุณควรกำหนดค่าการพึ่งพาของคุณเพื่อให้การตรวจสอบ Git / SVN ถูกใส่ไว้ในไดเรกทอรีที่ไม่ได้อยู่ภายใต้การควบคุมเวอร์ชัน (เช่น "ผู้ขาย") เพื่อให้คุณเริ่มต้นใหม่ในการชำระเงินทุกครั้ง

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