Pertanyaan Mercurial dengan banyak proyek


Saya memiliki beberapa proyek dengan siklus rilis yang berbeda yang duduk di gudang SVN saya. Rilis dibuat dengan menggunakan struktur tag klasik di SVN. Ketika ada bug untuk diperbaiki dalam rilis, cabang dibuat dari tag, bug diperbaiki dan kemudian digabung dari sana ke dalam trunk.

Sekarang, untuk beberapa alasan, saya ingin beralih dari SVN ke lincah dengan situs pusat push.

Pertanyaan: Manakah cara terbaik dalam berkeinginan untuk mengatur beberapa proyek yang berbagi kode kecil di antara mereka? Haruskah saya membuat beberapa situs push, satu untuk setiap proyek?

Harap sertakan dalam jawaban deskripsi tentang cara membuat kembali tag rilis saya, cabang bugfix, ... dengan versi desain repositori yang Anda sukai.

Edit: Saya ingin menginstal ekstensi sesedikit mungkin.

Edit2:

Mengingat tata letak SVN ini:

.
|-- project-a
|   |-- branches
|   |   |-- 1.x
|   |   `-- feature-1
|   |-- tags
|   `-- trunk
`-- project-b
    |-- branches
    |-- tags
    |   |-- 1.0
    |   `-- 1.1
    `-- trunk

(terima kasih @bendin! :))

Apakah lebih baik untuk bekerja dengan beberapa repositori push hg

project_a-trunk
project_a-1.x
project_a-feature-1
project_b-trunk

untuk cabang-cabangnya. Tag dilipat ke cabang yang sesuai.

Atau lebih baik Anda pergi dengan dua repositori push dalam contoh ini

project_a
project_b

dengan cabang bernama dan karena itu beberapa kepala dalam satu repo.

Keuntungan yang saya lihat dengan beberapa repositori kepala adalah bahwa saya tidak harus pergi berburu untuk tag di beberapa repo. Kerugian yang saya lihat adalah bahwa buku hg tampaknya mencegah beberapa repo head. Apa yang akan Anda lakukan?


32
2018-05-30 10:35


asal


Jawaban:


Beberapa repositori subversi akan mengelompokkan hal-hal yang tidak berhubungan secara logis (yaitu proyek dengan nomor versi berbeda dan siklus rilis) di bawah satu batang:

.
|-- branches
|   |-- project-a-1.x
|   `-- project-a-feature-1
|-- tags
|   |-- project-a-1.0
|   |-- project-b-1.0
|   `-- project-b-1.1
`-- trunk
    |-- project-a
    `-- project-b

Tata letak semacam ini tidak memiliki analog langsung dalam lincah. Setiap proyek yang memiliki siklus rilisnya sendiri dan memiliki nomor versi harus memiliki repositori sendiri.

Beberapa repositori subversi disusun untuk melakukan hal ini dengan memberikan setiap proyek sendiri batang, tag dan cabangnya:

.
|-- project-a
|   |-- branches
|   |   |-- 1.x
|   |   `-- feature-1
|   |-- tags
|   `-- trunk
`-- project-b
    |-- branches
    |-- tags
    |   |-- 1.0
    |   `-- 1.1
    `-- trunk

Anda dapat menganggap setiap proyek sebagai repositori logis dalam repositori subversi fisik Anda. Setiap proyek memiliki batang, tag, dan ranting sendiri. Ini juga memiliki manfaat bahwa Anda dapat menyimpan nama tag dan cabang lebih pendek karena Anda sudah tahu proyek mana mereka berasal.

Tata letak ini juga sepele untuk diungkapkan dengan alat seperti lincah. Setiap "proyek" menjadi repositori lincah. Tag dan cabang dalam repositori itu adalah tag dan cabang dari proyek itu.


12
2018-05-30 10:59



Seperti kata bendin, Anda harus membuat banyak repositori, satu untuk setiap proyek independen sebagai permulaan.

Komitmen mercurial dibuat sebagai level repositori dan Anda tidak dapat melakukan checkout hanya pada satu subdirektori. Ini tidak seperti Subversion yang memungkinkan Anda untuk membuat komitmen yang konsisten dengan hanya melakukan beberapa file, tetapi kemudian juga memungkinkan Anda untuk memeriksa hanya satu subdirektori.

Ketika Anda membuat rilis, Anda biasanya akan menambahkan tag ke repositori Mercurial Anda (hg tag). Anda dapat dengan bebas memutuskan apakah Anda ingin menyimpan repositori bugfix sekitar untuk setiap rilis, dari jika Anda ingin membuatnya ketika diperlukan pertama kali. Triknya adalah itu

% hg clone -r 1.0 project-a project-a-1.0.x

dapat digunakan untuk membuat repositori project-a-1.0.x yang hanya memiliki riwayat hingga tag 1.0. Anda kemudian dapat memperbaiki bug project-a-1.0.x dan mendorongnya kembali project-a. Perbaikan bug lebih lanjut dapat dilakukan di project-a-1.0.x gudang.


8
2018-05-30 15:19



Saya pikir Anda ingin mencoba perpanjangan hutan lincah


2
2018-05-30 10:49