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

Re: arch 2.0 first source available (git related)

From
TLThomas Lord <lord@emf.net>
Date
Jul 9, 2005, 14:20 UTC
Message-ID
<1120918813.4901.27.camel@dev1.seyza.com>
In-Reply-To
<20050709113942.GB26343@pasky.ji.cz>
On Sat, 2005-07-09 at 13:39 +0200, Petr Baudis wrote:
Show 10 quoted lines
> Dear diary, on Sat, Jul 09, 2005 at 02:12:27AM CEST, I got a letter
> where Thomas Lord <lord@emf.net> told me that...
> > 2.0 is very much git influenced but it brings some (imo significant)
> >   improvements to the table.
> 
> Could you list some of the things interesting for us? What is the
> benefit of a prereq graph compared to just having a single shared object
> database? From the documentation, that's the only interesting thing I
> noticed which is different from git (and things like artificially
> limiting filename length to 256 characters).

Well, partly the statement about improvements was a hint to look beyond the docs to the code but...

The prereq graph is, indeed, an improvement.  
It:
* speeds up and simplifies blob-db GC
* vastly improves the possibilities for archive integrity
  checking
* can be used for smart, streamy network mirroring of revisions
* allows people to commit the same tree multiple ways: e.g., 
  once optimizing access for users who frequently read incremental
  updates and a second time for users who only update at named
  releases
* helps make the system securable (current code isn't yet) against
  the possibility of multiple files with identical fingerprints but
  different contents in the same or related trees
* helps in a variety of ways when it comes time to make `revc'
  operable over a network -- committing to a remote archive.

Other advantageous (imo) changes from `git' not mentioned in the original message:

* blobs do not have header lines
  Git blobs all begin with a line of text declaring the "type"
  and size of the blob.   That doesn't increase database 
  verifiability significantly and I found no use for the headers.
  Having the headers makes it needlessly complicated to translate
  a file to or from a blob.
  `revc' does not have blob headers.
* `revc' uses portable file formats
   In working dirs, `git' stores binary files which are 
   endian, word-size, and compiler-environment specific.
   `revc' stores some binary files too (for performance
   and simplicity reasons) but uses only portable formats.
* `revc' is shaping up into much cleaner and more portable code
   (at least compared to the last version of `git' I saw --
    which was extremely *lucid* code but not terribly
    clean and not even attempting to be portable.)

The list goes on and I don't promise to be picking the most interesting items from it according to anybody's particular metric of "interesting".

revc -- probably "strange yet familiar" to git hackers, -t

Previous: Petr BaudisNext: Petr Baudis
Message 3 of 7 in “arch 2.0 first source available (git related)”
  1. Thomas LordJul 9, 2005
  2. Petr BaudisJul 9, 2005
  3. Thomas LordJul 9, 2005
  4. Petr BaudisJul 11, 2005
  5. Thomas LordJul 11, 2005
  6. Petr BaudisJul 11, 2005
  7. Thomas LordJul 12, 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.