git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Daniel Barkalow <barkalow@iabervon.org>
To: Petr Baudis <pasky@ucw.cz>
Cc: git@vger.kernel.org
Subject: Re: Parsing code in revision.h
Date: Sun, 17 Apr 2005 12:44:38 -0400 (EDT)	[thread overview]
Message-ID: <Pine.LNX.4.21.0504171237200.30848-100000@iabervon.org> (raw)
In-Reply-To: <20050417160929.GJ1487@pasky.ji.cz>

On Sun, 17 Apr 2005, Petr Baudis wrote:

> Dear diary, on Sun, Apr 17, 2005 at 05:24:20PM CEST, I got a letter
> where Daniel Barkalow <barkalow@iabervon.org> told me that...
> > This adds support to revision.h for parsing commit records (but not going
> > any further than parsing a single record). Something like this is needed
> > by anything that uses revision.h, but older programs open-code it.
> > 
> > Signed-Off-By: Daniel Barkalow <barkalow@iabervon.org>
> 
> Could you please convert the current users (rev-tree.c and fsck-cache.c)
> to use this in the same patch?

They do things somewhat differently, so it would be more intrusive. Could
I send an extra patch to convert them instead of doing them here?

> > Index: revision.h
> > ===================================================================
> > --- 45f926575d2c44072bfcf2317dbf3f0fbb513a4e/revision.h  (mode:100644 sha1:28d0de3261a61f68e4e0948a25a416a515cd2e83)
> > +++ 37a0b01b85c2999243674d48bfc71cdba0e5518e/revision.h  (mode:100644 sha1:523bde6e14e18bb0ecbded8f83ad4df93fc467ab)
> > @@ -24,6 +24,7 @@
> >  	unsigned int flags;
> >  	unsigned char sha1[20];
> >  	unsigned long date;
> > +	unsigned char tree[20];
> >  	struct parent *parent;
> >  };
> >  
> > @@ -111,4 +112,29 @@
> >  	}
> >  }
> >  
> > +static int parse_commit_object(struct revision *rev)
> > +{
> > +	if (!(rev->flags & SEEN)) {
> > +		void *buffer, *bufptr;
> > +		unsigned long size;
> > +		char type[20];
> > +		unsigned char parent[20];
> > +
> > +		rev->flags |= SEEN;
> > +		buffer = bufptr = read_sha1_file(rev->sha1, type, &size);
> > +		if (!buffer || strcmp(type, "commit"))
> > +			return -1;
> > +		get_sha1_hex(bufptr + 5, rev->tree);
> > +		bufptr += 46; /* "tree " + "hex sha1" + "\n" */
> > +		while (!memcmp(bufptr, "parent ", 7) && 
> > +		       !get_sha1_hex(bufptr+7, parent)) {
> > +			add_relationship(rev, parent);
> > +			bufptr += 48;   /* "parent " + "hex sha1" + "\n" */
> > +		}
> > +		//rev->date = parse_commit_date(bufptr);
> 
> I don't like this.

Yeah, that's left over from the not-quite the same parsing code in the
other programs.

> > +		free(buffer);
> > +	}
> > +	return 0;
> > +}
> > +
> >  #endif /* REVISION_H */
> 
> BTW, I think that in longer term having this stuffed in revision.h is a
> bad idea, we should have revision.c. I will accept patches putting the
> stuff to revision.h for now, though (unless it gets outrageous).

I'd actually like to make them commit.{c,h}, since the system calls the
things they actually deal in commits, not revisions. But this is getting
into stuff that's likely to cause painful divergance from Linus's repo,
which is why I'm a bit leary of actually doing it now.

	-Daniel
*This .sig left intentionally blank*


  reply	other threads:[~2005-04-17 16:40 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20050417144947.GG1487@pasky.ji.cz>
2005-04-17 15:20 ` [0/5] Patch set for various things Daniel Barkalow
2005-04-17 15:24   ` [1/5] Parsing code in revision.h Daniel Barkalow
2005-04-17 16:09     ` Petr Baudis
2005-04-17 16:44       ` Daniel Barkalow [this message]
2005-04-17 18:18     ` [1/5] " Linus Torvalds
2005-04-17 18:30       ` Petr Baudis
2005-04-17 19:25         ` Linus Torvalds
2005-04-17 19:45           ` Daniel Barkalow
2005-04-17 19:54             ` Linus Torvalds
2005-04-17 20:06               ` Linus Torvalds
2005-04-17 20:22                 ` Daniel Barkalow
2005-04-17 19:09       ` Daniel Barkalow
2005-04-17 15:27   ` [2/5] Add merge-base Daniel Barkalow
2005-04-17 16:01     ` Petr Baudis
2005-04-17 16:36       ` Daniel Barkalow
2005-04-17 16:51     ` [2.1/5] " Daniel Barkalow
2005-04-17 21:21       ` Petr Baudis
2005-04-17 21:25         ` Daniel Barkalow
2005-04-17 15:31   ` [3/5] Add http-pull Daniel Barkalow
2005-04-17 18:10     ` Petr Baudis
2005-04-17 18:49       ` Daniel Barkalow
2005-04-17 19:08         ` Petr Baudis
2005-04-17 19:24           ` Daniel Barkalow
2005-04-17 19:59             ` Petr Baudis
2005-04-21  3:27               ` Brad Roberts
2005-04-21  4:28                 ` Daniel Barkalow
2005-04-21 22:05                   ` tony.luck
2005-04-22 19:46                     ` Daniel Barkalow
2005-04-22 22:40                       ` Petr Baudis
2005-04-22 23:00                         ` Daniel Barkalow
2005-04-22 23:08                           ` Petr Baudis
2005-04-22 23:12                             ` Daniel Barkalow
2005-04-22 23:24                               ` Martin Schlemmer
2005-04-17 18:58     ` [3.1/5] " Daniel Barkalow
2005-04-17 15:35   ` [4/5] Add option for hardlinkable cache of extracted blobs Daniel Barkalow
2005-04-17 17:47     ` Petr Baudis
2005-04-17 18:54       ` Daniel Barkalow
2005-04-17 19:25       ` Paul Jackson
2005-04-17 19:59         ` Petr Baudis
2005-04-17 20:03           ` Daniel Barkalow
2005-04-17 20:18             ` Petr Baudis
2005-04-18  1:35               ` Paul Jackson
2005-04-18  1:48                 ` Petr Baudis
2005-04-18  4:49                   ` Paul Jackson
2005-04-17 20:58             ` Russell King
2005-04-17 22:10               ` First ever real kernel git merge! Linus Torvalds
2005-04-18  1:24             ` [4/5] Add option for hardlinkable cache of extracted blobs Paul Jackson
2005-04-18  1:20           ` Paul Jackson
2005-04-17 15:37   ` [5/5] Add commit-id to version Daniel Barkalow

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=Pine.LNX.4.21.0504171237200.30848-100000@iabervon.org \
    --to=barkalow@iabervon.org \
    --cc=git@vger.kernel.org \
    --cc=pasky@ucw.cz \
    /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).