On Tue, Jun 23, 2009 at 1:18 PM, Daniel Spiewak <djspie...@gmail.com> wrote:

> Well, I did some research, and it seems that the bulk of the Git community
> agrees with you.  Thinking about it more, this really wouldn't be an issue
> if we were using Git for the upstream source.  The problem really originates
> in the fact that SVN doesn't track merges natively.
>
> Next question: rebase -i or merge --squash?  The Gnome developer's guide to
> git-svn says to use merge, but you do get a lot more control with rebase.
>  Question: did Git auto-generate that gigantic commit message, or did you
> have to do it yourself?


I used rebase -i because I wanted to edit the commit message for
readability. Specifically ordering items together so they make more sense
and deleting progress commits like "groovy specs now passing". I didn't add
anything new beyond what was already in the commit log.

Assaf


>
>
> Daniel
>
>
> On Jun 23, 2009, at 3:08 PM, Assaf Arkin <ar...@intalio.com> wrote:
>
>  On Tue, Jun 23, 2009 at 11:50 AM, Assaf Arkin <ar...@intalio.com> wrote:
>>
>>  On Mon, Jun 22, 2009 at 5:57 PM, Daniel Spiewak <djspie...@gmail.com
>>> >wrote:
>>>
>>>
>>>>
>>>> With that said, I can see the advantages to your approach as well.  What
>>>> we
>>>> really need is an SCM that lets us label large blocks of commits.  Git
>>>> is
>>>> great for pointing to branch tips, but sometimes you want to just afix a
>>>> name to a slice out of that branch, with a well-defined start and end
>>>> point.  Sort of like a transaction split in a money management program.
>>>> That would be the best of both worlds, I think.
>>>>
>>>
>>>
>>> Testing this now in practice. I merged a bunch of changes into master,
>>> squashed them all and
>>> removed pointless commit messages and checked to SVN, and merged/rebase
>>> the
>>> branch accordingly (i.e. not squashed just brought up to spec).
>>>
>>> So now master just shows what changed, but branch history still shows how
>>> we got there (warts and all).
>>>
>>>
>> $ git co master
>> $ git blame lib/buildr/core/project.rb -L 225,225
>> 3caa2864 (Assaf Arkin 2009-06-23 18:39:20 +0000 225)
>> project.enhance { project.instance_exec project, &block } if block
>> $ git log 3caa2864
>> commit 3caa28648a1a7b10754d9b161fc998560b85affb
>> Author: Assaf Arkin <as...@apache.org>
>> Date:   Tue Jun 23 18:39:20 2009 +0000
>>
>>   Ruby 1.9.1 compatibility:
>>   - erb_transform works well with binding, not proc
>>
>>   - foo = *args fixed to foo = args.last
>>
>> ....
>>
>> $ git co ruby1.9
>> commit 3caa28648a1a7b10754d9b161fc998560b85affb
>> Author: Assaf Arkin <as...@apache.org>
>> Date:   Tue Jun 23 18:39:20 2009 +0000
>>
>>   Ruby 1.9.1 compatibility:
>>   - erb_transform works well with binding, not proc
>>
>>   - foo = *args fixed to foo = args.last
>> ...
>>
>> $ git blame lib/buildr/core/project.rb -L 225,225
>> fe684542 (Assaf Arkin 2009-04-07 13:38:03 -0700 225)
>> project.enhance { project.instance_exec project, &block } if block
>> $ git log fe684542
>> Author: Assaf Arkin <as...@apache.org>
>> Date:   Tue Apr 7 13:38:03 2009 -0700
>>
>>   What we need is instance_exec, new in 1.9 and back-ported by RSpec 1.2.
>>
>>
>>
>> When we ask master where the change happened it shows the big merge, but
>> the
>> working branch shows the actual individual commit that introduced the
>> change
>> (even though it has both commits in its history).
>>
>> Assaf
>>
>>
>>
>>> To review these changes, which would you rather use:
>>>
>>>
>>>
>>> http://github.com/assaf/buildr/commit/3caa28648a1a7b10754d9b161fc998560b85affb
>>>
>>> http://github.com/assaf/buildr/commits/ruby1.9?&page=3
>>>
>>> Assaf
>>>
>>>
>>>
>>>> Anyway, you're the boss, so if you want to make the general policy one
>>>> of
>>>> commit squashing, I'm willing to go that way.  However, I remain quite
>>>> in
>>>> favor of granularity wherever possible.
>>>>
>>>> Daniel
>>>>
>>>> On Mon, Jun 22, 2009 at 7:31 PM, Assaf Arkin <ar...@intalio.com> wrote:
>>>>
>>>>  On Mon, Jun 22, 2009 at 5:21 PM, Daniel Spiewak <djspie...@gmail.com>
>>>>> wrote:
>>>>>
>>>>>  I did strongly consider that.  Unfortunately, if I had squashed all of
>>>>>>
>>>>> the
>>>>>
>>>>>> commits, that would have meant losing the granularity of the history.
>>>>>>
>>>>> Or
>>>>
>>>>> at
>>>>>> least, preventing it from ever existing under ASF control.  One of the
>>>>>>
>>>>> huge
>>>>>
>>>>>> advantages of Git (at least in my eyes) is the ability to "go offline"
>>>>>>
>>>>> and
>>>>>
>>>>>> work on something experimental and breaking before coming back and
>>>>>>
>>>>> pushing
>>>>>
>>>>>> the changes into the upstream repository *without* turning it all into
>>>>>>
>>>>> "one
>>>>>
>>>>>> big commit".  IMHO, this is also a big part of why Git branch merging
>>>>>>
>>>>> is
>>>>
>>>>> so
>>>>>
>>>>>> awesome.
>>>>>>
>>>>>
>>>>>
>>>>> I often squash distinct Git commits into one before merging with
>>>>> master,
>>>>> for
>>>>> a very simple reason: reading unsquashed commits is as helpful as
>>>>>
>>>> standing
>>>>
>>>>> behind my shoulder watching me type/erase/fix/retype the code. I want
>>>>> my
>>>>> commit messages to show what the new feature is, not the details of how
>>>>>
>>>> it
>>>>
>>>>> came to be.
>>>>>
>>>>> Assaf
>>>>>
>>>>>
>>>>>
>>>>>>
>>>>>> I know it's a *lot* of commits (50, to be exact), but I think the
>>>>>>
>>>>> added
>>>>
>>>>> control and more informative history is worth it.
>>>>>>
>>>>>> Daniel
>>>>>>
>>>>>> On Mon, Jun 22, 2009 at 7:07 PM, Assaf Arkin <ar...@intalio.com>
>>>>>>
>>>>> wrote:
>>>>
>>>>>
>>>>>>  On Mon, Jun 22, 2009 at 5:00 PM, Daniel Spiewak <
>>>>>>>
>>>>>> djspie...@gmail.com>
>>>>
>>>>> wrote:
>>>>>>>
>>>>>>>  Alrighty, in we go!  Those of you on the commits list, prepare for
>>>>>>>>
>>>>>>> a
>>>>
>>>>> minor
>>>>>>>
>>>>>>>> flood...
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> you can always git rebase -i apache/master and squash like there's
>>>>>>>
>>>>>> no
>>>>
>>>>> tomorrow
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>> Daniel
>>>>>>>>
>>>>>>>> On Sun, Jun 21, 2009 at 10:48 PM, Daniel Spiewak <
>>>>>>>>
>>>>>>> djspie...@gmail.com
>>>>>
>>>>>>  wrote:
>>>>>>>>>
>>>>>>>>
>>>>>>>>  Any other thoughts on this?  Without a dissenting opinion, I'm
>>>>>>>>>
>>>>>>>> just
>>>>
>>>>> going
>>>>>>>
>>>>>>>> to filibuster my changes in regardless of potential controversy.
>>>>>>>>>
>>>>>>>> :-)
>>>>>
>>>>>>
>>>>>>>>> Daniel
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Sat, Jun 20, 2009 at 3:26 PM, Alex Boisvert <
>>>>>>>>>
>>>>>>>> boisv...@intalio.com
>>>>>
>>>>>>  wrote:
>>>>>>>>>
>>>>>>>>>  +1 on getting it into trunk...  it's a good way to get people
>>>>>>>>>>
>>>>>>>>> using
>>>>>
>>>>>> it.
>>>>>>>
>>>>>>>>
>>>>>>>>>> My preference is still a local_task per project.
>>>>>>>>>>
>>>>>>>>>> Re: testing, have you considered capturing stdin/stdout,
>>>>>>>>>>
>>>>>>>>> feeding
>>>>
>>>>>  commands
>>>>>>>>
>>>>>>>>> to
>>>>>>>>>> the interpreters and checking the results?
>>>>>>>>>>
>>>>>>>>>> alex
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Sat, Jun 20, 2009 at 8:41 AM, Daniel Spiewak <
>>>>>>>>>>
>>>>>>>>> djspie...@gmail.com>
>>>>>>
>>>>>>>  wrote:
>>>>>>>>>>
>>>>>>>>>>  I would like to move that my long-standing branch
>>>>>>>>>>>
>>>>>>>>>> `interactive-shell`
>>>>>>>
>>>>>>>> and
>>>>>>>>>>
>>>>>>>>>>> its support branch `jruby-system` (both available from git://
>>>>>>>>>>> github.com/djspiewak/buildr.git) be rebased onto trunk/ and
>>>>>>>>>>>
>>>>>>>>>> merged
>>>>>>
>>>>>>> into
>>>>>>>>
>>>>>>>>> the
>>>>>>>>>>> mainline Buildr SVN.  I have been dogfooding this feature for
>>>>>>>>>>>
>>>>>>>>>> about
>>>>>>
>>>>>>> six
>>>>>>>>
>>>>>>>>> months now and have found it invaluable on many occasions.  I
>>>>>>>>>>>
>>>>>>>>>> decided
>>>>>>>
>>>>>>>>  against just "going ahead" with the merge without discussion
>>>>>>>>>>>
>>>>>>>>>> since
>>>>>
>>>>>> there
>>>>>>>>
>>>>>>>>> was
>>>>>>>>>>> some controversy the last time we talked about this
>>>>>>>>>>>
>>>>>>>>>> particular
>>>>
>>>>>  feature.
>>>>>>>>
>>>>>>>>> Specifically, Assaf was of the opinion that the `shell` task
>>>>>>>>>>>
>>>>>>>>>> should
>>>>>>
>>>>>>> open
>>>>>>>>
>>>>>>>>> a
>>>>>>>>>>
>>>>>>>>>>> shell which is global to the entire project structure,
>>>>>>>>>>>
>>>>>>>>>> whereas I
>>>>
>>>>>  wanted
>>>>>>>>
>>>>>>>>> to
>>>>>>>>>>
>>>>>>>>>>> make `shell` a local_task (as it is implemented in my
>>>>>>>>>>>
>>>>>>>>>> branch).
>>>>
>>>>>
>>>>>>>>>>> There is also a rather ugly hack that I had to add to get
>>>>>>>>>>>
>>>>>>>>>> around
>>>>
>>>>> a
>>>>>
>>>>>>  restriction in JRuby.  Specifically, I overwrote Rake's
>>>>>>>>>>>
>>>>>>>>>> FileUtils.sh
>>>>>>
>>>>>>>  method.  This doesn't seem to have caused any ill effects,
>>>>>>>>>>>
>>>>>>>>>> even
>>>>
>>>>> though
>>>>>>>
>>>>>>>> I'm
>>>>>>>>>>
>>>>>>>>>>> technically stubbing part of the API (exitstatus and pid).
>>>>>>>>>>>
>>>>>>>>>> The
>>>>
>>>>> only
>>>>>>
>>>>>>>  problem
>>>>>>>>>>> I'm having here is it seems to have broken shell launch (but
>>>>>>>>>>>
>>>>>>>>>> not
>>>>
>>>>>  anything
>>>>>>>>>>
>>>>>>>>>>> else) under MRI.  Considering the fact that my hack only
>>>>>>>>>>>
>>>>>>>>>> applies
>>>>
>>>>> when
>>>>>>>
>>>>>>>>  running under JRuby, I'm not sure how this could be.  If
>>>>>>>>>>>
>>>>>>>>>> someone
>>>>
>>>>> more
>>>>>>>
>>>>>>>>  knowledgable in the dark arts of Rake could take a look, I
>>>>>>>>>>>
>>>>>>>>>> would
>>>>
>>>>>  greatly
>>>>>>>>
>>>>>>>>> appreciate it (just run `buildr shell` in a Scala project
>>>>>>>>>>>
>>>>>>>>>> under
>>>>
>>>>> MRI).
>>>>>>>
>>>>>>>>
>>>>>>>>>>> The main glaring omission from this contribution is specs.  I
>>>>>>>>>>>
>>>>>>>>>> can't
>>>>>>
>>>>>>> for
>>>>>>>>
>>>>>>>>> the
>>>>>>>>>>
>>>>>>>>>>> life of me figure out how to spec something like this, so
>>>>>>>>>>>
>>>>>>>>>> I've
>>>>
>>>>> settled
>>>>>>>
>>>>>>>> for
>>>>>>>>>>
>>>>>>>>>>> just manually testing the heck out of it.  A poor substitute,
>>>>>>>>>>>
>>>>>>>>>> but
>>>>>
>>>>>> it's
>>>>>>>
>>>>>>>> all
>>>>>>>>>>
>>>>>>>>>>> I've got.  If someone has any better ideas, I'm definitely
>>>>>>>>>>>
>>>>>>>>>> open.
>>>>
>>>>>
>>>>>>>>>>> Anyway, there has been some interest from the community in
>>>>>>>>>>>
>>>>>>>>>> this
>>>>
>>>>>  particular
>>>>>>>>>>
>>>>>>>>>>> feature, and given its usefulness in my own development, I
>>>>>>>>>>>
>>>>>>>>>> think
>>>>
>>>>> that
>>>>>>>
>>>>>>>> it's
>>>>>>>>>>
>>>>>>>>>>> worthy of inclusion in trunk/.  Any thoughts?
>>>>>>>>>>>
>>>>>>>>>>> Daniel
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>>

Reply via email to