From: Chico Sokol <chico.sokol@gmail.com>
To: Shawn Pearce <spearce@spearce.org>
Cc: John Szakmeister <john@szakmeister.net>, git <git@vger.kernel.org>
Subject: Re: Reading commit objects
Date: Wed, 22 May 2013 11:47:31 -0300 [thread overview]
Message-ID: <CABx5MBR=bvFEXhAiXgOfhkgVqhrYdjsWcWyHPc7+=bL-SW4vQA@mail.gmail.com> (raw)
In-Reply-To: <CABx5MBSmCN=avRDCJ+RU8FoRDaGG=6uRfTdVR9m3A=SqpuKAjQ@mail.gmail.com>
Solved! It was exaclty the problem pointed by Shawn.
Here is the working code:
File dotGit = new File("objects/25/0f67ef017fcb97b5371a302526872cfcadad21");
InflaterInputStream inflaterInputStream = new InflaterInputStream(new
FileInputStream(dotGit));
Integer read = inflaterInputStream.read();
while(read != 0) { //reading the bytes from 'commit <lenght>\0'
read = inflaterInputStream.read();
System.out.println((char)read.byteValue());
}
ByteArrayOutputStream os = new ByteArrayOutputStream();
IOUtils.copyLarge(inflaterInputStream, os);
System.out.println(new String(os.toByteArray()));
Thank you all!
--
Chico Sokol
On Wed, May 22, 2013 at 11:25 AM, Chico Sokol <chico.sokol@gmail.com> wrote:
>> Your code is broken. IOUtils is probably corrupting what you get back.
>> After inflating the stream you should see the object type ("commit"),
>> space, its length in bytes as a base 10 string, and then a NUL ('\0').
>> Following that is the tree line, and parent(s) if any. I wonder if
>> IOUtils discarded the remainder of the line after the NUL and did not
>> consider the tree line.
>
>
> Maybe you're right, Shawn. I've also tried the following code:
>
> File dotGit = new File("objects/25/0f67ef017fcb97b5371a302526872cfcadad21");
> InflaterInputStream inflaterInputStream = new InflaterInputStream(new
> FileInputStream(dotGit));
> ByteArrayOutputStream os = new ByteArrayOutputStream();
> IOUtils.copyLarge(inflaterInputStream, os);
> System.out.println(new String(os.toByteArray()));
>
> But we got the same result, I'll try to read the bytes by myself
> (without apache IOUtils). Is the contents of a unpacked object utf-8
> encoded?
next prev parent reply other threads:[~2013-05-22 14:47 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-21 21:21 Reading commit objects Chico Sokol
2013-05-21 21:25 ` Felipe Contreras
2013-05-21 21:37 ` John Szakmeister
2013-05-21 22:18 ` Chico Sokol
2013-05-21 22:22 ` Junio C Hamano
2013-05-21 22:33 ` Chico Sokol
2013-05-21 23:34 ` Jonathan Nieder
2013-05-22 5:54 ` Shawn Pearce
2013-05-22 4:51 ` java zlib woes (was: Reading commit objects) Andreas Krey
2013-05-22 5:56 ` Shawn Pearce
2013-05-27 4:11 ` Andreas Krey
2013-06-04 10:18 ` fetch delta resolution vs. checkout (was: java zlib woes) Andreas Krey
2013-05-22 5:59 ` Reading commit objects Shawn Pearce
2013-05-22 14:20 ` Chico Sokol
2013-05-22 20:02 ` Shawn Pearce
2013-05-22 14:25 ` Chico Sokol
2013-05-22 14:47 ` Chico Sokol [this message]
2013-05-22 19:59 ` Shawn Pearce
2013-05-21 22:20 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CABx5MBR=bvFEXhAiXgOfhkgVqhrYdjsWcWyHPc7+=bL-SW4vQA@mail.gmail.com' \
--to=chico.sokol@gmail.com \
--cc=git@vger.kernel.org \
--cc=john@szakmeister.net \
--cc=spearce@spearce.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).