Quelli tra noi che sviluppano software non solo per vivere, ma anche per hobby, hanno probabilmente riscontrato il seguente scenario:
Dì, c'è un progetto al lavoro chiamato WorkApplication
su cui lavori insieme a un certo numero di colleghi. Supponiamo che questa applicazione stia utilizzando una libreria chiamata SharedLibrary
che è in fase di sviluppo, il che significa che verrà eseguito il refactoring su SharedLibrary
, e qualsiasi refactoring deve essere convertito a WorkApplication
, in modo che WorkApplication
compili sempre e corre.
Ovviamente, affinché funzioni, ogni volta che qualcuno apre WorkApplication
nel proprio IDE, deve anche aprire SharedLibrary
.
-
Nel linguaggio di Visual Studio, questo renderebbe sia
WorkApplication
cheSharedLibrary
"project" sotto la stessa "soluzione". -
Nel linguaggio IntelliJ IDEA sarebbero "moduli" sotto lo stesso "progetto".
-
Nel linguaggio di Eclipse, sarebbero "progetti" sotto lo stesso "spazio di lavoro".
Ora, supponiamo che tu abbia anche un progetto di casa HomeApplication
con cui giochi a casa, (da solo,) in cui vuoi anche usare SharedLibrary
. (Supponiamo che al posto di lavoro non importi se usi SharedLibrary
per le tue cose, proprio come non ti importa se il posto di lavoro beneficia del lavoro che hai messo su SharedLibrary
mentre lavori a casa.)
Ovviamente, ogni volta che si rifatta il SharedLibrary
, si desidera che questo venga applicato in cascata non solo a WorkApplication
, ma anche a HomeApplication
. Supponiamo che tu sia l'unico sviluppatore responsabile per SharedLibrary
, quindi è improbabile che i tuoi colleghi lo modifichino, quindi non devi preoccuparti del fatto che SharedLibrary
venga mai rifattorizzato da qualcuno che non sa nulla di HomeApplication
. Quello che vuoi essere sicuro è che ogni volta che rifattori SharedLibrary
, indipendentemente dal fatto che lo stai facendo nel contesto del lavoro o dell'hobby, sia WorkApplication
che HomeApplication
saranno sempre aggiornati.
Come fai a destreggiarti tra queste tre entità per mantenere tutto aggiornato?
Il problema sembra essere che diverse parti della soluzione / progetto / spazio di lavoro dovranno trovarsi in diversi repository di codice sorgente: WorkApplication
e SharedLibrary
devono essere nel repository del tuo posto di lavoro, mentre HomeApplication
ha bisogno essere nel tuo repository home.
Non sono sicuro di come combinare più repository di codice sorgente sotto la stessa soluzione / progetto / spazio di lavoro. Può essere fatto? Qualcuno l'ha provato? Funziona? Quali problemi sono comuni?
Posso immaginare scenari in cui perdi i vantaggi delle operazioni del sistema di controllo della versione dall'interno dell'IDE, e invece fai tutto il tuo aggiornamento / impegno usando strumenti esterni, ogni volta separatamente per ciascun repository, ma può farlo in qualche modo dall'interno l'IDE?
Non voglio legare questa domanda a nessun IDE specifico, ma lasciatemi solo menzionare che l'IDE che mi interessa di più è IntelliJ IDEA. (Sfortunatamente, trovo che le opzioni relative a VCS di IntelliJ IDEA siano molto confuse: sembra che potrei essere in grado di definire più server VCS all'interno dello stesso progetto, ma non è chiaro come.)