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

[JGIT PATCH 00/11] Repository instance caching

From
Shawn O. Pearce <spearce@spearce.org>
Date
Jul 11, 2009, 20:19 UTC
Message-ID
<1247343566-19025-1-git-send-email-spearce@spearce.org>

This series lays the groundwork for caching Repository instances within the JRE, such as a server daemon might want when it is accessing multiple repositories, like a git:// daemon needs to do.

We also modify the way alternates are handled, checking to see if an alternate is actually an objects directory for a Repository, and if so, using the Repository instance from the cache in the alternate chain. This permits better reuse of pack files windows when repositories are using alternates. Based on this support we can also now implement the ".have" logic in the ReceivePack server code.

I plan to follow onto this series with work to support submodules in a server setting, e.g. processing the .gitmodules directly from the object database and being able to examine the submodule Repository.

Shawn O. Pearce (11):
  Change Daemon to use concurrent collections for exported repositories
  Make Daemon's exportAll check not require synchronization
  Don't retry ".git" suffix in daemon if already tried
  Refactor ref advertisement code from server implementations
  Don't advertise HEAD from ReceivePack
  Add a use reference counter to Repository
  Introduce RepositoryCache to cache handles of Repository objects
  Change Daemon to use RepositoryCache
  Expose the Repository's ObjectDatabase object
  Use cached Repository instances when resolving alternates
  Send .have lines in ReceivePack for alternate repositories
 .../org/spearce/jgit/lib/RepositoryCacheTest.java  |  126 +++++++
 .../org/spearce/jgit/lib/RepositoryTestCase.java   |   16 +-
 .../jgit/errors/RepositoryNotFoundException.java   |   65 ++++
 .../jgit/lib/AlternateRepositoryDatabase.java      |  127 +++++++
 .../src/org/spearce/jgit/lib/ObjectDatabase.java   |   16 +-
 .../src/org/spearce/jgit/lib/ObjectDirectory.java  |   18 +-
 .../src/org/spearce/jgit/lib/Repository.java       |   18 +-
 .../src/org/spearce/jgit/lib/RepositoryCache.java  |  386 ++++++++++++++++++++
 .../src/org/spearce/jgit/transport/Daemon.java     |   76 ++---
 .../org/spearce/jgit/transport/DaemonService.java  |   14 +-
 .../org/spearce/jgit/transport/ReceivePack.java    |   67 +---
 .../org/spearce/jgit/transport/RefAdvertiser.java  |  189 ++++++++++
 .../src/org/spearce/jgit/transport/UploadPack.java |   93 +-----
 13 files changed, 1019 insertions(+), 192 deletions(-)
 create mode 100644 org.spearce.jgit.test/tst/org/spearce/jgit/lib/RepositoryCacheTest.java
 create mode 100644 org.spearce.jgit/src/org/spearce/jgit/errors/RepositoryNotFoundException.java
 create mode 100644 org.spearce.jgit/src/org/spearce/jgit/lib/AlternateRepositoryDatabase.java
 create mode 100644 org.spearce.jgit/src/org/spearce/jgit/lib/RepositoryCache.java
 create mode 100644 org.spearce.jgit/src/org/spearce/jgit/transport/RefAdvertiser.java
Next: Shawn O. Pearce
Message 1 of 14 in “Repository instance caching”
  1. 00/11 Repository instance cachingShawn O. Pearce, Jul 11, 2009
  2. 01/11 Change Daemon to use concurrent collections for exported repositoriesShawn O. Pearce, Jul 11, 2009
  3. 02/11 Make Daemon's exportAll check not require synchronizationShawn O. Pearce, Jul 11, 2009
  4. 03/11 Don't retry ".git" suffix in daemon if already triedShawn O. Pearce, Jul 11, 2009
  5. 04/11 Refactor ref advertisement code from server implementationsShawn O. Pearce, Jul 11, 2009
  6. 05/11 Don't advertise HEAD from ReceivePackShawn O. Pearce, Jul 11, 2009
  7. 06/11 Add a use reference counter to RepositoryShawn O. Pearce, Jul 11, 2009
  8. 07/11 Introduce RepositoryCache to cache handles of Repository objectsShawn O. Pearce, Jul 11, 2009
  9. 08/11 Change Daemon to use RepositoryCacheShawn O. Pearce, Jul 11, 2009
  10. 09/11 Expose the Repository's ObjectDatabase objectShawn O. Pearce, Jul 11, 2009
  11. 10/11 Use cached Repository instances when resolving alternatesShawn O. Pearce, Jul 11, 2009
  12. 11/11 Send .have lines in ReceivePack for alternate repositoriesShawn O. Pearce, Jul 11, 2009
  13. Robin RosenbergJul 21, 2009
  14. Shawn O. PearceJul 21, 2009

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.