Membaca beberapa "Mengapa DVCS lebih baik" menjawab beberapa pertanyaan tentang Programmer. SEGAR-BENAR mereka semua mengatakan bahwa secara umum, DVCS lebih baik karena Anda tidak memiliki ras komit dalam proyek besar, IE berkomitmen, ketinggalan zaman sehingga perbarui, komit, kedaluwarsa lagi, komit, masih ketinggalan zaman, dll.
DVCS membatasi ini dengan konsep push. Namun dalam proyek yang sangat besar tidak akan ada "lomba dorong", terutama pada akhir hari? Saya tahu di Git ini agak diperbaiki oleh percabangan konstan untuk semuanya, tetapi dalam Mercurial Anda tidak bercabang, Anda membuat kepala baru.
Masalah yang saya lihat
- Pengguna mencoba mendorong
- Kedaluwarsa (lincah tidak akan membiarkan Anda mendorong jika repo lokal Anda kedaluwarsa), jadi Anda menarik dan menggabungkan perubahan lokal Anda
- Pengguna mencoba mendorong lagi tetapi saat mereka menggabungkan orang lain didorong, sehingga mereka kedaluwarsa lagi
- Tarik dan gabungkan lagi
- Masih ketinggalan zaman
- Ulang
Terdengar akrab?
Apakah ini masalah aktual dengan reposisi mercurial yang sangat besar dan populer? Bagaimana dengan di dalam perusahaan ketika semua orang melakukan dorongan terakhir hari ini?
hg branch myfeature; hg ci -m "Starting feature branch"; hg push --new-branch
--close-branch
ketika melakukan - dan lincah telah menamai cabang, Anda tidak harus mengkloning ke direktori baruJawaban:
Sejauh yang saya ketahui sebagian besar proyek open source besar menggunakan DVCS menggunakan "permintaan tarik" alih-alih dorongan, yaitu pengguna meminta proyek menarik dari cabang mereka, dan proyek dapat memilih untuk melakukan permintaan tarik ini dalam urutan apa pun , jika sama sekali. Ini menghilangkan kebutuhan untuk "lomba push", seperti yang Anda sebutkan.
Di perusahaan lain saya tidak bisa menjamin proses, tetapi di mana saya bekerja ini bukan masalah.
Lihat, ketika Anda sedang mengerjakan case Anda sedang mengerjakan cabang dari seluruh repo, jadi permintaan push Anda menuju ke versi remote dari trunk utama. Saat Anda ingin mengintegrasikan perubahan Anda (selesai) ke dalam bagasi, Anda memuatnya, menarik, menggabungkan, mendorong.
Kadang-kadang ( sangat kadang-kadang) dua orang akan mencoba dan melakukan ini pada waktu yang sama (biasanya karena beberapa komunikasi). Dalam hal ini siapa pun yang "kalah" hanya perlu menarik kembali, menggabungkan, mendorong. Karena tidak ada jam 5 sore terburu-buru untuk melakukan repositori pusat, masalah yang Anda sebutkan tidak benar-benar ada.
Itulah keindahan DVCS: percabangan tidak menyakitkan, sehingga semua orang dapat bekerja di cabang mereka sendiri.
EDIT
Oh, saya baru saja memperhatikan komentar "Kamu tidak bercabang ...": Ya, benar. Anda tidak harus melakukannya, tetapi karena itu sangat mudah dan manfaat dari melakukannya lebih besar daripada tidak melakukannya dengan sangat, Anda memang cenderung banyak melakukan repo cabang.
sumber
Tidak, tidak ada lomba dorong karena pekerjaan dilakukan di cabang topik . Master gabungan mengelola kompleksitas (relatif lebih rendah) untuk menggabungkan cabang menjadi cabang integrasi . Ini biasanya dilakukan terus menerus. Untuk info lebih lanjut tentang didistribusikan alur kerja kontrol versi, sumber pertama akan menjadi mulut kuda:
man gitworkflows
, online di sini . Alur kerja Mercurial memang menggunakan percabangan meskipun Anda mengklaim dan tekniknya serupa.sumber