Re: Manually decoding a git object
- From
Philip Oakley <philipoakley@iee.org>
- Date
- Feb 20, 2012, 07:58 UTC
- Message-ID
- <B268B28A80B446BBADED9B3B6BA4B205@PhilipOakley>
- In-Reply-To
- <CAMocUqRNNXpGOJ2ZG8bWpkieKkVfoo0=Lkevjw+E3Tssw68Hwg@mail.gmail.com>
From: "??" <xudifsd@gmail.com> Sent: Monday, February 20, 2012 4:45 AM
Show 12 quoted lines
> 2012/2/20 Philip Oakley <philipoakley@iee.org>: >> If I have a renamed file which is a git object, such a "Git_Object", was >> 8c-something-or-other, what is the easiest way of examining / decoding / >> recreating the original file (either as its sha1, or a cat-file). >> > I don't think I fully understood what you mean, I assume you just move > an object file from $GIT_DIR/objects/ to somewhere and rename it, > let's call it "obj", so if you want to exam its content you can just > simply call "git cat-file -p obj". And you can also use "git cat-file > -t obj" to exam its object type. If it's a blob you can use "git > cat-file -p obj > original" to recreate it, else it's meaningless to > recreate it.
When I tried it from my home directory (not in a git directory): $ git cat-file -p Git-Object fatal: Not a git repository (or any of the parent directories): .git
Because its sha1 isn't yet known I can't put it into the correct .git/objects/xx/ subdirectory of an fresh 'git init', and I have located an unzip programme that will take the plain git object and decode it - they all expect archives.
I've described the background use-case at http://stackoverflow.com/questions/9341278/how-to-track-the-git-directory-in-git-in-its-own-store - the edit links to a typical corporate scenario.
Even just locating a zlib implementation that simply confirms the file stream is compressesd and deflates it would be a start. Philip