Magento 1: การปรับปรุงกระบวนการพัฒนาโมดูลของฉัน (Modman, ผู้แต่ง, git)


14

นี่คือสิ่งที่ฉันคิดอยู่ในใจมาระยะหนึ่งแล้ว แต่ฉันไม่สามารถหาวิธีที่ถูกต้องได้

โดยพื้นฐานแล้วฉันทำงานกับ 6 เว็บไซต์ที่แตกต่างกันทั้งหมดใช้ Magento CE 1.9.2+

ในเว็บไซต์เหล่านั้นฉันใช้ส่วนขยายจำนวนมากที่ฉันและทีมที่ฉันทำงานด้วยกำลังพัฒนา (ที่นี่เรากำลังพูดถึงส่วนขยาย 50+) และรหัสสำหรับส่วนขยายเหล่านั้นจะถูกเก็บไว้ใน Bitbucket ดังนั้นฉันไม่ใช่คนเดียวที่จัดการส่วนขยายเหล่านั้นเราเป็น 3 คนที่ทำงานกับพวกเขา

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

  • ติดตั้งส่วนขยายรุ่นล่าสุดบนหนึ่งในเว็บไซต์ผ่าน Modman
  • แก้ไขข้อบกพร่อง / เพิ่มคุณสมบัติ / ทดสอบ
  • คัดลอกการเปลี่ยนแปลงไปยังโฟลเดอร์ท้องถิ่นด้วยตนเองที่มีส่วนขยายทั้งหมดของฉัน
  • ตกลงและผลักดันผ่าน GIT จากโฟลเดอร์ส่วนขยายนี้ไปยัง Bitbucket (1 Bitbucket repo ต่อโมดูล)
  • จากนั้นโมดูลรุ่นใหม่สามารถติดตั้งผ่าน Modman

หมายเหตุสำคัญ: ฉันใช้ modman กับ hardcopy ที่นี่ไม่มี symlink

ปัญหาที่ใหญ่ที่สุดของฉันได้รับการเน้นด้วยตัวหนา: ฉันต้องการข้ามขั้นตอนนี้เพราะเป็นสาเหตุใหญ่ของปัญหา (บางไฟล์ถูกลืมบางครั้งคัดลอก / วางผิดเกี่ยวข้องกับการกระทำของมนุษย์)

ดังนั้นฉันจะปรับปรุงกระบวนการทำงานของฉันเพื่อกำจัดขั้นตอนคัดลอก / วางด้วยตนเองได้อย่างไร ฉันเปิดรับข้อเสนอแนะที่นี่


คุณได้ลองSubmodulesคุณสมบัติของคอมไพล์แล้วหรือยัง?
Gopal Patel

ทำไมคุณถึงใช้ hardcopy ด้วย symlinks คุณควรมี clit git ใต้โฟลเดอร์ modman จากนั้นเพียงแค่แก้ไขในสถานที่และเพียงแค่ผลักดัน
Kristof ที่ Fooman

@KristofatFooman ฉันควรจะชี้แจงว่า หนึ่งในนักพัฒนาใช้ Windows ดังนั้นเราจึงมีปัญหาเกี่ยวกับ symlinks ^^
Raphael ที่ Digital Pianism


1
@RaphaelatDigitalPianism สำหรับปัญหา windows ลองดูที่github.com/sitewards/modman-php
David Manners

คำตอบ:


8

