Sto creando un'applicazione che funzionerà su due versioni separate dello stesso software. Questi framework avranno moduli completamente diversi con una dipendenza condivisa da un framework JavaScript che ho creato.Dipendenza del compositore con piccole differenze nel file composer.json
Diciamo
dave/version1
dave/version2
che entrambi condividono la dipendenza attraverso una richiedono di
dave/framework
voglio mantenere questo quadro (dave/quadro) in un repository che sia del genitore i moduli possono richiedere. Tuttavia, la posizione in cui questi file framework devono essere posizionati è leggermente diversa tra i due moduli, insieme a requisiti leggermente diversi per i file composer.json per garantire che tutto venga spostato correttamente (le due versioni di questi software implementano il compositore in modo piuttosto diverso).
Con la mia limitata conoscenza del compositore e Git ho formulato un paio di soluzioni:
creare tre depositi, due repository involucro con file composer.json specifici per supportare ogni versione diversa del software. Con un'altra dipendenza da un terzo repository che contiene il framework attuale. Non sono sicuro che questo funzionerebbe mai al di fuori di una teoria. Inoltre finisce per essere un po 'disordinato.
Utilizzare una qualche forma di tag intelligente e fare in modo che version1 e version2 dipendano da versioni separate del framework che a loro volta avrebbero un trucco leggermente diverso. Il compositore avrebbe quindi difficoltà a tirare l'ultima versione del modulo, dato che avremmo eseguito due code code leggermente diverse nelle versioni strane.
Tuttavia entrambi sembrano potenzialmente disordinati e il modo errato di strutturare ciò che sto cercando di ottenere.
C'è un modo carino per raggiungere questo obiettivo? o sono migliore di mantenere due repository separati per il framework?
Credo che questa domanda è un duplicato di [Git ramificazione per la nuova variante di prodotto] (https://stackoverflow.com/q/15016201/1290731). La forma breve è, la tua prima idea è il modo più semplice, flessibile e diretto per farlo, e anche il modo giusto. I respositori annidati sono chiamati "sottomoduli" e c'è un comando per aiutare a litigare con i bit disordinati. Si riduce a un insieme impegnato di voci di configurazione predefinite per aiutare i cloni e alcuni preconfezionati preconfezionati per attività comuni. – jthill