I have to work with an hg repository that has millions of lines of code and hundreds of thousands of changesets. As you can imagine, this really slows down mercurial and TortoiseHg.
Is it possible for me to create a local repository that only has the latest few thousand changesets?
Not only would this hopefully make things run snappier, but it might also save me some hard drive space.
No you can't, but you can optimise your local clone. Have a look at my answer to https://stackoverflow.com/a/19294645/479199.
There has been some work on shallow clones, but it's still very much a work in progress (and there doesn't seem to have been much progress):
https://www.mercurial-scm.org/wiki/ShallowClone
It seems that Facebook released an extension that is supposed to solve this problem.
See https://bitbucket.org/facebook/remotefilelog
No you can't. That's called a "Shallow Clone" and it's not implemented/supported. Millions of lines of code and thousands of changesets isn't particularly large, and once you've cloned it down once almost every action should be near instantaneous.
Further, the compressed binary deltas in the .hg directory are usually smaller than the entirety of the uncompressed code in the working directory, so the space savings shouldn't be substantial either.
Once you've cloned the repo once, make sure to do any further clones on the same machine from your local clone, and you'll never have to wait for the whole repo to clone again.