Just two cents from a long-time list lurker: First, congrats on all the work done so far! Monumental effort, and a well-deserved congratulations to everyone involved.
As a Release Manager, > > I cannot tell which branches on the CI server are targeted for the release > and which are "future work" > IMHO, this is the job of the issue tracking system. It is the authority on what work is targeted for which release. It is also the place where the impact or nature of the work is tracked (bug, feature enhancement, etc.), and whom is doing the work. So I'm not sure that the CI server is the place where you would go *first* to see what branches are targeting which release. Unfortunately, that process would first require searching the issue tracking system for issues targeting a certain release, and then each issue would have a link to the branch. I see how a convention for naming branches could be helpful, but that seems a bit complex and requires everyone to comply with multiple rules (rules for the metadata required for an issue, which will have a link to the branch, and then rules for how a branch should be named). I cannot tell who is responsible for which branches in order to know who to > ask w.r.t. their status > Right; I think that's the responsibility of the issue tracker. It knows what issues are being worked on for a release, and the release manager can use the issue tracker to see what is in-progress, and directly ask the developer who owns the issue. No need to even look at the CI system. But, each issue should have a link to the branch being used for the work, which could be used by the release manager if needed. As a PMC member tasked with reviewing commits > > I cannot keep track of all the many commits and rebases > *If* the process is review then commit, a pull request would be opened by the owner of a branch against "master" (or whatever the target branch is). That is how a PMC member would know it is time to review a series of commits. The owner of the branch would be responsible for insuring that it can apply cleanly to the target branch at any time. For example, the owner of the branch opens a PR. It must apply cleanly to the target branch at the time the PR is opened (i.e. the branch must be based on the tip of the target). If, prior to merging the PR, the target branch progresses, the owner of the branch would need to rebase the branch and update the PR. To me this seems like a clean separation of responsibilities. The owner of a branch indicates that their work is ready for merging by requesting a PR. It is the owner's responsibility to keep the PR current with respect to the target branch. The PMC member or release manager is notified of the PR, and their responsibility is to perform a review, and either accept the merge request or ask for more changes (asking for more changes could mean: "please rebase this against the current tip of the target branch"). As PRs are accepted and merged into their target branches, the corresponding issues in the tracking system are updated with this information, and closed. Having PRs that apply cleanly to the target branch also invites other developers who may not bear official responsibility, to attempt to build the branch and review the PR as well. That is to say, cleanly applying PRs may have more eyes on them during the review process. Just my thoughts! > > Proposal > ======== > > 1. We should use a naming scheme for all branches. I am suggesting > owner/targetBranch/mng-XXXX - this gives me the information about who owns > the branch and where the branch is targeted for. > > 2. We should have the Jenkinsfile build not just the head commit but the > head commit merged to the target branch for any branch following the naming > scheme. We get the target branch from the naming scheme and by having the > build verify that the branch can be merged without conflict onto the target > branch we remove the need for constant rebases > > 3. We merge branches with an explicit merge commit and stop using > fast-forward merging only. Again this makes it easier to review and allows > the noisy branches to be quiet when looked at from the PoV of master > > This will not solve all the issues, but it would solve the pain points I > have currently. > > Now if others have a different PoV or a counter-proposal, please speak up! >