git - Workflow strategies for mitigating merge conflicts from topic branches -


i'm right on cusp of selling git higher-ups. they're listening talk it, anyway. there's 1 thing i'm unsure of, , i'd see how people deal this. question comes fundamental understanding further apart pair of branches allowed get, harder merge.

i'm considering proposing simple workflow: have master (release) branch, development branch, , topic branches off of that. different developers working on separate topic branches, pulling , pushing topic branches central repo feel have working code. periodically, when asked developer, maintainer (in our organization person has title "technical lead") merges feature branch development branch, that's put on staging server , tested, , once feature test complete, it's merged master , pushed production.

here's question. should devs merge topic branches periodically? doing ensure they'll merge dev cleanly (or @ least catches conflicts before can out of hand). thing know manager going dislike is, that's work have placate tool, rather work deliver code project. thoughts?

we know there conflicts. question really: should resolve conflicts?

it's beneficial if person closest changes made conflict happen 1 fixing it. if let maintainer handle (or other dev) person might not know code about. yes, devs should responsible solving merge conflicts. it's trade off.

your problem related workflow , boss might not technical lead using time solve conflicts. otherwise model not @ bad one. role technical lead has called "integrator" , involves resolving conflicts , means integrator needs know code , needs communicate lot devs (there other tools in git can simplify scenario).

what do, let devs not push , pull topic branches server, instead keep topic branches locally , have e.g. master , develop on server. if instead pull develop, merge stuff, resolve conflicts locally, , test locally before push develop. way devs can instead push develop , technical lead can focus on testing develop , other types of testing performance testing etc.

however, if still want integrator role, there tool called git rerere. enables integrator periodically merge branches, solve conflicts, reset undo merge , git automatically record how conflict resolved. way minimize work solving conflicts. automate git hook, e.g. merge script , notify integrator if conflict has happened.

some reading:

http://www.kernel.org/pub/software/scm/git/docs/git-rerere.html

http://gitfu.wordpress.com/2008/04/20/git-rerere-rereremember-what-you-did-last-time/

cheers


Comments

Popular posts from this blog

c# - how to write client side events functions for the combobox items -

exception - Python, pyPdf OCR error: pyPdf.utils.PdfReadError: EOF marker not found -