Any way to fake "hg annotate -w"?

Ali Saidi saidi at umich.edu
Fri Jun 27 10:35:27 CDT 2008


You could modify the convert extension to replace all the tabs with  
spaces in a hg -> hg conversion.  That way you would keep all the  
revision information the same. Everyone using the repo would have to  
get a a new copy of it, but otherwise it's reasonably painless.

Ali

On Jun 27, 2008, at 12:11 AM, Rob Landley wrote:

> On Saturday 21 June 2008 12:30:17 Matt Mackall wrote:
>> On Wed, 2008-06-18 at 20:24 -0500, Rob Landley wrote:
>>> I can tell hg diff to ignore whitespace-only changes to lines, but I
>>> can't find a way to make hg annotate do the same.
>>>
>>> Any suggestions?
>>
>> No. This is actually quite tricky, and our diff algorithm sometimes  
>> gets
>> it wrong too.
>
> Hmmm, pondering this further:
>
> I have a project with a tabstop of 4, and Ubuntu's continuing quest  
> to make vi
> unusable broke parsing the "/* vi: set ts=4 :*/" comments at some  
> point
> between 6.10 and 7.10.  (And that's _after_ doing
> the "rm /etc/vim/vimrc.tiny; ln -s vimrc /etc/vim/vimrc.tiny" you  
> need to do
> to restore minimal usability in vim in Ubuntu.)  Rather than fight  
> with it,
> I'd like to just do one big checkin converting all the project's  
> indents to 4
> spaces per tab via sed, but that would make "hg annotate" essentially
> unusable for quite a while.
>
> I'm aware that whitespace can be semantically important.  (Not just in
> python/make/kconfig, but in any language that does token parsing to  
> figure
> out where symbols begin and end.)  That said, what "diff -w" is  
> asking for is
> to ignore all whitespace.  I.E. compare the output of "sed 's/[ \t]// 
> g'" on
> both files.  Yes, the result can merge together semantically  
> different lines
> and makes them compare identical, but that's what the user _asked_  
> for.
> Ignore all whitespace, treat the line as if it had no whitespace in  
> it at
> all.
>
> You can't do better than that without understanding the contents of  
> the file
> (since "if(x)" and "if (x)" are the same line in C, while spaces in  
> quoted
> strings matter, but there's no way to know that without  
> understanding C).
> But you don't _have_ to do better than that.  It's often going to miss
> important changes in python, occasionally it'll do so in C, but  
> it'll miss
> them in a simple, straightforward and understandable way.
>
> Is this the difficulty you referred to, or is there more to it than  
> that?
>
> Rob
> -- 
> "One of my most productive days was throwing away 1000 lines of code."
>  - Ken Thompson.
> _______________________________________________
> Mercurial mailing list
> Mercurial at selenic.com
> http://selenic.com/mailman/listinfo/mercurial
>



More information about the Mercurial mailing list