Hi Shannon, Some thoughts: first a bit of cod-philosophy : we can't control or 'manage' change, all we can do is administer it, and add a bit of political spin ( Situation, Problem, Implication, and Need-payoff ). Lot's of managers think they have control, but we all know.. Git with it's 'DVCS' distributes that 'version control' to the coder (because we can locally create versions/revisions to out heart's content). This separates the recording of versions from the inclusion (merge) into the main/golden repo. I raised that to highlight the shift in the focus that can be applied. (I remember the smell of a real 'blueprint' machine!, and microfiche on IBM Hollerith cards.. the horrors of history;-)
It is worth looking at the different approaches to including code and changes, and where they came from. Most administrative methods have developed over the last century (yes) from the way that old style drawing offices controlled their 'drawings' used for the manufacture of hardware (think Titanic master drawings - no drawing, no ship). Those are the same, conceptually, as software code. They both require tools to take the information to create product. We now uses compilers rather than lathes (see CNC machines as missing evolutionary link). They managers would batch up changes to the drawings (no touching the master, it was too precious), which is now the 'squash everything together' approach. Each of the different approaches to merging and trunk development come out these historical experiences (monkey stepladder stuff) Others would keep better records of the small changes, so they could see *why *faults happened later, especially if they did prototype testing. That's your current problem. You have a batch of changes, and a prototype is being tested. Meanwhile others have also being adding changes, and you might "need to consider changes from feature-branch". Some of this is a social issue of conflict/collaboration and negotiation, so that you could split out independent changes from (potentially) inter-related changes. This would allow your *individual changes to be re-ordered* to have the independent changes first and the (potentially) interrelated changes (aka 'conflicts') put near the end of the rebase sequence. With this split you can split the testing into the two parts. Being able to add the independent changes early gives a firmer base for the interrelated changes and helps clarify the core element of the change. Often we can't see the woods for the trees in the feature branches. There is nothing to stop you from *doing a trial merge* of your 'released to test' branch with the 'alt-feature' branch just so that you can, in advance, know which 'conflicts' are just awkward context changes (the context lines don't line up), which are order dependent within the resolution, and which are wholescale syntactic changes. It's the last group that need the active social action to convert that idle time to useful prep time. The former just need their resolutions recorded (unfortunately the `rerere` isn't easily exportable) so that whoever merges the features can resolve them with a single click. (one is assuming that testing is going to be successful...) On Sunday, August 29, 2021 at 1:51:19 AM UTC+1 SJW wrote: > I have been Watching YouTube tutorials in order to expand my knowledge in > git but there are now some questions that this has raised so I was hoping > someone here could educate me on some best practices or philosophies I > should consider. > > The main point is around rebase - I see great value in this but the whole > philosophy was around bringing committed code into your feature branch. > > I will regularly create feature branches for each new enhancement or fix. > The problem rears its head when testing is delayed and the first feature > (feature-branch-1) is still not approved for production and sits as a > branch awaiting merge. > > Now, in my feature-branch-4 I am working In a similar area and really need > to consider changes from feature-branch-1 and I usually just copy some of > those changes over. > > Now this is not very efficient and I thought rebase would work great BUT > that code is not approved and may actually change. > > I really just don't know what's the most efficient way to manage > situations like this without stopping development and waiting for testers > to approve code but this approach results in 1-2 days of waste where I just > twiddle my fingers waiting... > > Any advice or personal experience would be welcome. > -- You received this message because you are subscribed to the Google Groups "Git for human beings" group. To unsubscribe from this group and stop receiving emails from it, send an email to git-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/git-users/26653e02-b7b9-4445-aee2-13835bda112an%40googlegroups.com.