That is exactly my thought. How do you deal with library source code shared between projects? I would like to use a Dvcs, but this factor and lack of a gui interface are things that hold me back.
Despite Linus's comments on: http://www.youtube.com/watch?v=4XpnKHJAok8
I actually find CVSNT to be ok for now, and it does handle repeated merges ok (maybe not for a kernel sized project though).