git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
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?

  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).