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
WorkApplicationcheSharedLibrary"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.)