Come organizzare progetti con dipendenze su BitBucket?

6

Sia Mercurial che BitBucket fanno un'assunzione fondamentale: 1 repo = 1 progetto.

Se ho un progetto che ha una dipendenza (una libreria) che è condivisa da molti progetti, questa ipotesi si intromette. Ora non è più possibile avere una pagina BitBucket separata per ogni progetto, pur essendo in grado di eseguire revisioni atomiche su più progetti.

Se metto tutti i progetti in un unico repository, diventano tutti un "progetto" su BitBucket. Se li metto in repository separati, non è più possibile sapere quale versione del progetto della libreria era in uso alla revisione X di un progetto dipendente.

In che modo questa situazione si risolve normalmente su BitBucket o non c'è esplicitamente alcun supporto per questo scenario comune?

    
posta Timwi 01.10.2012 - 23:58
fonte

3 risposte

4

Mercurial ha la funzione Sottorepository che essenzialmente gestisce la configurazione degli altri repository . È estremamente semplice da configurare.

Tutto ciò che devi fare è creare il file .hgsub in questo modo:

src/app         = https://bitbucket.org/<user>/app
src/framework   = https://bitbucket.org/<user>/framework
src/library     = https://bitbucket.org/<user>/library

Un repository per riga, percorso a sinistra, URL a destra. Quando ti impegni, Mercurial preleverà quei repository e ti chiederà le credenziali. Dopodiché, e ogni volta che esegui il commit, il file .hgsubstate cambierà automaticamente in base agli stati dei tuoi sottorepos (revisione, diramazione o qualsiasi altra cosa hai selezionato in ciascuno di essi).

27442cb5903128c6f817e2943030b9297a0d569f src/app
4d11fabc8a6121ceb07e11ddd81fb1e4ad2f5980 src/framework
8d6f570174a535839c189cf84d04f5ae5253a253 src/library

Il lato sinistro rappresenta l'hash, il lato destro il percorso del repository. Questo file è in versione, ma come ho detto prima, viene modificato automaticamente da mercurial.

Quindi, se esegui un commit su src / app, l'hash cambierà. Quando si è soddisfatti della combinazione di stati in ciascun sottorepo, si commette il repository padre. * BLAM! * , hai gestione della configurazione .

Modifica : ho appena scoperto l'estensione Hg Guest Repo e penso che sia proprio quello che bisogno, citando:

Extension for enterprises needing to handle modules and components

Hg subrepos do not handle the sharing of components well, due to 
the recursive merge from the top (super) repo and requirement to 
lock at a specific version.

Guestrepo's goal is to overcome these limitations.

The guestrepo extension does not change any existing Mercurial 
 behavior. It only adds new commands.
    
risposta data 02.10.2012 - 02:46
fonte
3

Both Mercurial and BitBucket make one fundamental assumption: 1 repo = 1 project.

Penso che tu abbia torto, almeno sulla parte Mercurial. Ho più progetti all'interno dello stesso repository Mercurial e funziona molto bene per me (e per molti altri).

Come per BitBucket, è costruito attorno al concetto di repository e non va molto oltre. Fornisce un wiki di base e un bug tracker, ma è non uno strumento di gestione del progetto. Se hai bisogno di una pagina wiki separata per progetto, dovresti considerare l'utilizzo di un wiki esterno o di uno strumento di gestione del progetto.

    
risposta data 02.10.2012 - 01:53
fonte
1

git ha sottomoduli

sembra che hg abbia subrepository

    
risposta data 02.10.2012 - 00:30
fonte

Leggi altre domande sui tag