Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can I clone just the latest changesets of a repository instead of the entire history?

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.

like image 362
PortMan Avatar asked Feb 13 '14 18:02

PortMan


3 Answers

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

like image 93
Tim Delaney Avatar answered Nov 16 '22 10:11

Tim Delaney


It seems that Facebook released an extension that is supposed to solve this problem.

See https://bitbucket.org/facebook/remotefilelog

like image 36
sorin Avatar answered Nov 16 '22 12:11

sorin


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.

like image 5
Ry4an Brase Avatar answered Nov 16 '22 12:11

Ry4an Brase