Hi I've read similar questions regarding that but still feel the need to ask a question. I have scenario where we have lots of tiny "features" pending for approval. I generally see two approaches.
1.Keep trunk solid and have tons of branches for each tiny "feature". Basically every new thingy is a branch.
Cons:
- Might become nightmare to support so many branches no matter how small a change. Keeping all branches in sync etc etc.
- Worst con I see in this is setup of test system so one can easily examine changes to approve (basically need to support all branches which seems insane).
Pros:
- Seemningly easy once approved a branch to be merged back to trunk and new release to be tagged and deployed.
2.For big features a branch is released and for small changes all goes in trunk(relatively stable) directly.
Pros:
- Easier to set test system as most of the time all will be directly visible. For big features should be easy to maintain separate branch on test.
Cons:
- Don't really see how release will go. I will not be able to basically release one part of trunk This would involve cherrypicking which is crazy to follow. Other approach is I just enforce that after some time (a week or so) all small features need to be approved so they can deployed before giving new tasks.
I just create release branch and either all or none of small features are going live. This will be some fun discussion with head people.
I guess having lots of small pending stuff is very problematic to follow technically.