Vendendo parte del mio repository nel progetto di qualcun altro

3

Ho un repository per un progetto che contiene sia un eseguibile che una libreria.

My repo
|->src
   |->my-exe
   |->my-lib

Ora sto lavorando con un'azienda che vuole usare la mia biblioteca anche nel loro progetto. Vogliono vendere (cioè creare una copia singola) di un sottoinsieme del mio repository nel loro repository.

Their repo
|->src
   |->their-exe
|->vendor
   |->src
      |->my-lib

Non useranno un sottomodulo o cloneranno il mio repository durante il tempo di costruzione. Vogliono una copia separata del mio codice. Sarò probabilmente quello che gestisce entrambi i set di codice sorgente.

Le mie domande sono: esiste un modo pulito per mantenere automaticamente sincronizzati i due set di codice in modo da poter gestire eventuali modifiche future da un singolo repository?

    
posta Neal Kruis 08.02.2017 - 20:16
fonte

2 risposte

2

Una possibile soluzione potrebbe essere il comando git subtree . Nel repository delle aziende: prima aggiungi il tuo repository (o in alternativa un fork locale) come remoto (non strettamente necessario, ma semplifica un po 'la roba)

git remote add lib https://myurl

Quindi controlla il tuo codice con un prefisso appropriato:

git subtree add --prefix vendor/src/my-lib lib master

(Puoi anche usare --squash se non vuoi che tutti quei commit nel repository della compagnia)

Per aggiornare, recupera e carica:

git fetch lib master
git subtree pull --prefix vendor/src/my-lib lib master

Puoi anche eseguire il commit delle modifiche locali e reinserirle nel repository:

git subtree push --prefix vendor/src/my-lib lib master

Gli utenti del repository aziendale non devono preoccuparsi di tutto questo, possono lavorare con il repository nei soliti modi.

Una (molto più dettagliata) descrizione di quanto sopra può anche essere trovata in questo Blog di Atlassian .

    
risposta data 10.02.2017 - 10:30
fonte
0

They won't use a submodule or clone my repository during build time.

Penso che questo sia un problema XY. Loro e / o non sembrano capire cosa sia una forchetta o come mantenerla. Non sarebbe stato clonato durante il tempo di compilazione . Sarebbe stato clonato una volta quando il progetto è stato creato e resterà completamente sotto il loro controllo, proprio come il resto del loro progetto. Potrebbero mantenere la versione originale per sempre, o aggiornarla dalla versione upstream come meglio credono.

    
risposta data 09.02.2017 - 20:25
fonte

Leggi altre domande sui tag