<div dir="ltr"><div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)">I can see that use case, but meddling with history / parentage is not the right way to do it IMHO. (even the "adopt" button is questionable, except in very limited circumstances) It's too easy to lose changes that way - anything that happened in trunk up to this point from when you branched off would be lost (or it would be the responsibility of the developer to make sure this is not the case, which is way too fragile).</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><br></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">The "standard" way to do this is to do a "merge-and-squash" (standard </font><span style="color:rgb(0,0,0);font-family:arial,helvetica,sans-serif">as in, accepted practice in other developer communities, e.g. "</span><span style="color:rgb(0,0,0);font-family:arial,helvetica,sans-serif">git merge --squash"</span><span style="color:rgb(0,0,0);font-family:arial,helvetica,sans-serif">).</span></div><div class="gmail_default"><span style="color:rgb(0,0,0);font-family:arial,helvetica,sans-serif"><br></span></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif"><span style="caret-color: rgb(0, 0, 0);">This is like a merge (meaning it combines changes from both trunk and your line of commits) but throws away all the intermediate commits, "squashing" all the changes into one single merge commit. That means you can commit as much and as often as you like, but when merging it into trunk, it is only seen as one commit.</span></font></div><div class="gmail_default"><br></div><div class="gmail_default">But let's ask David: what is your use case?</div><div class="gmail_default"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)">- Bert -</div><div><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div dir="ltr"> </div></div></div></div></div></div></div><br></div></div></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Nov 6, 2018 at 10:37 AM Chris Muller <<a href="mailto:asqueaker@gmail.com">asqueaker@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">You read my mind!  I didn't review or test it, but I was already<br>
thinking about this functionality to help us with Inbox submissions as<br>
well.<br>
<br>
What I would like to propose is that we feel the need to rapid-fire<br>
multiple versions into trunk, to do it into Inbox instead, and when we<br>
have the final one ready for trunk, adopt the top version in trunk as<br>
the sole parent so that we can see just the _true_ change from the<br>
prior version, without all the noise of the "interim" changes.<br>
<br>
I even think the user should be prompted to do so, but one step at a time...<br>
<br>
Best,<br>
  Chris<br>
On Mon, Nov 5, 2018 at 10:20 PM Eliot Miranda <<a href="mailto:eliot.miranda@gmail.com" target="_blank">eliot.miranda@gmail.com</a>> wrote:<br>
><br>
> Hi David, Hi All,<br>
> On Mon, Nov 5, 2018 at 7:53 PM <<a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a>> wrote:<br>
>><br>
>> David T. Lewis uploaded a new version of Monticello to project The Inbox:<br>
>> <a href="http://source.squeak.org/inbox/Monticello-dtl.685.mcz" rel="noreferrer" target="_blank">http://source.squeak.org/inbox/Monticello-dtl.685.mcz</a><br>
>><br>
>> ==================== Summary ====================<br>
>><br>
>> Name: Monticello-dtl.685<br>
>> Author: dtl<br>
>> Time: 5 November 2018, 10:52:58.748205 pm<br>
>> UUID: b31c1c5b-d61a-4810-8f97-5fdcaf062dc8<br>
>> Ancestors: Monticello-eem.684<br>
>><br>
>> MCVersionInspector has an 'Adopt' button to allow the selected version to be added to the parent or parents of a working version. Provide a 'Reparent' button to allow a selected version to become the sole parent of a working version. Adjust defaultExtent to accomodate the additional button.<br>
><br>
><br>
> Nice.  It is for someone like Bert to review and accept this but this seems a very useful addition to me!<br>
><br>
>><br>
>><br>
>> Motivated by the exercise of preparing to copy Chronology-Core versions from one repository into equivalent Chronology-Core.UTC versions in another repository (possibly trunk). In this scenario, it is helpful to be able to reparent a newly loaded Chronology-Core version from one repository to be the child of the last saved Chronology-Core.UTC version in another. The '.UTC' suffix in this case is intended to branch those versions from the trunk update stream, allowing later merge to trunk with branch history preserved.<br>
>><br>
>> =============== Diff against Monticello-eem.684 ===============<br>
>><br>
>> Item was changed:<br>
>>   ----- Method: MCRepositoryInspector>>defaultExtent (in category 'morphic ui') -----<br>
>>   defaultExtent<br>
>> +       ^600@300!<br>
>> -       ^450@300!<br>
>><br>
>> Item was added:<br>
>> + ----- Method: MCVersion>>reparent (in category 'actions') -----<br>
>> + reparent<br>
>> +       "Let aNode be the sole parent of this version"<br>
>> +       self workingCopy reparent: self!<br>
>><br>
>> Item was changed:<br>
>>   ----- Method: MCVersionInspector>>buttonSpecs (in category 'morphic ui') -----<br>
>>   buttonSpecs<br>
>> +       ^#(<br>
>> +               ('Refresh' refresh 'refresh the version-list')<br>
>> -        ^ #(('Refresh' refresh 'refresh the version-list')<br>
>>                 (Browse browse 'Browse this version' hasVersion)<br>
>> +               (History history 'Browse the history of this version' hasVersion)<br>
>> +               (Changes changes 'Browse the changes this version would make to the image' hasVersion)<br>
>> +               (Load load 'Load this version into the image' hasVersion)<br>
>> +               (Merge merge 'Merge this version into the image' hasVersion)<br>
>> +               (Adopt adopt 'Adopt this version as an ancestor of your working copy' hasVersion)<br>
>> +               (Reparent reparent 'Adopt this version as the sole ancestor of your working copy' hasVersion)<br>
>> +               (Copy save 'Copy this version to another repository' hasVersion)<br>
>> +               (Diff diff 'Create an equivalent version based on an earlier release' hasVersion)<br>
>> +       )!<br>
>> -                (History history 'Browse the history of this version' hasVersion)<br>
>> -                (Changes changes 'Browse the changes this version would make to the<br>
>> - image' hasVersion)<br>
>> -                (Load load 'Load this version into the image' hasVersion)<br>
>> -                (Merge merge 'Merge this version into the image' hasVersion)<br>
>> -                (Adopt adopt 'Adopt this version as an ancestor of your working copy'<br>
>> - hasVersion)<br>
>> -                (Copy save 'Copy this version to another repository' hasVersion)<br>
>> -                (Diff diff 'Create an equivalent version based on an earlier release'<br>
>> - hasVersion))!<br>
>><br>
>> Item was added:<br>
>> + ----- Method: MCVersionInspector>>reparent (in category 'accessing') -----<br>
>> + reparent<br>
>> +       (self confirm:'Adopt ',self version info name, ' as the sole ancestor of your working copy?')<br>
>> +               ifTrue: [self version reparent]!<br>
>><br>
>> Item was added:<br>
>> + ----- Method: MCWorkingAncestry>>reparent: (in category 'as yet unclassified') -----<br>
>> + reparent: aNode<br>
>> +       "Let aNode be the sole parent of this version"<br>
>> +       ancestors := Array with: aNode<br>
>> + !<br>
>><br>
>> Item was added:<br>
>> + ----- Method: MCWorkingCopy>>reparent: (in category 'operations') -----<br>
>> + reparent: aVersion<br>
>> +       "Let aNode be the sole parent of this version"<br>
>> +       ancestry reparent: aVersion info.<br>
>> +       self changed.!<br>
>><br>
>><br>
><br>
><br>
> --<br>
> _,,,^..^,,,_<br>
> best, Eliot<br>
><br>
<br>
</blockquote></div>