2016-02-24 17 views
5

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:

  1. 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.

  2. 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?

+0

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

risposta

1

Con una pianificazione corretta, la prima opzione sarà più semplice di quanto si pensi.

Git ha un sistema chiamato moduli costruito a destra in.

Version1 e Version2 pronti contro termine dovrebbe includere il repo Frameworks al loro interno. Quindi, quando aggiorni Framework, puoi estrarre quegli aggiornamenti senza problemi in Version1/2. Sei tu a controllare quando e come, quindi puoi essere certo di non introdurre un bug in fondo alla strada.

Ecco alcuni documentazione per sottomoduli: https://git-scm.com/book/en/v2/Git-Tools-Submodules https://git-scm.com/docs/git-submodule

Problemi correlati