[squeak-dev] Re: New trunk server

Levente Uzonyi leves at elte.hu
Mon Jan 11 02:19:57 UTC 2010


On Sun, 10 Jan 2010, Andreas Raab wrote:

> Levente Uzonyi wrote:
>> On Sun, 10 Jan 2010, Levente Uzonyi wrote:
>> 
>>> On Sun, 10 Jan 2010, Andreas Raab wrote:
>>> 
>>>> Levente Uzonyi wrote:
>>>>> It works, but there's a new (minor) issue: the diff contains double line 
>>>>> endings. And the old green image was better than the current blue on the 
>>>>> web interface, because other style elements are for the green image.
>>>> 
>>>> Both should be fixed now.
>>> 
>>> There are (at least) three ways to fix the extra empty lines issue:
>>> 1. restore the original behavior in TextDiffBuilder >> #split: by using
>>>  endWithoutSeparators instead of end.
>>> 2. update TextDiffBuilder >> #printTextPatchSequence:on: to add cr if and
>>>  only if the line doesn't end with cr or crlf.
>>> 3. create a subclass of TextDiffBuilder that overrides #split: and throws
>>>  away line endings. and use that from MCDiffyTextWriter. The extension
>>>  methods could be moved there too.
>> 
>> I finally fixed it in a fourth way by making #buildPatchSequence more 
>> backwards compatible by ignoring crs (System-ul.230). A fifth solution 
>> would be to change #buildTextPatch to use 
>> #patchSequenceDoIfMatch:ifInsert:ifRemove: directly, like:
>> 
>> TextDiffBuilder >> #buildTextPatch
>>
>>    ^String streamContents: [ :stream |
>>       self
>>          patchSequenceDoIfMatch: [ :string |
>>             stream space: 2.
>>             self print: string withAttributes: nil on: stream ]
>>          ifInsert: [ :string |
>>             stream nextPutAll: '+ '.
>>             self print: string withAttributes: nil on: stream ]
>>          ifRemove: [ :string |
>>             stream nextPutAll: '- '.
>>             self print: string withAttributes: nil on: stream ] ]
>> 
>> This would also allow us to remove #stringForAttributes: and 
>> #printTextPatchSequence:on:.
>
> I think I'll leave that decision to you, you seem to have a good handle on 
> this part of the system. FWIW, I had implemented option #2 for our 
> SqueakSource installation realizing that it would be robust even if we 
> decided to leave out the CRs from the diff.

With the latest TextDiffBuilder changes everything should work fine with 
all versions of SqueakSource. #buildTextPatch is SqueakSource's extension 
method, changing that would break backwards compatibility.


Levente

>
> Cheers,
>  - Andreas
>
>



More information about the Squeak-dev mailing list