Re: [PATCH] Implement packed refs
- From
Shawn O. Pearce <spearce@spearce.org>
- Date
- May 14, 2007, 22:45 UTC
- Message-ID
- <20070514224533.GA28832@spearce.org>
- In-Reply-To
- <11790995571637-git-send-email-robin.rosenberg@dewire.com>
Robin Rosenberg <robin.rosenberg@dewire.com> wrote:
Show 13 quoted lines
> 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.