Subject: Re: [PATCH] Implement packed refs

From: "Shawn O. Pearce" <[email-masked]>
Date: Mon, 14 May 2007 18:45:33 -0400

Robin Rosenberg <[email-masked]> 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.