Clone (--no-checkout):
$ git clone --no-checkout https://github.com/Katee/git-bomb.git
Cloning into 'git-bomb'...
remote: Counting objects: 18, done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 18 (delta 2), reused 0 (delta 0), pack-reused 12
Unpacking objects: 100% (18/18), done.
From there, you can do some operations like `git log` and `git cat-file -p HEAD` (I use the "dump" alias[1]; `git config --global alias.dump catfile -p`), but not others `git checkout` or `git status`.[1] Thanks to Jim Weirich and Git-Immersion, http://gitimmersion.com/lab_23.html. I never knew the guy, but, ~~8yrs~~ (corrected below) 3.5yrs after his passing, I still go back to his presentations on Git and Ruby often.
Edit: And, to see the whole tree:
NEXT_REF=HEAD
while [ -n "$NEXT_REF" ]; do
echo "$NEXT_REF"
git dump "${NEXT_REF}"
echo
NEXT_REF=$(git dump "${NEXT_REF}"^{tree} 2>/dev/null | awk '{ if($4 == "d0" || $4 == "f0"){ print $3 } }')
doneHad the pleasure of meeting him in Singapore in 2013.
Still so much great code of his we use all the time.
https://github.com/Katee/git-bomb/commit/45546f17e5801791d4b... shows:
"Sorry, this diff is taking too long to generate. It may be too large to display on GitHub."
...so they must have some kind of backend limits that may have prevented this for becoming an issue.
I wonder what would happen if it was hosted on a GitLab instance? Might have to try that sometime...
> Project Goals
> Make the git data storage tier of large GitLab instances, and GitLab.com in particular, fast.
[0]: https://gitlab.com/gitlab-org/gitaly
Edit: It looks like Gitaly still spawns git for low level operations. It is probably affected.
Someone will probably have to actually try an experiment with Gitlab.
My naive question is whether CLI "git" would need or could benefit from a patch. Part of me thinks it doesn't, since there are legitimate reasons for each individual aspect of creating the problematic repo. But I probably don't understand god deeply enough to know for sure.
Visual Studio Team Services has a fundamentally different architecture, but we do some similar mechanisms despite that. (I should do some talks about it - but it's always hard to know how much to say about your defenses lest it give attackers clever new ideas!)
attackers will try clever new ideas anyway if their less clever old ideas don't work :P
Counting objects: 18, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (17/17), done.
Writing objects: 100% (18/18), 2.13 KiB | 0 bytes/s, done.
Total 18 (delta 3), reused 0 (delta 0)
remote: GitLab: Failed to authorize your Git request: internal API unreachable
To gitlab.example.com: lloeki/git-bomb.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@gitlab.example.com:lloeki/git-bomb.git'
I had "Prevent committing secrets to Git" enable though. Disabling this makes the push work. The repo first then can be browsed at the first level only from the web UI, but clicking in any folder breaks the whole thing down with multiple git processes hanging onto git rev-list.EDIT: reported at https://gitlab.com/gitlab-org/gitlab-ce/issues/39093 (confidential).
https://github.com/cocoapods/cocoapods/issues/4989#issuecomm...