Domanda

Ho cercato di seguire le istruzioni nella risposta a questa domanda, usando il forno.

Vorrei poter organizzare le cose come segue:

  • /somepath/thirdparty mappe a un repository di forno "terzo" e contiene codice assortito
  • /somepath/common mappe a un repository "comune" e contiene codice condiviso che ho scritto

e

  • /somepath/project1 Maps to Kiln Repository "Project1"
  • /somepath/project1/thirdparty mappe alla filiale di terzi sopra
  • /somepath/project1/common mappe al ramo di comune sopra

e

  • /somepath/project2 Maps to Kiln Repository "Project1"
  • /somepath/project2/thirdparty mappe ad un altro ramo di terzo sopra
  • /somepath/project2/common mappe a un altro ramo di comune sopra

L'ho scoperto quando ho creato il .hgsub File come indicato e aggiunto/spinto al forno, non potevo più visualizzare i file del forno nel visualizzatore del file Web del forno: mostrava un messaggio oscuro sul "surriscaldamento del forno" :-) Inoltre, mentre creava automaticamente le sottocartelle all'interno Il posto corretto, non erano popolati con file, (probabilmente perché il tiro non è riuscito).

Qualcuno ha provato qualcosa di simile prima, usando il forno?

Dato che ho intenzione di sviluppare una serie di app usando il codice comune (e potenzialmente rilasciare la libreria come open source), vorrei averlo gestito in repository discreti. Poiché alcuni dei progetti sono per i clienti finali, tuttavia, devo essere in grado di dare loro un singolo repository che include le cose sopra descritte.

È stato utile?

Soluzione

Il forno fa Attualmente non supportano subrepos che utilizzano URL nidificati sul server. Ciò significa che non puoi far funzionare entrambi i seguenti URL:

http://server/kiln/somepath/project1
http://server/kiln/somepath/project1/thirdparty

Quindi dovresti configurare il forno in modo da averlo quattro repository sul server:

http://server/kiln/somepath/project1
http://server/kiln/somepath/project2
http://server/kiln/somepath/thirdparty
http://server/kiln/somepath/common

È facile: solo quattro repository normali. Quindi clone "progetto" e crea il .hgsub File con:

thirdparty = http://server/kiln/somepath/thirdparty
common = http://server/kiln/somepath/common

Quando lo spingi indietro in forno, noteranno e visualizzerà collegamenti per i subrepositori. Tuttavia, i subrepositori non finire per essere nidificato sul server. Quindi non ce ne sarà nessuno project1/thirdparty Percorso sul server.

È anche tutt'altro che chiaro che lo vorresti. Quando hai diversi progetti che collaborano e utilizzano una base di codice comune, allora vuoi "Project1" e "Project2" per ottenere le reciproche modifiche a questa base di codice comune. Quindi è molto utile che il common Subbrepo in entrambi i progetti spingono e tirano da http://server/kiln/somepath/common.

In mercuriale, noi Normalmente raccomandare che usi percorsi della forma common = common nel .hgsub file. Ciò significa che il server deve supportare repository nidificati. Quando il kiln non supporta repository nidificati, è possibile utilizzare percorsi completi.

Quando inizialmente si impostano i subrepositori, ricorda che è necessario aggiornarli manualmente. Quindi, con gli URL sopra, imposteresti "Project1" eseguendo:

$ hg clone http://server/kiln/somepath/project1
$ echo "common =     http://server/kiln/somepath/common" > .hgsub
$ echo "thirdparty = http://server/kiln/somepath/thirdparty" > .hgsub
$ hg commit -m "Created subrepos"

Questo crea subrepositori vuoti iniziali. Sono vuoti perché non hai detto a Mercurial quale cambio di cui hai bisogno. Questo è monitorato .hgsubstate dove troverai:

0000000000000000000000000000000000000000 common
0000000000000000000000000000000000000000 thirdparty

Per popolare i subrepositori che fai

$ cd common
$ hg pull --update
$ cd ../thirdparty
$ hg pull --update
$ cd ..
$ hg commit -m "Updated subrepos"

Questo aggiorna il 000... linee in .hgsubstate con gli ID modifiche alla punta corrente per i due subrepos. I cloni futuri di "Project1" noteranno il .hgsubstate File e assicurati di aggiornare i subrepos alla revisione menzionata lì.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top