Bagaimana cara menyusun repositori git untuk proyek?

9

Saya sedang mengerjakan modul sinkronisasi konten untuk Drupal. Ada modul server, yang duduk di situs web dan memaparkan konten melalui layanan web. Ada juga modul klien, yang duduk di situs yang berbeda dan mengambil serta mengimpor konten secara berkala.

Server dibuat di Drupal 6. Klien dibuat di Drupal 7. Akan ada kebutuhan untuk versi Druapl 7 server. Dan kemudian akan ada kebutuhan untuk versi Drupal 8 baik dari klien dan server setelah dirilis tahun depan.

Saya cukup baru untuk git dan kontrol sumber, jadi saya bertanya-tanya apa cara terbaik untuk mengatur repositori git? Apakah ini merupakan kasus memiliki repositori terpisah untuk setiap instance, yaitu:

Drupal 6 server = 1 repository
Drupal 6 client = 1 repository
Drupal 7 server = 1 repository
Drupal 7 client = 1 repository
etc 

Atau lebih masuk akal untuk memiliki satu repositori untuk server dan yang lain untuk klien kemudian membuat cabang untuk setiap versi Drupal?

Saat ini saya memiliki 2 repositori - satu untuk klien dan satu lagi untuk server.

littledynamo
sumber

Jawaban:

7

Kecuali proyeknya sangat besar, saya akan pergi untuk repositori tunggal dengan subdirektori untuk server dan klien dan membuat cabang untuk setiap versi. Anda masih dapat memiliki banyak salinan repositori jika Anda ingin mengakses beberapa versi secara bersamaan.

Dengan mempertahankan beberapa repositori, Anda akan membuat mentransfer perubahan lebih sulit dari yang diperlukan (rebase lebih mudah daripada menerapkan tambalan). Dalam kasus (tidak mungkin) tidak akan ada perubahan untuk diterapkan ke beberapa versi, Anda tetap tidak kehilangan apa pun ...

Selain itu, Anda selalu dapat beralih ke beberapa repositori: Cukup tirukan repo dan hapus cabang yang tidak Anda inginkan. Berbalik sebaliknya lebih sulit.

Saya akan menggunakan beberapa repo hanya jika server dan klien tidak membagikan apa pun atau jika kodenya benar-benar besar.

maaartinus
sumber
Ini adalah cara saya akan pergi karena Drupal menyimpan versi berbeda sebagai cabang. Saya juga memberi +1 tetapi perlu 15 rep!
littledynamo
4

Saya telah melihat dan bekerja dengan variasi seperti itu. Semuanya dalam satu folder dengan subfolder untuk server dan klien atau masing-masing satu repo. Saya lebih suka repo tunggal untuk setiap bagian utama proyek.

Dalam hal perubahan versi besar saya hanya akan membuat repo baru juga. Jelas tidak memiliki cabang yang berbeda untuk mereka. Sementara cabang sangat kuat untuk implementasi fungsionalitas baru dan mungkin satu cabang penempatan permanen, saya selalu menghindari memiliki terlalu banyak cabang paralel untuk waktu yang lama. Anda harus selalu memeliharanya (lakukan rebases ketika cabang utama diubah dll), jadi pertahankan penataan dasar sesederhana mungkin. Memiliki repo ekstra adalah (menurut pendapat saya yang sederhana) kurang menyakitkan daripada juggling cabang di berbagai negara. Terutama jika klien dan server tidak membagikan banyak kode.

Saya tidak tahu banyak tentang Drupal dan seberapa kuat perbedaan antar versi. Jadi poin saya lebih suka repo berbeda didasarkan pada pengalaman saya dengan Rails. Antara versi kadang-kadang ada perbedaan besar dalam hal-hal seperti bagaimana file dinamai atau struktur folder (mis. Pipeline aset) yang membuatnya lebih nyaman untuk membuat repo baru. Drupal (atau kerangka kerja lain) mungkin memiliki sedikit perbedaan, maka tidak apa-apa untuk melanjutkan repo yang ada.

thorsten müller
sumber
1
Terima kasih. Sangat menarik karena saya baru saja menemukan bahwa modul Drupal Core menyimpan versi terpisah sebagai cabang. Saya pikir masuk akal bagi saya untuk meniru struktur itu. Saya akan memberi +1 tetapi perlu 15 rep!
littledynamo