Cabang Git untuk contoh situs web?

7

Saya bekerja di beberapa situs web, kedua situs web membutuhkan kode yang hampir sama kecuali untuk beberapa perubahan dalam gambar dan css, atau pengaturan.

Saya baru saja selesai membaca bab cabang buku Pro Git dan saya agak bingung, jika cabang bukan solusi terbaik untuk masalah ini, apakah garpu?

Maksud saya, kita memiliki contoh A dan B dari kode, antara A dan B, perbedaannya adalah hal-hal seperti warna css, url, kunci api, tetapi sebagian besar kode itu sama, jadi dengan cara apa saya bisa mengatasinya, saya memerlukan sesuatu seperti kode dalam A dan kemudian 'menambal' untuk mendapatkan B, tapi saya tidak yakin bagaimana membuat penggabungan yang tidak menimpa gambar ...

Ngomong-ngomong, jika itu cabang atau garpu, bagaimana saya bisa menggabungkan fitur baru di A tanpa perubahan B yang hilang?

diegueus9
sumber

Jawaban:

1

Itu agak rumit, dan saya khawatir tidak ada jawaban "benar" tunggal. Saya setuju bahwa mempertahankan cabang terpisah untuk A dan B bukanlah penggunaan git yang tepat.

Pilihan pertama Anda adalah dengan hanya mengambil satu dari yang lain. Kelemahannya, tentu saja, adalah bahwa Anda sekarang harus mempertahankan dua basis kode yang terpisah. Jelek.

Pilihan kedua adalah untuk memecah perbedaan saja (mis. Direktori gambar dan css). Ini akan meninggalkan Anda dengan repositori 3 git: kode (hanya satu basis kode untuk mempertahankan, hore!), Gambar / css / dll. untuk A, dan sama untuk B. Kelemahan dari pendekatan ini adalah mempersulit penerapan, terutama jika Anda harus menerapkan perubahan kode dan gaya secara bersamaan.

Sebagai alternatif, Anda tentu saja dapat menyalahgunakan git untuk mempertahankan repositori tunggal dengan A dan B sebagai cabang terpisah. Tidak, itu tidak ideal, tetapi sebenarnya itu akan berhasil. Namun, ini bisa dibilang solusi berantakan untuk masalah daripada saran pertama (forking A dan B seluruhnya).

Tidak seorang pun kecuali Anda (dan tim Anda) yang dapat memberi tahu Anda pendekatan mana yang "tepat" untuk situasi Anda. Saya berharap yang terbaik untuk Anda!

Kromey
sumber
2

Mengapa tidak membuat cabang "templat" yang memiliki kesamaan dan menggabungkannya ke cabang per-situs web? Tak satu pun dari hal-hal yang dikustomisasi akan pernah muncul di cabang template, dan idealnya hal-hal yang disesuaikan akan diisolasi ke file khusus, meskipun itu bukan keharusan yang ketat. Jika Anda dapat mengisolasi ke tingkat file, .gitignore file yang disesuaikan pada cabang template untuk keamanan.

Saat Anda membuat perubahan, ubah pada template dan gabungkan ke masing-masing cabang secara bergantian. Setiap situs web harus menerapkan perubahan pada templat dan mempertahankan pekerjaan khusus mereka.

Seth Robertson
sumber