Magento 1: cải thiện quy trình phát triển mô-đun của tôi (Modman, nhà soạn nhạc, git)


14

Đây là điều tôi đã có trong tâm trí khá lâu nhưng tôi không thể tìm ra phương pháp phù hợp để thực hiện.

Về cơ bản, tôi đang làm việc với 6 trang web khác nhau, tất cả đều chạy Magento CE 1.9.2+

Trên các trang web đó, tôi đang sử dụng một loạt các tiện ích mở rộng mà tôi và nhóm tôi đang làm việc đã phát triển (ở đây chúng tôi đang nói về hơn 50 tiện ích mở rộng) và mã cho các tiện ích mở rộng đó được lưu trữ trên Bitbucket. Vì vậy, tôi không phải là người duy nhất quản lý các tiện ích mở rộng đó, chúng tôi có 3 người làm việc với chúng.

Hiện tại, khi tôi muốn thêm một tính năng / sửa lỗi cho một trong những tiện ích mở rộng đó, đây là quy trình làm việc của tôi:

  • Cài đặt phiên bản cuối cùng của tiện ích mở rộng trên một trong các trang web thông qua Modman
  • Sửa lỗi / thêm tính năng / kiểm tra
  • Sao chép thủ công các thay đổi vào thư mục cục bộ chứa tất cả các tiện ích mở rộng của tôi
  • Cam kết và đẩy qua GIT từ thư mục tiện ích mở rộng này sang Bitbucket (repo 1 Bitbucket cho mỗi mô-đun)
  • Sau đó, phiên bản mới của mô-đun có thể được cài đặt thông qua Modman

Lưu ý quan trọng: Tôi đang sử dụng modman với bản cứng ở đây, không có symlink.

Vấn đề lớn nhất của tôi đã được tô đậm: Tôi muốn có thể bỏ qua bước này vì đó là nguyên nhân lớn của vấn đề (đôi khi một số tệp bị quên, sao chép / dán sai, liên quan đến hành động của con người).

Vì vậy, làm thế nào tôi có thể cải thiện quy trình làm việc của mình để thoát khỏi bước sao chép / dán thủ công này? Tôi đang mở để đề xuất ở đây.


Bạn đã thử Submodulestính năng của git?
Gopal Patel

Tại sao bạn sử dụng bản cứng? Với symlink, bạn chỉ cần có một bản sao git trong thư mục modman. Sau đó chỉ cần chỉnh sửa tại chỗ và chỉ cần đẩy.
Kristof tại Fooman

@KristofatFooman Tôi nên làm rõ điều đó. Một trong những nhà phát triển đang chạy Windows và do đó chúng tôi gặp vấn đề với các liên kết tượng trưng ^^
Raphael tại Digital Pianism


1
@RaphaelatDigitalPianism cho vấn đề cửa sổ hãy thử xem github.com/sitewards/modman-php
David Manners

Câu trả lời:


8

