<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jun 7, 2018 at 2:10 AM, Nicholas Nethercote <span dir="ltr"><<a href="mailto:n.nethercote@gmail.com" target="_blank">n.nethercote@gmail.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"><span class="">On Thu, Jun 7, 2018 at 5:34 PM, Eric Rescorla <span dir="ltr"><<a href="mailto:ekr@rtfm.com" target="_blank">ekr@rtfm.com</a>></span> wrote:<br></span><div class="gmail_extra"><div class="gmail_quote"><span class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><div class="gmail_quote"><div>BZ, I'd actually like to ask you a question. When you are working<br>on a series of changesets and someone askes you for a revision of<br>one of those changesets, do you expect to add a new commit on top<br>of the commit in the changeset, or rewrite it the existing commit?<br></div></div></div></div></blockquote><div><br></div></span><div>Speaking for myself: I would rewrite the existing commit, unless it was unusually difficult (because it was affecting patch 3 in a series of 21 patches or something).<br></div><div><br></div><div>The rationale being that I don't want any revision in the tree to be sub-par (within reason). I try to avoid landing any revision that doesn't build, fails tests, and doesn't attain r+ by itself.<br></div></div></div></div></blockquote><div><br></div><div>Hi Nick,</div><div><br></div><div>Thanks. I agree with this objective, but I wonder if we're talking past each other. At present,</div><div>I'm mostly concerned with people's working state in their local repo rather than what we</div><div>land in the tree.<br></div><div><br></div><div>Say I'm developing a CL. I start on my own machine and build it up as a series of checkpoint</div><div>commits. To take the example I gave Kris, here's what my git history looks like.<br></div><div><br></div><div><div>- Checkpoint: function written but doesn't compile</div><div>- Checkpoint: compiles</div><div>- Checkpoint: most tests pass</div><div>- Checkpoint: OK, all tests pass now</div><div>- Clang-formatted</div><div><br></div><div>The reason I'm doing this is so that if I make a mistake, I can easily roll back to the last</div><div>good version, and because each checkpoint stacks on the previous one, making a checkpoint</div><div>is low stakes.</div><div><br></div><div>I put these all up as a single Revision on Phabricator and then get review, which results in two</div><div>new commits:</div><div><br></div><div><div>- Responses to review comments<br></div><div>- Re-clang-formatted</div><div><br></div><div>So, now my tree has 7 commits. I update the Revision in Phabricator and then get Approved, so it's</div><div>ready to land. At this point, I squash all the commits into one, update the Subject, and land it</div><div>(presumably this is what Lando would do as well).</div><div><br></div><div>So my question is more: as you develop a given CL, are you adding new commits (as above)</div><div>or are you just carrying a single commit per CL and rewriting it as you go?<br></div></div></div><div><br></div><div>-Ekr</div><div><br></div></div></div></div>