Magento 1: usprawnienie pracy z modułem (Modman, kompozytor, git)

14

To jest coś, o czym myślałem od dłuższego czasu, ale nie mogę znaleźć właściwej metody, aby to zrobić.

Zasadniczo pracuję z 6 różnymi stronami internetowymi, wszystkie z Magento CE 1.9.2+

Na tych stronach używam wielu rozszerzeń, które opracowałem wraz z zespołem, z którym pracuję (tutaj mówimy o rozszerzeniach ponad 50), a kod tych rozszerzeń jest przechowywany na Bitbucket. Więc nie jestem jedyną osobą zarządzającą tymi rozszerzeniami, pracujemy nad nimi 3 osoby.

W tej chwili, gdy chcę dodać funkcję / naprawić błąd dla jednego z tych rozszerzeń, oto mój przepływ pracy:

  • Zainstaluj ostatnią wersję rozszerzenia na jednej ze stron za pośrednictwem Modmana
  • Napraw błąd / dodaj funkcję / test
  • Ręcznie skopiuj zmiany do lokalnego folderu zawierającego wszystkie moje rozszerzenia
  • Zatwierdź i wypchnij przez GIT z tego folderu rozszerzenia do Bitbucket (1 repozytorium Bitbucket na moduł)
  • Następnie nową wersję modułu można zainstalować za pośrednictwem Modmana

Ważna uwaga: używam tutaj modmana z wydrukiem, bez dowiązania symbolicznego.

Mój największy problem został wyróżniony pogrubioną czcionką: chcę móc pominąć ten krok, ponieważ jest to duża przyczyna problemów (czasami niektóre pliki są zapomniane, nieprawidłowe kopiowanie / wklejanie wymaga działania człowieka).

Jak mogę poprawić przepływ pracy, aby pozbyć się tego kroku ręcznego kopiowania / wklejania? Jestem otwarty na sugestie tutaj.

Raphael at Digital Pianism
źródło
czy wypróbowałeś Submodulesfunkcję git?
Gopal Patel,
Dlaczego używasz papierowej kopii? W przypadku dowiązań symbolicznych powinieneś mieć klon git w folderze modman. Następnie po prostu edytuj w miejscu i po prostu wciśnij.
Kristof at Fooman
@KristofatFooman Powinienem to wyjaśnić. Jeden z programistów korzysta z systemu Windows, dlatego mieliśmy problemy z dowiązaniami symbolicznymi ^^
Raphael at Digital Pianism
1
@RaphaelatDigitalPianism dla problemu z Windows spróbuj spojrzeć na github.com/sitewards/modman-php
David Manners

Odpowiedzi:

8