ฉันมักจะใช้วิธีการต่อไปนี้ซึ่งเป็นกรอบไม่เชื่อเรื่องพระเจ้า

  1. ลองดูโมดูลที่คุณต้องการแก้ไข /path/to/my/module
  2. สร้างสาขาสำหรับชิ้นงานของคุณ (แยกออกจากแท็กอื่น ๆ ที่เกี่ยวข้อง)
  3. มุ่งมั่นทำงานกับสาขานี้ (อย่าผลักดัน)
  4. ในโครงการของคุณกำหนดที่เก็บในเครื่องไปยังสำเนาในเครื่องของโมดูล นี่คือเพื่อให้โครงการของคุณสามารถดึงการเปลี่ยนแปลงที่ไม่ได้ชำระจาก LFS ของคุณ

    {
        "repositories": [
        {
            "type": "path",
            "url": "/path/to/my/module"
        }
    ],
  5. จากนั้นคุณสามารถแต่งเพลงต้องการสาขาการพัฒนาเฉพาะของคุณ (ตราบใดที่โครงการของคุณminimum-stabilityอนุญาต)

    composer require namespace/module dev-branch-name-here
  6. ที่จะกระทำใน/path/to/my/module, composer update namespace/moduleในโครงการเห็นมันติดตั้งและทดสอบ

  7. เมื่อคุณทำสควอชเสร็จแล้วก็ให้คอมเม้นและดันขึ้น

ฉันพบว่าวิธีการนี้ใช้งานได้ดีสำหรับโมดูล M1 โดยใช้https://github.com/Cotya/magento-composer-installerเนื่องจากการติดตั้ง symlinked อาจทำให้เกิดความเจ็บปวดในบางครั้งและเดินทางคุณเมื่อเพิ่มไดเรกทอรีหรือเส้นทางใหม่ซึ่งก่อนหน้านี้ไม่ได้เชื่อมโยงกัน โดย modman

ลิงค์ที่น่าสนใจ

แก้จุดบกพร่อง

  1. ใช้composer require namespace/module dev-branch-name-here -vvvเพื่อดูสาขาที่คุณสามารถใช้ในเครื่อง

  2. ตรวจสอบอีกครั้งที่minimum-stabilityกำหนดไว้devในโครงการที่คุณกำลังติดตั้งโมดูลเข้า

  3. Your requirements could not be resolved to an installable set

พบโดยการอ่านความคิดเห็นของแพทริค Schwisow ของที่นี่

หากแพ็คเกจอื่นมีข้อกำหนดเกี่ยวกับแพ็คเกจที่คุณกำลังเปลี่ยนแปลงสาขาการพัฒนาของคุณอาจไม่สามารถปฏิบัติตามข้อกำหนดเหล่านั้นได้ (ซึ่งจะส่งผลให้ "ข้อกำหนดของคุณไม่สามารถแก้ไขเป็นชุดแพคเกจที่ติดตั้งได้") ในการแก้ไขปัญหานี้คุณสามารถทำนามแฝงแบบอินไลน์เพื่อให้แพ็คเกจอื่น ๆ ทั้งหมดเห็นว่าเป็นรุ่นเฉพาะ

ในระยะสั้นคุณสามารถอัปเดตของคุณcomposer.jsonเพื่อบังคับให้เป็นรุ่นเฉพาะในขณะที่การพัฒนาทำให้อ่าน:

"namespace/module": "dev-branch-name-here as 1.2.3"

อีกวิธีที่น่าสนใจที่นี่ ขอบคุณสำหรับข้อมูลของคุณ
ราฟาเอลที่ Pianism ดิจิตอล

1
นี่เป็นสิ่งที่ดี ฉันมักจะใช้pathrepos ประเภทสำหรับโมดูลโครงการที่ฉันจะไม่ใช้ซ้ำแล้ว git หรือแพ็กเกจสำหรับโมดูลที่ฉันจะใช้อีกครั้ง
เดวิดมารยาท

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

@LukeRodgers ด้วยขั้นตอนการทำงานนี้คุณไม่ได้ใช้ modman เลยและไฟล์โมดูลทั้งหมดของคุณจะอยู่ในไฟล์ magento หรือไม่? (คุณไม่มีโฟลเดอร์. modman สำหรับส่วนขยายของคุณ) ฉันเข้าใจถูกต้องหรือไม่
MployBy

สวัสดี @ พนักงานโดยฉันไม่ได้ใช้ modman โดยตรง อย่างไรก็ตามฉันไม่แน่ใจว่า Cotya / magento-comperer-installer ใช้ภายใต้ประทุนหรือไม่ฉันเพิ่งจะเริ่มใช้โมดูล magento1 ใหม่ได้ไม่นาน
ลุค Rodgers

6

ฉันใช้ modman กับ hardcopy ที่นี่ไม่มี symlink

มีปัญหาของคุณ หากคุณไม่สามารถเปลี่ยนการตั้งค่านี้สำหรับการปรับใช้ร้านค้าของคุณให้พิจารณาทำงานกับส่วนขยายที่ใช้ร่วมกันในอินสแตนซ์แยกต่างหากที่คุณใช้ modman ด้วย symlink

ฉันใช้นักแต่งเพลงกับตัวติดตั้งตัวแต่งเพลง AOEเพื่อโคลนที่เก็บส่วนขยายโดยตรง.modmanแต่การติดตั้งโมดูลจาก Git กับ modman ก็ทำงานเช่นกัน ทั้งสองวิธีนี้คุณสามารถทำงานได้โดยตรงในที่เก็บโมดูล Git


ใช่ที่ฉันพูดในความคิดเห็นเหตุผลเป็นหนึ่งใน dev ใช้ Windows และ IIRC เรามีปัญหาบางอย่างกับเขาโดยใช้
symlink

6
โอ้ฉันไม่เห็นว่า มอบ VM ให้ผู้นั้น :)
Fabian Schmengler

4

ดังนั้นความคิดของฉันที่นี่สำหรับคุณคือการเริ่มทำงานกับนักแต่งเพลงแม้แต่สำหรับ Magento1 หากคุณมีผู้บรรจุหีบห่อของคุณเองซึ่งไม่ยากเกินกว่าจะจัดการได้ในตอนนี้ที่ aws และ google cloud อยู่ในสถานที่หรือคุณสามารถใช้ผู้แบ่งบรรจุสาธารณะ คุณจะสามารถเข้าถึง "เวอร์ชั่นใหม่" ได้ง่ายขึ้นในร้านค้า Magento1 ของคุณ

ซึ่งหมายความว่าเมื่อรุ่นที่ใหม่กว่าออกมาคุณก็สามารถcomposer updateทำสำเนาได้โดยอัตโนมัติ

ดูที่https://github.com/Cotya/magento-composer-installerสำหรับ Magento1 ผ่านผู้แต่ง

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

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