Bagaimana cara menambahkan repositori jarak jauh di Mercurial?

99

Saya bekerja dengan repositori Git dengan cara berikut:

  • Saya memiliki gudang utama dan beberapa remote pada mesin produksi yang berbeda.
  • Saya mendorong kode produksi ke remote dan memulai ulang layanan agar perubahan diterapkan.

Saya akan beralih dari Git ke Mercurial dan saya ingin tahu sebelumnya bagaimana saya bisa mencapai sesuatu seperti itu.

topless
sumber

Jawaban:

130

Anda menambahkan entri ke [paths]bagian .hg/hgrcfile klon lokal Anda . Berikut adalah contoh bagian yang akan masuk ke dalam .hg/hgrcfile:

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

Anda kemudian dapat menggunakan perintah seperti hg push remote1mengirim kumpulan perubahan ke repo itu. Jika Anda ingin repo jarak jauh itu diperbarui adalah direktori kerja, Anda harus memasang changegrouppengait di lokasi terpencil yang melakukan pembaruan. Itu akan terlihat seperti:

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

Tidak semua orang menyukai memiliki remote repo secara otomatis memperbarui direktori kerja mereka saat push, dan ini tentu saja bukan default.

Ry4an Brase
sumber
23
Untuk siapa saja yang hanya ingin melihat penggunaan remote hg pathsyang setara git remote -v.
Keyo
5
default-push (alih-alih misalnya remote1) memungkinkan seseorang untuk mengetik "hg push". Repositori push default kemudian digunakan. Sangat membantu.
Christian
6
@Christian default-pushhanya diperlukan / berguna jika target push Anda yang biasa berbeda dari sumber pull biasanya. Jika keduanya sama (atau Anda tidak pernah menarik) maka defaultsudah cukup.
Ry4an Brase
2
Hanya untuk menambahkan lebih banyak tentang ini: jika Anda memiliki keduanya default-pushdan defaultdi file konfigurasi Anda, maka yang pertama akan digunakan untuk mendorong dan yang terakhir untuk menarik. Jika Anda ingin mendorong dan menarik dari repo jarak jauh yang sama (yang mungkin Anda lakukan jika Anda menggunakan Mercurial dengan cara yang terpusat), maka masukkan saja ke defaultdalam file. Akan sangat keren jika mereka menambahkan sedikit opsi baris perintah untuk melakukannya pada dorongan pertama ... (atau mungkin saya terlalu menyukai CVS ;-))
tiktak
Saya memiliki Mercurial v2.6.2 diinstal di Mac saya, dan file untuk mengatur jalurnya .hg/hgrc(tidak ada DOT sebelum nama file).
Regis Zaleman
9

jika Anda ingin menambahkan jalur default, Anda harus bekerja dengan defaultdi ~project/.hg/hgrcfile Anda . Sebagai berikut:

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

Semoga berhasil.

Akash
sumber
5

Anda dapat melihat plugin hg-git GitHub :

ide umum hg-git

menambahkan kemampuan untuk mendorong dan menarik dari repositori server Git dari Mercurial.
Ini berarti Anda dapat berkolaborasi pada proyek berbasis Git dari Mercurial, atau menggunakan server Git sebagai titik kolaborasi untuk tim dengan pengembang menggunakan Git dan Mercurial.

Catatan: Saya belum menguji alat itu dengan Mercurial versi terbaru.

VonC
sumber
1
Saya memiliki kemampuan untuk memindahkan semuanya ke lincah, saya hanya ingin menggunakan satu alat untuk manajemen sumber saya. Konversi setelah repositori membangun struktur yang sesuai dan kemudian hanya perintah lincah untuk produksi. Saya agak sadar bahwa git dan mercurial dapat berkolaborasi tetapi tidak pernah mencobanya.
topless
2
^ Chris: jadi pertanyaan Anda: bagaimana cara mengubah repo Git menjadi Mercurial? ", Atau" bagaimana mendeklarasikan / menyiapkan repo Hg jarak jauh? "(Seperti di superuser.com/questions/43686/… ), atau" di mana a remote dideklarasikan dalam Hg? "( crazythinking.wordpress.com/2009/03/07/… )
VonC
0

Jika Anda menggunakan Unix dan menginstal Git, Anda dapat menggunakan fungsi bash ini untuk dengan mudah menambahkan jalur ke remote tanpa editor teks:

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
}

Kemudian panggil dengan:

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

Jika seseorang ingin membangun Powershell yang setara, saya ingin memasukkannya juga. Peningkatan potensi lainnya termasuk pemeriksaan kesalahan pada parameter dan memfaktorkan panggilan ke $(hg root).

Jason R. Coombs
sumber