Tôi rất thường xuyên thực hiện cách tiếp cận sau đây là thuyết bất khả tri.

  1. Kiểm tra mô-đun bạn muốn chỉnh sửa để /path/to/my/module
  2. Tạo một nhánh cho tác phẩm của bạn (phân nhánh từ thẻ có liên quan, v.v.).
  3. Cam kết làm việc với chi nhánh này (không đẩy).
  4. Trong dự án của bạn, xác định một kho lưu trữ cục bộ cho bản sao mô-đun cục bộ của bạn. Điều này là để dự án của bạn có thể thu được những thay đổi chưa được xử lý từ LFS của bạn.

    {
        "repositories": [
        {
            "type": "path",
            "url": "/path/to/my/module"
        }
    ],
  5. Sau đó, bạn có thể soạn nhạc yêu cầu chi nhánh phát triển cụ thể của bạn (rất lâu nói rằng các dự án của bạn minimum-stabilitycho phép nó).

    composer require namespace/module dev-branch-name-here
  6. Bạn cam kết /path/to/my/module, composer update namespace/moduletrong dự án, xem nó cài đặt và thử nghiệm.

  7. Khi bạn hoàn thành squash cam kết của bạn và đẩy lên.

Tôi thấy cách tiếp cận này hoạt động tốt cho các mô-đun M1 bằng cách sử dụng https://github.com/Cotya/magento-composer-installer , vì cài đặt symlinked đôi khi có thể gây khó khăn cho bạn khi thêm các thư mục hoặc đường dẫn mới mà trước đây không được liên kết bởi modman.

Liên kết có thể quan tâm

Gỡ lỗi

  1. Sử dụng composer require namespace/module dev-branch-name-here -vvvđể xem các chi nhánh bạn có thể sử dụng tại địa phương.

  2. Kiểm tra kỹ minimum-stabilityđã được đặt thành devtrong dự án bạn đang cài đặt mô-đun vào.

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

Tìm thấy bằng cách đọc bình luận của Patrick Schwisow ở đây .

Nếu các gói khác có yêu cầu đối với gói bạn đang thay đổi, nhánh phát triển của bạn có thể không đáp ứng các yêu cầu đó (điều này sẽ dẫn đến "Yêu cầu của bạn không thể được giải quyết thành một gói gói có thể cài đặt được."). Để khắc phục điều này, bạn có thể thực hiện một bí danh nội tuyến để tất cả các gói khác sẽ xem nó như một phiên bản cụ thể.

Nói tóm lại, bạn có thể cập nhật composer.jsonđể buộc nó thành phiên bản cụ thể trong khi phát triển, làm cho nó đọc như sau:

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

Một cách tiếp cận thú vị khác ở đây. Cảm ơn bạn đã đóng góp
Raphael tại Digital Pianism

1
Đây là một người tốt. Tôi có xu hướng sử dụng pathrepos loại cho các mô-đun dự án mà tôi sẽ không sử dụng lại và sau đó git hoặc packagist cho các mô-đun tôi sẽ sử dụng lại.
Phong tục David

1
@DavidManners Tôi sử dụng luồng này ở trên kết hợp với satis. Các mô-đun là vĩnh viễn trong satis, nhưng tôi không muốn đẩy bất cứ thứ gì lên tuyến chính cho đến khi tôi đã thử nghiệm và chạy cục bộ. Vì vậy, nó sử dụng quy trình làm việc ở trên, sau đó đẩy và gắn thẻ và chờ satis chọn.
Luke Rodgers

@LukeRodgers, với quy trình công việc này, bạn hoàn toàn không sử dụng modman và tất cả các tệp mô-đun của bạn được đặt trong các tệp magento? (bạn không có thư mục .modman cho tiện ích mở rộng của mình). Tôi đã hiểu đúng chưa?
MployBy

Xin chào @MployBy, tôi không sử dụng modman trực tiếp. Tuy nhiên, tôi không chắc liệu trình cài đặt Cotya / magento-compoder có sử dụng nó dưới mui xe hay không, đã lâu rồi tôi mới thiết lập một mô-đun magento1 mới.
Luke Rodgers

6

Tôi đang sử dụng modman với bản cứng ở đây, không có symlink.

Có vấn đề của bạn. Nếu bạn không thể thay đổi thiết lập này cho việc triển khai cửa hàng của mình, hãy xem xét làm việc trên các tiện ích mở rộng được chia sẻ trên một trường hợp riêng biệt nơi bạn sử dụng modman với các liên kết tượng trưng.

Tôi sử dụng trình soạn thảo với trình cài đặt trình soạn thảo AOE để sao chép các kho lưu trữ mở rộng trực tiếp vào .modmannhưng cài đặt các mô-đun từ Git với modman cũng hoạt động. Dù bằng cách nào bạn cũng có thể làm việc trực tiếp trong kho Git của mô-đun.


Vâng như tôi đã nói trong các bình luận, lý do là một trong những nhà phát triển sử dụng Windows và IIRC, chúng tôi đã gặp một số vấn đề với anh ấy khi sử dụng symlink
Raphael tại Digital Pianism

6
Ồ, tôi đã không nhìn thấy điều đó. Cung cấp cho nhà phát triển đó một máy ảo :)
Fabian Schmengler

4

Vì vậy, ý tưởng của tôi ở đây cho bạn là bắt đầu làm việc với nhà soạn nhạc ngay cả đối với Magento1. Nếu bạn đã có riêng bạn packagist , mà không phải là quá khó để quản lý bây giờ mà AWS và google đám mây được đặt ra, hoặc bạn có thể sử dụng packagist công cộng. Bạn sẽ có quyền truy cập "dễ dàng" vào các phiên bản mới hơn trong các cửa hàng Magento1 của mình.

Điều này có nghĩa là khi một phiên bản mới hơn xuất hiện, bạn có thể composer updatevà nó sẽ tự động quá trình sao chép cho bạn.

Hãy xem https://github.com/Cotya/magento-composer-installer cho Magento1 thông qua nhà soạn nhạc.

Với cách tiếp cận này, bạn cũng có thể trực tiếp làm việc trên kho git trong thư mục nhà cung cấp nếu bạn đã cài đặt nó để sao chép .gitvà do đó có thể đẩy trở lại repos của họ mà không cần kiểm tra riêng. Mặc dù lưu ý rằng bạn phải cẩn thận ở đây và đảm bảo bạn biết bạn đang ở chi nhánh nào nếu không bạn có thể xóa mã của mình (thực hiện điều đó một vài lần).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.