From: Shawn O. Pearce Date: Mon, 14 May 2007 22:45:33 GMT Subject: Re: [PATCH] Implement packed refs Message-ID: <20070514224533.GA28832@spearce.org> In-Reply-To: <11790995571637-git-send-email-robin.rosenberg@dewire.com> Robin Rosenberg wrote: > diff --git a/org.spearce.jgit/src/org/spearce/jgit/lib/Repository.java b/org.spearce.jgit/src/org/spearce/jgit/lib/Repository.java > index 76191be..3b2a82c 100644 > @@ -411,6 +412,10 @@ public class Repository { > private Ref readRefBasic(String name) throws IOException { > int depth = 0; > REF_READING: do { > + ObjectId id = packedRefs.get(name); > + if (id != null) > + return new Ref(null, id); > + > final File f = new File(getDirectory(), name); > if (!f.isFile()) { > return new Ref(f, null); This is actually backwards. Git checks the loose ref first, and then the packed ref. The reason is so that users can pack all of their refs (git pack-refs --all) and then just create new ref files for those that they change, rather than rewriting the entire packed-refs file over again. I'm adding a commit after your series to correct this. > + } catch (IOException e) { > + e.printStackTrace(); > + } We really should be throwing exceptions back to the caller, especially on things that could indicate corruption or other problems with reading the repository contents. -- Shawn.