I prefer to transpose, when possible. If you really need to be in the original key, then you also have to find a whistle in the appropriate key.
For example, at http://ecf-guest.mit.edu/~jc/cgi/abc/findtune?P=dear+irish+boy&F2=find+(wide)&L=1000 you can find three versions of “The Dear Irish Boy”, claiming to be in C Lydian, D minor, and A major.
The “C Lydian” version (actually A Dorian or A minor, I think) is in a decent range as written, but the fingering seems a bit clumsy to me (and I like to avoid C natural when I can).
The “D minor” has a low C (not to mention Bb), so that’s out.
The “A major” version has not only G#, but an E# accidental, as well. It appears to actually be in F# Dorian or F# minor.
I play it in E Dorian/minor (it’s hexatonic, missing the scale tone that would distinguish the two). This gives me the tune with no cross fingering, but sometimes I want to play along with a recorded version that’s in B, so then I’ll switch to my A whistle.
All this looks rather complicated, but in practice, it’s not. I can just paste the ABC into BarFly (Macintosh ABC software), and transpose it over and over again, until I get it into a useful range. Of course, I can usually tell what the best result will be from looking at the music, but I could do it by trial and error, if I had to. I’m sure there’s some Windows software that’s just as useful for this.
I think that this is more of a problem with songs and slow airs, where you don’t want to monkey with the tune too much. For fast tunes, Ridseard’s solution is probably as good as any.
I play lots of songs by ear, and it sometimes takes some experimentation to find the best key for my level on the whistle. I suppose I should be striving to increase the level of my playing instead, but I’m kinda lazy.