git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: First web interface and service API draft

From
Petr Baudis <pasky@ucw.cz>
Date
Apr 22, 2005, 12:10 UTC
Message-ID
<20050422121009.GA7173@pasky.ji.cz>
In-Reply-To
<1114166517.3233.4.camel@localhost>

Dear diary, on Fri, Apr 22, 2005 at 12:41:56PM CEST, I got a letter where Christian Meder <chris@absolutegiganten.org> told me that...

> Hi,
Hi,
Show 10 quoted lines
> /<project>
> 
> Ok. The URI should start by stating the project name
> e.g. /linux-2.6. This does bloat the URI slightly but I don't think
> that we want to have one root namespace per git archive in the long
> run. Additionally you can always put rewriting or redirecting rules at
> the root level for additional convenience when there's an obvious
> default project.
> 
> Should provide some meta data, stats, etc. if available.

I don't think this makes much sense. I think you should just apply -p1 to all the directories, and define that there should be some / page which should contain some metadata regarding the repository you are accessing (probably branches, tags, and such).

Show 9 quoted lines
> -------
> /<project>/blob/<blob-sha1>
> /<project>/commit/<commit-sha1>
> 
> These are the easy ones: the web interface should be able to spit out
> the plain text data of a blob and a commit at these URIs. Users would
> be probably scripts and other downloads.
> Open questions:
> * Blob data should be probably binary ?
What do you mean by binary?
> * Should it be commit or changeset ? Linus seems to have changed
> nomenclature in the REAME
We call it commit everywhere but in the README. :-)

The "changeset" name is bad anyway. It is a commit of a complete tree state, diff against one of its parent commits is the set of changes.

Show 6 quoted lines
> -------
> /<project>/tree/<tree-sha1>
> 
> Tree objects are served in binary form. Primary audience are scripts,
> etc. Human beings will probably get a heart attack when they
> accidentally visit this URI.
Binary form is unusable for scripts.
Anything wrong with putting ls-tree output there?
We should also have /gitobj/<sha1> for fetching the raw git objects.
Show 7 quoted lines
> -------
> /<project>/blob/<blob-sha1>.html
> /<project>/commit/<commit-sha1>.html
> /<project>/tree/<tree-sha1>.html
> 
> A HTML version of blob, commit and tree fully linked aimed at human
> beings.
How can I imagine an "HTML version of blob"?
Show 5 quoted lines
> -------
> /<project>/tree/<tree-sha1>/diff/<ancestor-tree-sha1>/html
> 
> Non recursive HTML view of the objects which are contained in the diff
> fully linked with the individual HTML views.
Why not .html?
> -------
> /<project>/changelog/<time-spec>
I'd personally prefer /log/, but whatever.

For consistency, I'd stay with the plaintext output by default, .html if requested.

And I think abusing directories for this is bad. Query string seems much more appropriate, since this is something that changes dynamically a lot, not a permanent resource identifier.

OTOH, I'd use
	/log/<commit>

to specify what commit to start at. It just does not make sense otherwise, you would not know where to start.

I think the <commit> should follow the same or similar rules as Cogito id decoding. E.g. to get latest Linus' changelog, you'd do

	/log/linus
Show 13 quoted lines
> -------
> /<project>/changelog/<time-spec>/search/<regexp>
> 
> HTML changelog for the given <time-spec> filtered by the <regexp>.
> 
> * again plain version needed ?
> 
> ------
> /<project>/changelog/<time-spec>/search/author/<regexp>
> /<project>/changelog/<time-spec>/search/committer/<regexp>
> /<project>/changelog/<time-spec>/search/signedoffby/<regexp>
> 
> convenience wrappers for generic search restricted to these fields.

Same here. just ?author=...&committer=...&signedoffby=... etc. You can even combine several criteria.

> ------
> 
> open questions:
> * how to generate and publish additional merge information ?
I don't understand....
> * how to generate and publish tree and blob history information ? This
> is probably expensive with git.
...this either.
> * how to represent branches ? should we code up the branches in the
> project id like linux-2.6-mm or whatever ?
See above.
-- 
				Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
C++: an octopus made by nailing extra legs onto a dog. -- Steve Taylor
Previous: Christian MederNext: El Draper
Message 7 of 16 in “First web interface and service API draft”
  1. Christian MederApr 22, 2005
  2. Jon SeymourApr 22, 2005
  3. Petr BaudisApr 22, 2005
  4. Jon SeymourApr 22, 2005
  5. Christian MederApr 22, 2005
  6. Christian MederApr 22, 2005
  7. Petr BaudisApr 22, 2005
  8. El DraperApr 22, 2005
  9. Christian MederApr 22, 2005
  10. Jon SeymourApr 22, 2005
  11. Jan HarkesApr 22, 2005
  12. Christian MederApr 22, 2005
  13. Jon SeymourApr 23, 2005
  14. Petr BaudisApr 22, 2005
  15. Petr BaudisApr 22, 2005
  16. Christian MederApr 24, 2005

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.