Le definizioni dell'interfaccia dipendono da tutti i progetti che usano quell'interfaccia. Come gestisci questa dipendenza dipende dalla natura del progetto.
es. se le definizioni di interfaccia sono condivise tra progetti liberamente correlati, le definizioni di interfaccia dovrebbero avere versioni con versione chiaramente definita. Il codice generato può essere specificato come dipendenza tramite il gestore pacchetti della tua lingua. In particolare, questo pacchetto potrebbe essere una libreria di alto livello per l'utilizzo della tua interfaccia piuttosto che solo binding di basso livello. Dove possibile, questa è la soluzione ideale.
Se l'IDL non ha release chiare, se tutti i progetti sono evoluti insieme (dallo stesso team), o se è necessario rigenerare i binding per ogni progetto dipendente in ogni caso (ad esempio perché usano lingue diverse), quindi includendo il IDL tramite git submodule
è una soluzione decente, indipendente dalla lingua. Sarà necessario integrarlo manualmente nel processo di compilazione e impedire esternamente eventuali conflitti di versione. Un Submodule attacca uno specifico commit del repository incluso. Se si desidera aggiornare la descrizione dell'interfaccia, è necessario estrarre manualmente e impegnare la nuova versione per il sottomodulo in ciascun progetto dipendente. Tieni presente che alcuni strumenti di creazione potrebbero richiedere una configurazione aggiuntiva per i sottomoduli, specialmente se l'origine del sottomodulo non è disponibile pubblicamente.
La clonazione separata della descrizione dell'interfaccia potrebbe funzionare, ma significa che i progetti non sono più legati a una specifica versione dell'interfaccia che rende più difficile il debugging: le dipendenze dovrebbero essere esplicite. D'altra parte, l'aggiornamento della descrizione dell'interfaccia è più semplice: estrarre il repository clonato, quindi ricostruire tutte le dipendenze.
Non dovresti impegnare i file generati. Ciò rende inutilmente difficile rigenerare i binding se si modificano le definizioni dell'interfaccia:
- Il diff conterrà sia le modifiche effettive che le modifiche nei file generati.
- I file generati potrebbero essere modificati manualmente.
- L'IDL potrebbe essere modificato senza rigenerare i binding.
Se crei un pacchetto che viene utilizzato come dipendenza dai tuoi progetti, è possibile archiviare artefact, ma è diverso dal commit dei file generati al controllo del codice sorgente.