Bardzo często stosuję następujące podejście, które jest dość niezależne od ram.

  1. Sprawdź moduł, w którym chcesz edytować /path/to/my/module
  2. Utwórz gałąź dla swojego dzieła (rozgałęzienie odpowiedniego znacznika itp.).
  3. Zaakceptuj pracę w tym oddziale (nie wypychaj).
  4. W swoim projekcie zdefiniuj lokalne repozytorium do lokalnej kopii modułu. Dzieje się tak, aby Twój projekt mógł pobierać nieprzypisane zmiany z LFS.

    {
        "repositories": [
        {
            "type": "path",
            "url": "/path/to/my/module"
        }
    ],
  5. Następnie kompozytor może wymagać konkretnej gałęzi programistycznej (tak długo, jeśli minimum-stabilitypozwalają na to projekty ).

    composer require namespace/module dev-branch-name-here
  6. Zobowiązać się /path/to/my/module, composer update namespace/modulew ramach projektu, zobaczyć go zainstalować i przetestować.

  7. Kiedy skończysz, zgniataj swoje zobowiązania i pchnij się w górę.

Uważam, że to podejście działa dobrze w przypadku modułów M1 przy użyciu https://github.com/Cotya/magento-composer-installer , ponieważ instalacja z linkami symbolicznymi może czasami sprawiać kłopot i wywołuje problemy podczas dodawania nowych katalogów lub ścieżek, które wcześniej nie były linkami symlink przez modman.

Linki, które mogą zainteresować

Debugowanie

  1. Użyj, composer require namespace/module dev-branch-name-here -vvvaby zobaczyć gałęzie, z których możesz korzystać lokalnie.

  2. Sprawdź dwukrotnie, które minimum-stabilityzostało ustawione devw projekcie, w którym instalujesz moduł.

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

Znaleziono, czytając komentarz Patricka Schwisowa tutaj .

Jeśli inne pakiety mają wymagania dotyczące zmienianego pakietu, gałąź programistyczna może nie spełnić tych wymagań (co spowoduje, że „Twoje wymagania nie będą mogły zostać rozwiązane w instalowalnym zestawie pakietów”). Aby to naprawić, możesz zrobić wbudowany alias, aby wszystkie inne pakiety widziały go jako konkretną wersję.

Krótko mówiąc, możesz zaktualizować, composer.jsonaby wymusić na konkretnej wersji podczas programowania, aby brzmiał:

"namespace/module": "dev-branch-name-here as 1.2.3"
Luke Rodgers
źródło
Kolejne interesujące podejście tutaj. Dzięki za wkład
Raphael at Digital Pianism
1
Ten jest dobry. I mają tendencję do używania pathtypu repo dla modułów projektowych że przyzwyczajenie I ponownego użycia i następnie git lub packagist modułów będę ponownym użyciem.
David Manners
1
@DavidManners Używam tego przepływu powyżej w połączeniu z satis. Moduły są na stałe w satis, ale nie chcę pchać niczego do głównej linii, dopóki nie przetestuję i nie uruchomię lokalnie. Więc użyj powyższego przepływu pracy, a następnie naciśnij i oznacz i poczekaj, aż satis go odbierze.
Luke Rodgers
@LukeRodgers, w tym przepływie pracy w ogóle nie używasz modmana, a wszystkie pliki modułów są umieszczane w plikach magento? (nie masz folderu .modman dla swoich rozszerzeń). Czy dobrze to zrozumiałem?
MployBy
Hej @MployBy, nie używam bezpośrednio modmana. Jednak nie jestem pewien, czy Cotya / magento-kompozytor-instalator używa go pod maską, minęło trochę czasu, odkąd skonfigurowałem nowy moduł magento1.
Luke Rodgers
6

Używam tutaj modmana z wydrukiem, bez dowiązania symbolicznego.

To twój problem. Jeśli nie możesz zmienić tej konfiguracji dla wdrożeń w sklepie, rozważ pracę nad współużytkowanymi rozszerzeniami w osobnej instancji, w której używasz modmana z dowiązaniami symbolicznymi.

Używam kompozytora z instalatorem AOE do klonowania repozytoriów rozszerzeń bezpośrednio do, .modmanale przypuszczam, że instalowanie modułów z Git za pomocą modmana również działa. Tak czy inaczej możesz pracować bezpośrednio w module repozytorium Git.

Fabian Schmengler
źródło
Tak, jak powiedziałem w komentarzach, powodem jest to, że jeden z deweloperów używa Windowsa i IIRC mieliśmy z nim pewne problemy przy użyciu dowiązań symbolicznych
Raphael w Digital Pianism
6
Nie widziałem tego. Daj temu
deweloperowi maszynę
4

Więc moim pomysłem tutaj jest rozpoczęcie współpracy z kompozytorem nawet dla Magento1. Gdybyś miał własnego paczkę , który nie jest zbyt trudny do zarządzania teraz, gdy dostępna jest aws i chmura Google, lub możesz użyć pakietu publicznego. Będziesz miał „łatwy” dostęp do nowszych wersji w swoich sklepach Magento1.

Oznacza to, że gdy pojawi się nowsza wersja, możesz to zrobić composer updatei zautomatyzuje to proces kopiowania.

Zajrzyj na https://github.com/Cotya/magento-composer-installer dla Magento1 przez kompozytora.

Dzięki takiemu podejściu możesz również bezpośrednio pracować na repozytorium git w folderze dostawcy, jeśli masz ustawione kopiowanie w celu, .gita więc możesz wypchnąć zmienione z powrotem do repozytoriów bez oddzielnej kasy. Pamiętaj jednak, że musisz tu uważać i upewnić się, na której gałęzi jesteś, w przeciwnym razie możesz usunąć kod (zrobiłem to kilka razy).

David Manners
źródło