Come posso aggiungere repository remoti in Mercurial?


99

Sto lavorando con i repository Git nel modo seguente:

  • Ho il repository principale e diversi telecomandi sulle diverse macchine di produzione.
  • Sto spingendo il codice di produzione sui telecomandi e riavvio i servizi affinché le modifiche abbiano effetto.

Sto per passare da Git a Mercurial e mi piacerebbe sapere in anticipo come posso ottenere qualcosa del genere.

Risposte:


130

Aggiungi voci alla [paths]sezione del .hg/hgrcfile del tuo clone locale . Ecco un esempio di una sezione che andrebbe nel .hg/hgrcfile:

[paths]
remote1 = http://path/to/remote1
remote2 = http://path/to/remote2

È quindi possibile utilizzare comandi come hg push remote1inviare i changeset a quel repository. Se si desidera che l'aggiornamento del repository remoto sia una directory di lavoro, è necessario inserire un changegrouphook in quella posizione remota che esegue un aggiornamento. Sarebbe qualcosa del tipo:

[hooks]
changegroup = hg update 2>&1 > /dev/null && path/to/script/restart-server.sh

Non tutti sono un grande fan del fatto che i repository remoti aggiornino automaticamente le loro directory di lavoro su push, e certamente non è l'impostazione predefinita.


23
Per chiunque voglia solo vedere l'uso dei telecomandi hg pathsche è equivalente a git remote -v.
Keyo

5
default-push (invece di, ad esempio, remote1) consente di digitare solo "hg push". Viene quindi utilizzato il repository push predefinito. Molto utile.
Christian

6
@Christian default-pushè necessario / utile solo se il tuo solito target push è diverso dalla tua solita sorgente pull. Se sono uguali (o non tiri mai), allora è defaultsufficiente.
Ry4an Brase

2
Solo per aggiungere ancora di più su questo: se hai entrambi default-pushe defaultnel tuo file di configurazione, il primo verrà utilizzato per il push e il secondo per il pull. Se vuoi eseguire il push e il pull dallo stesso repository remoto (cosa che probabilmente farai se stai usando Mercurial in modo centralizzato), allora inserisci solo defaultil file. Sarebbe fantastico se aggiungessero una piccola opzione della riga di comando per farlo al primo tentativo ... (o forse sono troppo una persona CVS ;-))
tiktak

Ho Mercurial v2.6.2 installato sul mio Mac e il file per impostare i percorsi è in .hg/hgrc(nessun DOT prima del nome del file).
Regis Zaleman

9

se vuoi aggiungere il percorso predefinito, devi lavorare con il defaulttuo ~project/.hg/hgrcfile. Come segue:

[paths]
default = https://path/to/your/repo

In bocca al lupo.


5

Potresti dare un'occhiata al plug-in GitHub di hg-git :

idea generale di hg-git

aggiungendo la possibilità di eseguire il push e il pull da un repository del server Git da Mercurial.
Ciò significa che puoi collaborare a progetti basati su Git da Mercurial o utilizzare un server Git come punto di collaborazione per un team con sviluppatori che utilizzano sia Git che Mercurial.

Nota: non ho testato quello strumento con le ultime versioni di Mercurial.


1
Ho la possibilità di portare tutto su Mercurial, vorrei utilizzare un solo strumento per la mia gestione dei sorgenti. Converti una volta che il repository ha creato le strutture appropriate e quindi solo i comandi Mercurial per la produzione. Sono abbastanza consapevole che sia git che mercurial possono collaborare, ma non l'ho mai provato.
topless

2
^ Chris: anche la tua domanda: come faccio a convertire i repository Git in quelli Mercurial? ", O" come dichiarare / configurare il repository Hg remoto? "(Come in superuser.com/questions/43686/… ), o" dove un remote è dichiarato in Hg? "( crazythinking.wordpress.com/2009/03/07/… )
VonC

0

Se sei su Unix e hai Git installato, puoi usare questa funzione bash per aggiungere prontamente un percorso ai telecomandi senza un editor di testo:

add-hg-path() {
    git config -f $(hg root)/.hg/hgrc --add paths.$1 $2
    awk '{$1=$1}1' $(hg root)/.hg/hgrc > /tmp/hgrc.tmp
    mv /tmp/hgrc.tmp $(hg root)/.hg/hgrc
}

Quindi invocalo con:

$ add-hg-path remote1 https://path.to/remote1

Se qualcuno volesse creare un equivalente Powershell, vorrei includere anche quello. Altri potenziali miglioramenti includono il controllo degli errori sui parametri e il factoring della chiamata a $(hg root).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.