<div dir="ltr">The current workflow is more than a two-step process. To expand all the steps:<div><br></div><div>1. Decide what x.y-dev branch to open a PR against</div><div>2. Open a PR against that branch</div><div>3. After the PR is accepted, decide if you can actually still merge it against the branch. This is necessary if for example, if I opened a PR several months ago against 2.12-dev and it was since released. Then I have to update the PR to point to 2.13-dev.</div><div>4. Merge the PR</div><div>5. Merge the x.y-dev branch to master locally</div><div>6. Push the local changes directly to the upstream repository</div><div><br></div><div>These steps 5 and 6 seem more error prone in that no one is reviewing them. In the git cherry-pick workflow, having someone reviewing the cherry-picks should reduce errors. Also, since you’re moving individual commits instead of merging whole branches together, mistakes should be far less disastrous if they do somehow occur. </div></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><br></div><div>David<br></div></div></div></div></div></div></div></div>
<br><div class="gmail_quote">On Fri, May 26, 2017 at 10:29 AM, Ina Panova <span dir="ltr"><<a href="mailto:ipanova@redhat.com" target="_blank">ipanova@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div><div><div><div><div><div><div><div><div><div>-0<br><br></div>I don't know, i am personally not super excited about cherry-picking, too many involved resources imho in order to compensate crazy git history.<br><br></div>1. submit pr against master<br></div>2. decide into which branches it should be cherry-picked<br></div>3. submit PRs against those branches<br></div>4. Find someone to approve it( person can approve it right away or can forget), you then need again to bother the person to approve the PR, plus you also can forget about them.<br></div>5. If the bugfix/rfe/hotfix consists of several PRs, like platform and plugin, you need to take care of more PRs and be sure you opened all of them and merged all of them.<br></div><div>6. since the commit id changes, you need to keep track of the info externally. That means open Redmine and update it.<br></div><div><br><br></div>With merge forward you just merge forward and need to take care of:<br><br></div>1. be sure you merged all PRs through all branches.<br></div>2. solve conflicts occasionally.<br><br><br></div>The concern Brian brought up - that contributors do not know against which branch to submit PR. Instead of asking them to re-submit PR against different branch we can cherry pick this,<br></div>We don't have that 'big traffic' of PRs from contributors and once in a while we can cherry pick if the PR was submitted against wrong branch.<br><br></div>Another thing which was stated in the motivation was 'We've also seen some mistakes where branches are accidentally merged into other
branches. "<br></div>I guess we will have much higher chance to make a mistake or forget something between steps 1-6 mentioned for cherry-picking then steps 1-2 mentioned for merging forward. <br></div><div class="gmail_extra"><br clear="all"><div><div class="m_1815500969859513976gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><br><br>--------<br>Regards,<br><br>Ina Panova<br>Software Engineer| Pulp| Red Hat Inc.<br><br>"Do not go where the path may lead,<br> go instead where there is no path and leave a trail."<br></div></div></div>
<br><div class="gmail_quote"><div><div class="h5">On Thu, May 25, 2017 at 6:49 PM, Sean Myers <span dir="ltr"><<a href="mailto:sean.myers@redhat.com" target="_blank">sean.myers@redhat.com</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5">On 05/25/2017 10:30 AM, Patrick Creech wrote:<br>
> -1<br>
<span>><br>
> While trying to come up with a decision on this topic, I googled "git merge vs cherry-pick".  The<br>
> overwhelming ammount of search results were basically 'don't cherry-pick!'.  The page that I favored<br>
> is [0].  It brings up some good points about loosing git's internal tracking of commits.  It seems<br>
> cherry-picks do get new commit id's instead of using the same ones.  While this site is basically a<br>
> 'Don't cherry pick' opinion piece, it did make me think about our motivations for moving away.<br>
<br>
</span>Merging forward *does not* guarantee that the changes you're looking<br>
for actually exist on a branch. git-cherry does. The article you<br>
linked is citing a specific problem and blaming it on cherry-picking,<br>
which is that when cherry-picking commits *with conflicts*, you can<br>
confuse git-cherry. This is accounted for in the in the PUP, and for<br>
good reasons.<br>
<br>
> ...<br>
<span>><br>
> I'm more in favor of us re-evaluating when and how we manage the merge forwards (as it does appear<br>
> our current automation has been a big source of pain at least once), and believe that just adding<br>
> better process and diligence around our current way of doing things will probably be better than<br>
> inventing a new process and figuring out the pain points as we go there.<br>
<br>
</span>In my experience, only one merge-forward problem was caused by<br>
automation (the mergepocalype, when 2.10 was considered "less than"<br>
2.2, and got merged forward into a lower branch). The rest were<br>
intelligent humans making mistakes, first with a bad merge, and second<br>
by trusting that the appearance of a given commit hash on a branch<br>
means that the *change* associated with that commit hash therefore<br>
also appears on that branch (it does not). Perhaps ironically, any<br>
improvement to the merge-forward process would likely involve using<br>
git-cherry to track actual changes, ignoring what hash is where.<br>
<br>
The suggestions that we invent a better process for merging forward<br>
immeditaely followed by a suggestion to not invent a new process is a<br>
little bit confusing. Either deal with the merge-forward papercuts or<br>
the cherry-pick papercuts, it's inventing new process either way. When<br>
it comes to the merging forward process, the intelligent humans were<br>
(in my opinion) being diligent in their application of the process in<br>
every failure case I can recall, and I don't think just throwing more<br>
"diligence" at the problem will solve it.<br>
<br>
On the other hand, cherry-picking back from master is not a new<br>
process that we're inventing. This is a common workflow, not something<br>
being invented by this PUP, so the opportunity to find help with this<br>
process outside of this team is tremendously valuable. No such<br>
opportunity exists with the merge-forward strategy without moving to a<br>
more generally-accepted merging strategy like git flow(/driessen).<br>
<br>
<br></div></div><span class="">______________________________<wbr>_________________<br>
Pulp-dev mailing list<br>
<a href="mailto:Pulp-dev@redhat.com" target="_blank">Pulp-dev@redhat.com</a><br>
<a href="https://www.redhat.com/mailman/listinfo/pulp-dev" rel="noreferrer" target="_blank">https://www.redhat.com/mailman<wbr>/listinfo/pulp-dev</a><br>
<br></span></blockquote></div><br></div>
<br>______________________________<wbr>_________________<br>
Pulp-dev mailing list<br>
<a href="mailto:Pulp-dev@redhat.com">Pulp-dev@redhat.com</a><br>
<a href="https://www.redhat.com/mailman/listinfo/pulp-dev" rel="noreferrer" target="_blank">https://www.redhat.com/<wbr>mailman/listinfo/pulp-dev</a><br>
<br></blockquote></div><br></div>