Topic: GIT, branches and continuous integration
Day kind, colleagues. Advise where to esteem about the settled successful practice of branching of a repository in the conditions of usage continuous integration? There is at us now one branch, master, and all changes go directly there, after the code-revju. Developers locally create branches for those features over which they work, and then send on the code-revju and when the code transits , the system itself already merges all it in the master. But. For this purpose that changes were , they should transit "verification" - continuous integration collects and launches on that complete set of tests. Occupies all it about 5 hours. I.e. here transited my code , I received all signatures, but merge all it with the master I physically I can not, while the bild-system does not confirm that transited all integration tests. It in this type more or less works, of course, but strongly this process irritates me and tires. Any change demands 5 hours before other developers can receive it to themselves. Yes, about that that they can take change and merge it manually with the code - I know, but it not that. It as the temporary fix approaches, when it is necessary quickly with something , but not as the general approach to operation. And if I suddenly have two-three having something in common changes for the same part of the code I can push through them in the master not earlier than through 10. 15 hours. And it at the best - the system often produces failures for the reasons tests, but it already another story. But here it here all does not promote that that developers sent the changes by small portions. On the contrary - they send the code-revju on 30 files then to push through it for one stopping, instead of to wait while two-three changes transit verification. Output obvious, apparently, - to select a branch for development where it will be possible to send changes with a minimum of checks ( and ), and then night carries out all tests and sends messages if something fell off. But in this scenario we receive that design teams will work with potentially broken components - commands for us a little, it is a lot of developers and sometimes there are clashing changes of functionality that leads to the long hours lost on debugging of bugs which were brought by other command. How to be? What approaches well recommended themselves?