Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

Already on GitHub? Sign in to your account

Use git scclone instead of git clone / git submodule combinations. #168

Closed
wants to merge 1 commit into
from

Conversation

Projects
None yet
3 participants
Owner

grahamc commented May 18, 2012

git scclone is a command provided by a project I started, git-cachecow: https://github.com/grahamc/git-cachecow

It hashes and caches git repositories in a local directory (by default, ~/.git-cow/). It will use those local bare repositories during cloning by doing git clone --reference ~/.git-cow/.... Initially I had implemented this caching as part of Integrity, but submodules were difficult to cache - so I broke it out into its own command set.

Obviously we would have to package the cachecow commands with Integrity.

This change has improved our build times by 2 minutes each, and has shaved off 25 minutes off of our parallelized builds.

Update: I'm not really sure how best to package git-cachecow into this project. My guess is exporting from the repo and bringing it in here. In my opinion submodules make things quite complex for users who aren't used to them, and then future updates make cryptic merge messages.

Contributor

richmeyers commented May 18, 2012

I would prefer this being an option since projects that are small and/or host their repositories in proximity to ci are unlikely to need it.

Owner

grahamc commented May 18, 2012

I can understand that. Perhaps subclassing checkout to support it? Still bundling it in there.

The flip side is it doesn't add much complexity, and as far as my testing has found there isn't any chance that it would introduce new issues, but of course that isn't proven.

Contributor

richmeyers commented May 18, 2012

Well, to start, https://github.com/grahamc/git-cachecow is missing installation instructions :)

Owner

grahamc commented May 18, 2012

I can fix that by adding "Put git-cachecow in your $PATH" 'course.

Contributor

richmeyers commented May 19, 2012

It wasn't obvious that that would work given the scripts import python modules (I would build self-contained scripts out of the "source" ones that you have), not to mention putting the entire project onto PATH is not that clean.

Owner

grahamc commented May 19, 2012

Sure. I haven't finished cleaning up the instructions and making it fully compatible; you've brought up a good number of points.

Owner

grahamc commented May 20, 2012

@richmeyers - I've updated it to all be Python, and I've made it available on Pip for easy installation.

Owner

grahamc commented May 20, 2012

Regarding the configuration option, I don't see a clear path to access that option from within checkout.rb. I've dismissed the idea of subclassing it, since that seems to add a large layer of work on top of it.

Member

p commented Dec 3, 2012

How about #189.

@grahamc grahamc closed this Dec 3, 2012

@p p added a commit that referenced this pull request Dec 10, 2012

@p p Allow configuring checkout command (#168, etc.) c87abe9

@p p added a commit that referenced this pull request Dec 10, 2012

@p p Merge pull request #189 from p/configurable-checkout
Allow configuring checkout command (#168, etc.)
473c376

@Smarre Smarre added a commit to Smarre/integrity that referenced this pull request Apr 2, 2013

@p @Smarre p + Smarre Allow configuring checkout command (#168, etc.) bfb1daa
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment