{"thread":{"id":"8142","subject":"This week in EGIT - more tags","startedAt":"2007-05-13T23:39:13Z","lastAt":"2007-05-14T22:49:23Z","messageCount":13,"participants":["Robin Rosenberg","Grzegorz Kulewski","Noel Grandin","Shawn O. Pearce"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"42071","messageId":"11790995572233-git-send-email-robin.rosenberg@dewire.com","threadId":"8142","inReplyTo":null,"subject":"This week in EGIT - more tags","fromName":"Robin Rosenberg","fromEmail":"robin.rosenberg@dewire.com","sentAt":"2007-05-13T23:39:13Z","receivedAt":"2007-05-13T23:39:13Z","isPatch":false,"sender":{"key":"robin.rosenberg@dewire.com","avatar":"https://avatars.githubusercontent.com/u/46357?v=4"},"body":"I thought the previous batch was the last 'safe' one, but this one proably\nis too as it only adds display of tags and branch to the history view and\nno user accessible modifying codde. \n\nIn order to do that I had to teach the core more about funny tags and packed\nrefs.\n\n-- robin\n"},{"id":"42074","messageId":"11790995571082-git-send-email-robin.rosenberg@dewire.com","threadId":"8142","inReplyTo":"11790995572233-git-send-email-robin.rosenberg@dewire.com","subject":"[PATCH] Implement simple tags","fromName":"Robin Rosenberg","fromEmail":"robin.rosenberg@dewire.com","sentAt":"2007-05-13T23:39:14Z","receivedAt":"2007-05-13T23:39:14Z","isPatch":true,"sender":{"key":"robin.rosenberg@dewire.com","avatar":"https://avatars.githubusercontent.com/u/46357?v=4"},"body":"This is just a reference in <gitdir>/refs/tags with the SHA-1\nof the tagged object.\n\nSigned-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>\n---\n .../src/org/spearce/jgit/lib/Repository.java       |   14 +++++++-------\n org.spearce.jgit/src/org/spearce/jgit/lib/Tag.java |   20 ++++++++++++++++----\n .../tst/org/spearce/jgit/lib/T0003_Basic.java      |   13 +++++++++++++\n 3 files changed, 36 insertions(+), 11 deletions(-)\n\ndiff --git a/org.spearce.jgit/src/org/spearce/jgit/lib/Repository.java b/org.spearce.jgit/src/org/spearce/jgit/lib/Repository.java\nindex 482f41d..76191be 100644\n--- a/org.spearce.jgit/src/org/spearce/jgit/lib/Repository.java\n+++ b/org.spearce.jgit/src/org/spearce/jgit/lib/Repository.java\n@@ -262,17 +262,17 @@ public class Repository {\n \n \tpublic Tag mapTag(String revstr) throws IOException {\n \t\tfinal ObjectId id = resolve(revstr);\n-\t\treturn id != null ? mapTag(id) : null;\n+\t\treturn id != null ? mapTag(revstr, id) : null;\n \t}\n \n-\tpublic Tag mapTag(final ObjectId id) throws IOException {\n+\tpublic Tag mapTag(final String refName, final ObjectId id) throws IOException {\n \t\tfinal ObjectLoader or = openObject(id);\n \t\tif (or == null)\n \t\t\treturn null;\n \t\tfinal byte[] raw = or.getBytes();\n \t\tif (Constants.TYPE_TAG.equals(or.getType()))\n-\t\t\treturn new Tag(this, id, raw);\n-\t\tthrow new IncorrectObjectTypeException(id, Constants.TYPE_TAG);\n+\t\t\treturn new Tag(this, id, refName, raw);\n+\t\treturn new Tag(this, id, refName, null);\n \t}\n \n \tpublic RefLock lockRef(final String ref) throws IOException {\n@@ -469,7 +469,7 @@ public class Repository {\n \t\treturn listFilesRecursively(new File(refsDir, \"heads\"), null);\n \t}\n \n-\tpublic Collection getTags() {\n+\tpublic Collection<String> getTags() {\n \t\treturn listFilesRecursively(new File(refsDir, \"tags\"), null);\n \t}\n \n@@ -535,10 +535,10 @@ public class Repository {\n \t\treturn ret;\n \t}\n \n-\tprivate Collection listFilesRecursively(File root, File start) {\n+\tprivate Collection<String> listFilesRecursively(File root, File start) {\n \t\tif (start == null)\n \t\t\tstart = root;\n-\t\tCollection ret = new ArrayList();\n+\t\tCollection<String> ret = new ArrayList();\n \t\tFile[] files = start.listFiles();\n \t\tfor (int i = 0; i < files.length; ++i) {\n \t\t\tif (files[i].isDirectory())\ndiff --git a/org.spearce.jgit/src/org/spearce/jgit/lib/Tag.java b/org.spearce.jgit/src/org/spearce/jgit/lib/Tag.java\nindex 877c440..d5c6b54 100644\n--- a/org.spearce.jgit/src/org/spearce/jgit/lib/Tag.java\n+++ b/org.spearce.jgit/src/org/spearce/jgit/lib/Tag.java\n@@ -44,10 +44,16 @@ public class Tag {\n \t\tobjdb = db;\n \t}\n \n-\tpublic Tag(final Repository db, final ObjectId id, final byte[] raw) {\n+\tpublic Tag(final Repository db, final ObjectId id, String refName, final byte[] raw) {\n \t\tobjdb = db;\n-\t\ttagId = id;\n-\t\tobjId = ObjectId.fromString(raw, 7);\n+\t\tif (raw != null) {\n+\t\t\ttagId = id;\n+\t\t\tobjId = ObjectId.fromString(raw, 7);\n+\t\t} else\n+\t\t\tobjId = id;\n+\t\tif (refName.startsWith(\"refs/tags/\"))\n+\t\t\trefName = refName.substring(10);\n+\t\ttag = refName;\n \t\tthis.raw = raw;\n \t}\n \n@@ -119,7 +125,13 @@ public class Tag {\n \tpublic void tag() throws IOException {\n \t\tif (getTagId() != null)\n \t\t\tthrow new IllegalStateException(\"exists \" + getTagId());\n-\t\tsetTagId(new ObjectWriter(objdb).writeTag(this));\n+\t\tif (tagger!=null || message!=null || type!=null) {\n+\t\t\tObjectId tagid = new ObjectWriter(objdb).writeTag(this);\n+\t\t\tsetTagId(tagid);\n+\t\t\tobjdb.writeRef(\"refs/heads/\"+getTag(),tagid);\n+\t\t} else {\n+\t\t\tobjdb.writeRef(\"refs/heads/\"+getTag(),objId);\n+\t\t}\n \t}\n \n \tpublic String toString() {\ndiff --git a/org.spearce.jgit/tst/org/spearce/jgit/lib/T0003_Basic.java b/org.spearce.jgit/tst/org/spearce/jgit/lib/T0003_Basic.java\nindex 0302a45..115e391 100644\n--- a/org.spearce.jgit/tst/org/spearce/jgit/lib/T0003_Basic.java\n+++ b/org.spearce.jgit/tst/org/spearce/jgit/lib/T0003_Basic.java\n@@ -338,6 +338,19 @@ public class T0003_Basic extends RepositoryTestCase {\n \t\tassertEquals(\"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391\", mapTag.getObjId().toString());\n \t}\n \n+\tpublic void test020b_createBlobPlainTag() throws IOException {\n+\t\ttest020_createBlobTag();\n+\t\tTag t = new Tag(db);\n+\t\tt.setTag(\"test020b\");\n+\t\tt.setObjId(new ObjectId(\"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391\"));\n+\t\tt.tag();\n+\t\t\n+\t\tTag mapTag = db.mapTag(\"test020b\");\n+\t\tassertEquals(\"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391\", mapTag.getObjId().toString());\n+\t\t\n+\t\t// We do not repeat the plain tag test for other object types\n+\t}\n+\n \tpublic void test021_createTreeTag() throws IOException {\n \t\tfinal ObjectId emptyId = new ObjectWriter(db).writeBlob(new byte[0]);\n \t\tfinal Tree almostEmptyTree = new Tree(db);\n-- \n1.5.1.1\n"},{"id":"42073","messageId":"11790995573817-git-send-email-robin.rosenberg@dewire.com","threadId":"8142","inReplyTo":"11790995571082-git-send-email-robin.rosenberg@dewire.com","subject":"[PATCH] Write refs when creating tags","fromName":"Robin Rosenberg","fromEmail":"robin.rosenberg@dewire.com","sentAt":"2007-05-13T23:39:15Z","receivedAt":"2007-05-13T23:39:15Z","isPatch":true,"sender":{"key":"robin.rosenberg@dewire.com","avatar":"https://avatars.githubusercontent.com/u/46357?v=4"},"body":"Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>\n---\n org.spearce.jgit/src/org/spearce/jgit/lib/Tag.java |    4 ++--\n .../tst/org/spearce/jgit/lib/T0003_Basic.java      |    6 +++---\n 2 files changed, 5 insertions(+), 5 deletions(-)\n\ndiff --git a/org.spearce.jgit/src/org/spearce/jgit/lib/Tag.java b/org.spearce.jgit/src/org/spearce/jgit/lib/Tag.java\nindex d5c6b54..d2a1b2b 100644\n--- a/org.spearce.jgit/src/org/spearce/jgit/lib/Tag.java\n+++ b/org.spearce.jgit/src/org/spearce/jgit/lib/Tag.java\n@@ -128,9 +128,9 @@ public class Tag {\n \t\tif (tagger!=null || message!=null || type!=null) {\n \t\t\tObjectId tagid = new ObjectWriter(objdb).writeTag(this);\n \t\t\tsetTagId(tagid);\n-\t\t\tobjdb.writeRef(\"refs/heads/\"+getTag(),tagid);\n+\t\t\tobjdb.writeRef(\"refs/tags/\"+getTag(),tagid);\n \t\t} else {\n-\t\t\tobjdb.writeRef(\"refs/heads/\"+getTag(),objId);\n+\t\t\tobjdb.writeRef(\"refs/tags/\"+getTag(),objId);\n \t\t}\n \t}\n \ndiff --git a/org.spearce.jgit/tst/org/spearce/jgit/lib/T0003_Basic.java b/org.spearce.jgit/tst/org/spearce/jgit/lib/T0003_Basic.java\nindex 115e391..2f76907 100644\n--- a/org.spearce.jgit/tst/org/spearce/jgit/lib/T0003_Basic.java\n+++ b/org.spearce.jgit/tst/org/spearce/jgit/lib/T0003_Basic.java\n@@ -331,7 +331,7 @@ public class T0003_Basic extends RepositoryTestCase {\n \t\tt.tag();\n \t\tassertEquals(\"6759556b09fbb4fd8ae5e315134481cc25d46954\", t.getTagId().toString());\n \n-\t\tTag mapTag = db.mapTag(\"6759556b09fbb4fd8ae5e315134481cc25d46954\");\n+\t\tTag mapTag = db.mapTag(\"test020\");\n \t\tassertEquals(\"blob\", mapTag.getType());\n \t\tassertEquals(\"test020 tagged\\n\", mapTag.getMessage());\n \t\tassertEquals(new PersonIdent(jauthor, 1154236443000L, -4 * 60), mapTag.getAuthor());\n@@ -365,7 +365,7 @@ public class T0003_Basic extends RepositoryTestCase {\n \t\tt.tag();\n \t\tassertEquals(\"b0517bc8dbe2096b419d42424cd7030733f4abe5\", t.getTagId().toString());\n \n-\t\tTag mapTag = db.mapTag(\"b0517bc8dbe2096b419d42424cd7030733f4abe5\");\n+\t\tTag mapTag = db.mapTag(\"test021\");\n \t\tassertEquals(\"tree\", mapTag.getType());\n \t\tassertEquals(\"test021 tagged\\n\", mapTag.getMessage());\n \t\tassertEquals(new PersonIdent(jauthor, 1154236443000L, -4 * 60), mapTag.getAuthor());\n@@ -392,7 +392,7 @@ public class T0003_Basic extends RepositoryTestCase {\n \t\tt.tag();\n \t\tassertEquals(\"0ce2ebdb36076ef0b38adbe077a07d43b43e3807\", t.getTagId().toString());\n \n-\t\tTag mapTag = db.mapTag(\"0ce2ebdb36076ef0b38adbe077a07d43b43e3807\");\n+\t\tTag mapTag = db.mapTag(\"test022\");\n \t\tassertEquals(\"commit\", mapTag.getType());\n \t\tassertEquals(\"test022 tagged\\n\", mapTag.getMessage());\n \t\tassertEquals(new PersonIdent(jauthor, 1154236443000L, -4 * 60), mapTag.getAuthor());\n-- \n1.5.1.1\n"},{"id":"42075","messageId":"11790995571637-git-send-email-robin.rosenberg@dewire.com","threadId":"8142","inReplyTo":"11790995573817-git-send-email-robin.rosenberg@dewire.com","subject":"[PATCH] Implement packed refs","fromName":"Robin Rosenberg","fromEmail":"robin.rosenberg@dewire.com","sentAt":"2007-05-13T23:39:16Z","receivedAt":"2007-05-13T23:39:16Z","isPatch":true,"sender":{"key":"robin.rosenberg@dewire.com","avatar":"https://avatars.githubusercontent.com/u/46357?v=4"},"body":"Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>\n---\n .../src/org/spearce/jgit/lib/Repository.java       |   48 +++++++++++++++++++-\n .../tst/org/spearce/jgit/lib/T0003_Basic.java      |   44 ++++++++++++++++++\n 2 files changed, 91 insertions(+), 1 deletions(-)\n\ndiff --git a/org.spearce.jgit/src/org/spearce/jgit/lib/Repository.java b/org.spearce.jgit/src/org/spearce/jgit/lib/Repository.java\nindex 76191be..3b2a82c 100644\n--- a/org.spearce.jgit/src/org/spearce/jgit/lib/Repository.java\n+++ b/org.spearce.jgit/src/org/spearce/jgit/lib/Repository.java\n@@ -399,6 +399,7 @@ public class Repository {\n \n \tprivate Ref readRef(final String revstr, final boolean missingOk)\n \t\t\tthrows IOException {\n+\t\trefreshPackredRefsCache();\n \t\tfor (int k = 0; k < refSearchPaths.length; k++) {\n \t\t\tfinal Ref r = readRefBasic(refSearchPaths[k] + revstr);\n \t\t\tif (missingOk || r.getObjectId() != null) {\n@@ -411,6 +412,10 @@ public class Repository {\n \tprivate Ref readRefBasic(String name) throws IOException {\n \t\tint depth = 0;\n \t\tREF_READING: do {\n+\t\t\tObjectId id = packedRefs.get(name);\n+\t\t\tif (id != null)\n+\t\t\t\treturn new Ref(null, id);\n+\n \t\t\tfinal File f = new File(getDirectory(), name);\n \t\t\tif (!f.isFile()) {\n \t\t\t\treturn new Ref(f, null);\n@@ -470,7 +475,43 @@ public class Repository {\n \t}\n \n \tpublic Collection<String> getTags() {\n-\t\treturn listFilesRecursively(new File(refsDir, \"tags\"), null);\n+\t\tCollection<String> tags = listFilesRecursively(new File(refsDir, \"tags\"), null);\n+\t\trefreshPackredRefsCache();\n+\t\ttags.addAll(packedRefs.keySet());\n+\t\treturn tags;\n+\t}\n+\n+\tprivate Map<String,ObjectId> packedRefs = new HashMap<String,ObjectId>();\n+\tprivate long packedrefstime = 0;\n+\n+\tprivate void refreshPackredRefsCache() {\n+\t\tFile file = new File(gitDir, \"packed-refs\");\n+\t\tif (!file.exists()) {\n+\t\t\tif (packedRefs.size() > 0)\n+\t\t\t\tpackedRefs = new HashMap();\n+\t\t\treturn;\n+\t\t}\n+\t\tif (file.lastModified() == packedrefstime)\n+\t\t\treturn;\n+\t\tMap newPackedRefs = new HashMap();\n+\t\ttry {\n+\t\t\tBufferedReader b=new BufferedReader(new FileReader(file));\n+\t\t\tString p;\n+\t\t\twhile ((p = b.readLine()) != null) {\n+\t\t\t\tif (p.charAt(0) == '#')\n+\t\t\t\t\tcontinue;\n+\t\t\t\tif (p.charAt(0) == '^') {\n+\t\t\t\t\tcontinue;\n+\t\t\t\t}\n+\t\t\t\tint spos = p.indexOf(' ');\n+\t\t\t\tObjectId id = new ObjectId(p.substring(0,spos));\n+\t\t\t\tString name = p.substring(spos+1);\n+\t\t\t\tnewPackedRefs.put(name, id);\n+\t\t\t}\n+\t\t} catch (IOException e) {\n+\t\t\te.printStackTrace();\n+\t\t}\n+\t\tpackedRefs = newPackedRefs;\n \t}\n \n \t/**\n@@ -551,4 +592,9 @@ public class Repository {\n \t\t}\n \t\treturn ret;\n \t}\n+\t\n+\t/** Clean up stale caches */\n+\tpublic void refreshFromDisk() {\n+\t\tpackedRefs = null;\n+\t}\n }\ndiff --git a/org.spearce.jgit/tst/org/spearce/jgit/lib/T0003_Basic.java b/org.spearce.jgit/tst/org/spearce/jgit/lib/T0003_Basic.java\nindex 2f76907..02ecabf 100644\n--- a/org.spearce.jgit/tst/org/spearce/jgit/lib/T0003_Basic.java\n+++ b/org.spearce.jgit/tst/org/spearce/jgit/lib/T0003_Basic.java\n@@ -21,6 +21,7 @@ import java.io.FileInputStream;\n import java.io.FileReader;\n import java.io.FileWriter;\n import java.io.IOException;\n+import java.io.PrintWriter;\n \n public class T0003_Basic extends RepositoryTestCase {\n \tpublic void test001_Initalize() {\n@@ -428,4 +429,47 @@ public class T0003_Basic extends RepositoryTestCase {\n \t\tObjectId cid = new ObjectWriter(db).writeCommit(commit);\n \t\tassertEquals(\"2979b39d385014b33287054b87f77bcb3ecb5ebf\", cid.toString());\n \t}\n+\t\n+\tpublic void test025_packedRefs() throws IOException {\n+\t\ttest020_createBlobTag();\n+\t\ttest021_createTreeTag();\n+\t\ttest022_createCommitTag();\n+\n+\t\tif (!new File(db.getDirectory(),\"refs/tags/test020\").delete()) throw new Error(\"Cannot delete unpacked tag\");\n+\t\tif (!new File(db.getDirectory(),\"refs/tags/test021\").delete()) throw new Error(\"Cannot delete unpacked tag\");\n+\t\tif (!new File(db.getDirectory(),\"refs/tags/test022\").delete()) throw new Error(\"Cannot delete unpacked tag\");\n+\n+\t\t// We cannot resolve it now, since we have no ref\n+\t\tTag mapTag20missing = db.mapTag(\"test020\");\n+\t\tassertNull(mapTag20missing);\n+\n+\t\t// Construct packed refs file\n+\t\tPrintWriter w = new PrintWriter(new FileWriter(new File(db.getDirectory(), \"packed-refs\")));\n+\t\tw.println(\"# packed-refs with: peeled\");\n+\t\tw.println(\"6759556b09fbb4fd8ae5e315134481cc25d46954 refs/tags/test020\");\n+\t\tw.println(\"^e69de29bb2d1d6434b8b29ae775ad8c2e48c5391\");\n+\t\tw.println(\"b0517bc8dbe2096b419d42424cd7030733f4abe5 refs/tags/test021\");\n+\t\tw.println(\"^417c01c8795a35b8e835113a85a5c0c1c77f67fb\");\n+\t\tw.println(\"0ce2ebdb36076ef0b38adbe077a07d43b43e3807 refs/tags/test022\");\n+\t\tw.println(\"^b5d3b45a96b340441f5abb9080411705c51cc86c\");\n+\t\tw.close();\n+\n+\t\tTag mapTag20 = db.mapTag(\"test020\");\n+\t\tassertEquals(\"blob\", mapTag20.getType());\n+\t\tassertEquals(\"test020 tagged\\n\", mapTag20.getMessage());\n+\t\tassertEquals(new PersonIdent(jauthor, 1154236443000L, -4 * 60), mapTag20.getAuthor());\n+\t\tassertEquals(\"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391\", mapTag20.getObjId().toString());\n+\n+\t\tTag mapTag21 = db.mapTag(\"test021\");\n+\t\tassertEquals(\"tree\", mapTag21.getType());\n+\t\tassertEquals(\"test021 tagged\\n\", mapTag21.getMessage());\n+\t\tassertEquals(new PersonIdent(jauthor, 1154236443000L, -4 * 60), mapTag21.getAuthor());\n+\t\tassertEquals(\"417c01c8795a35b8e835113a85a5c0c1c77f67fb\", mapTag21.getObjId().toString());\n+\n+\t\tTag mapTag22 = db.mapTag(\"test022\");\n+\t\tassertEquals(\"commit\", mapTag22.getType());\n+\t\tassertEquals(\"test022 tagged\\n\", mapTag22.getMessage());\n+\t\tassertEquals(new PersonIdent(jauthor, 1154236443000L, -4 * 60), mapTag22.getAuthor());\n+\t\tassertEquals(\"b5d3b45a96b340441f5abb9080411705c51cc86c\", mapTag22.getObjId().toString());\n+\t}\n }\n-- \n1.5.1.1\n"},{"id":"42072","messageId":"11790995573126-git-send-email-robin.rosenberg@dewire.com","threadId":"8142","inReplyTo":"11790995571637-git-send-email-robin.rosenberg@dewire.com","subject":"[PATCH] Show tags in history view","fromName":"Robin Rosenberg","fromEmail":"robin.rosenberg@dewire.com","sentAt":"2007-05-13T23:39:17Z","receivedAt":"2007-05-13T23:39:17Z","isPatch":true,"sender":{"key":"robin.rosenberg@dewire.com","avatar":"https://avatars.githubusercontent.com/u/46357?v=4"},"body":"Put some content into the Tags field in the history browser. Besides\ntags we put matching branch names there too.\n\nSigned-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>\n---\n .../src/org/spearce/egit/ui/GitHistoryPage.java    |   85 ++++++++++++++++++-\n .../src/org/spearce/jgit/lib/Repository.java       |    2 +-\n 2 files changed, 81 insertions(+), 6 deletions(-)\n\ndiff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/GitHistoryPage.java b/org.spearce.egit.ui/src/org/spearce/egit/ui/GitHistoryPage.java\nindex e5d92fe..8850405 100644\n--- a/org.spearce.egit.ui/src/org/spearce/egit/ui/GitHistoryPage.java\n+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/GitHistoryPage.java\n@@ -18,6 +18,7 @@ package org.spearce.egit.ui;\n \n import java.io.IOException;\n import java.util.Date;\n+import java.util.HashMap;\n import java.util.Map;\n \n import org.eclipse.compare.CompareConfiguration;\n@@ -78,6 +79,7 @@ import org.spearce.egit.core.project.RepositoryMapping;\n import org.spearce.egit.ui.internal.actions.GitCompareRevisionAction;\n import org.spearce.jgit.lib.Commit;\n import org.spearce.jgit.lib.ObjectId;\n+import org.spearce.jgit.lib.Tag;\n import org.spearce.jgit.lib.Repository.StGitPatch;\n \n public class GitHistoryPage extends HistoryPage implements IAdaptable,\n@@ -145,7 +147,7 @@ public class GitHistoryPage extends HistoryPage implements IAdaptable,\n \t\t\t\tif (item != null && item!=lastItem) {\n \t\t\t\t\tIFileRevision rev = (IFileRevision) item.getData();\n \t\t\t\t\tString commitStr=null;\n-\t\t\t\t\tif (appliedPatches!=null) {\n+\t\t\t\t\tif (rev!=null && appliedPatches!=null) {\n \t\t\t\t\t\tString id = rev.getContentIdentifier();\n \t\t\t\t\t\tif (!id.equals(\"Workspace\")) {\n \t\t\t\t\t\t\tStGitPatch patch = (StGitPatch) appliedPatches.get(new ObjectId(id));\n@@ -275,8 +277,34 @@ public class GitHistoryPage extends HistoryPage implements IAdaptable,\n \t\t\t\t\treturn id + \"@..\" + rs;\n \t\t\t}\n \n-\t\t\tif (columnIndex == 2)\n-\t\t\t\treturn \"\"; // TAGS\n+\t\t\tif (columnIndex == 2) {\n+\t\t\t\tString id = ((IFileRevision)element).getContentIdentifier();\n+\t\t\t\tObjectId oid = new ObjectId(id);\n+\t\t\t\tStringBuilder b=new StringBuilder();\n+\t\t\t\tif (tags != null) {\n+\t\t\t\t\tTag[] matching = tags.get(oid);\n+\t\t\t\t\tif (matching != null) {\n+\t\t\t\t\t\tfor (Tag t : matching) {\n+\t\t\t\t\t\t\tif (b.length() > 0)\n+\t\t\t\t\t\t\t\tb.append(' ');\n+\t\t\t\t\t\t\tb.append(t.getTag());\n+\t\t\t\t\t\t}\n+\t\t\t\t\t}\n+\t\t\t\t}\n+\t\t\t\tif (branches != null) {\n+\t\t\t\t\tif (b.length() >0)\n+\t\t\t\t\t\tb.append('\\n');\n+\t\t\t\t\tString[] matching = branches.get(oid);\n+\t\t\t\t\tif (matching != null) {\n+\t\t\t\t\t\tfor (String t : matching) {\n+\t\t\t\t\t\t\tif (b.length() > 0)\n+\t\t\t\t\t\t\t\tb.append(' ');\n+\t\t\t\t\t\t\tb.append(t);\n+\t\t\t\t\t\t}\n+\t\t\t\t\t}\n+\t\t\t\t}\n+\t\t\t\treturn b.toString();\n+\t\t\t}\n \n \t\t\tif (columnIndex == 3) {\n \t\t\t\tDate d = new Date(((IFileRevision) element).getTimestamp());\n@@ -352,6 +380,8 @@ public class GitHistoryPage extends HistoryPage implements IAdaptable,\n \t}\n \n \tprivate Map appliedPatches;\n+\tprivate Map<ObjectId,Tag[]> tags;\n+\tprivate Map<ObjectId, String[]> branches;\n \n \tclass HistoryRefreshJob extends Job {\n \n@@ -373,6 +403,48 @@ public class GitHistoryPage extends HistoryPage implements IAdaptable,\n \t\t\t\t// TODO Auto-generated catch block\n \t\t\t\te.printStackTrace();\n \t\t\t}\n+\t\t\tMap<ObjectId,Tag[]> newtags = new HashMap<ObjectId,Tag[]>();\n+\t\t\ttry {\n+\t\t\t\tfor (String name : repositoryMapping.getRepository().getTags()) {\n+\t\t\t\t\tTag t = repositoryMapping.getRepository().mapTag(name);\n+\t\t\t\t\tTag[] samecommit = newtags.get(t.getObjId());\n+\t\t\t\t\tif (samecommit==null) { \n+\t\t\t\t\t\tsamecommit = new Tag[] { t };\n+\t\t\t\t\t} else {\n+\t\t\t\t\t\tTag[] n=new Tag[samecommit.length+1];\n+\t\t\t\t\t\tfor (int j=0; j<samecommit.length; ++j)\n+\t\t\t\t\t\t\tn[j] = samecommit[j];\n+\t\t\t\t\t\tn[n.length-1] = t;\n+\t\t\t\t\t\tsamecommit = n;\n+\t\t\t\t\t}\n+\t\t\t\t\tnewtags.put(t.getObjId(), samecommit);\n+\t\t\t\t}\n+\t\t\t} catch (IOException e) {\n+\t\t\t\t// TODO Auto-generated catch block\n+\t\t\t\te.printStackTrace();\n+\t\t\t}\n+\t\t\tMap<ObjectId, String[]> newBranches = new HashMap<ObjectId, String[]>();\n+\t\t\ttry {\n+\t\t\t\tfor (String branch : repositoryMapping.getRepository().getBranches()) {\n+\t\t\t\t\tObjectId id = repositoryMapping.getRepository().resolve(\"refs/heads/\"+branch);\n+\t\t\t\t\tString[] samecommit = newBranches.get(id);\n+\t\t\t\t\tif (samecommit == null) {\n+\t\t\t\t\t\tsamecommit = new String[] { branch };\n+\t\t\t\t\t} else {\n+\t\t\t\t\t\tString[] n=new String[samecommit.length + 1];\n+\t\t\t\t\t\tfor (int j=0; j<samecommit.length; ++j)\n+\t\t\t\t\t\t\tn[j] = samecommit[j];\n+\t\t\t\t\t\tn[n.length-1] = branch;\n+\t\t\t\t\t\tsamecommit = n;\n+\t\t\t\t\t}\n+\t\t\t\t\tnewBranches.put(id, samecommit);\n+\t\t\t\t}\n+\t\t\t\tbranches = newBranches;\n+\t\t\t} catch (IOException e) {\n+\t\t\t\t// TODO Auto-generated catch block\n+\t\t\t\te.printStackTrace();\n+\t\t\t}\n+\n \t\t\tIFileHistoryProvider fileHistoryProvider = provider\n \t\t\t\t\t.getFileHistoryProvider();\n \t\t\tIFileHistory fileHistoryFor = fileHistoryProvider\n@@ -380,7 +452,9 @@ public class GitHistoryPage extends HistoryPage implements IAdaptable,\n \t\t\t\t\t\t\tIFileHistoryProvider.SINGLE_LINE_OF_DESCENT, monitor);\n \t\t\tfileRevisions = fileHistoryFor.getFileRevisions();\n \t\t\t\n-\t\t\tfinal Map fnewappliedPatches = newappliedPatches; \n+\t\t\tfinal Map fnewappliedPatches = newappliedPatches;\n+\t\t\tfinal Map<ObjectId,Tag[]> ftags = newtags;\n+\n \t\t\ttree.getDisplay().asyncExec(new Runnable() {\n \t\t\t\n \t\t\t\tpublic void run() {\n@@ -389,8 +463,9 @@ public class GitHistoryPage extends HistoryPage implements IAdaptable,\n \t\t\t\t\ttree.setData(fileRevisions);\n \t\t\t\t\ttree.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true));\n \t\t\t\t\tSystem.out.println(\"inputchanged, invoking refresh\");\n-\t\t\t\t\tviewer.refresh();\n \t\t\t\t\tappliedPatches = fnewappliedPatches;\n+\t\t\t\t\ttags = ftags;\n+\t\t\t\t\tviewer.refresh();\n \t\t\t\t\tdone(Status.OK_STATUS);\n \t\t\t\t}\n \t\t\t\ndiff --git a/org.spearce.jgit/src/org/spearce/jgit/lib/Repository.java b/org.spearce.jgit/src/org/spearce/jgit/lib/Repository.java\nindex 3b2a82c..12beb88 100644\n--- a/org.spearce.jgit/src/org/spearce/jgit/lib/Repository.java\n+++ b/org.spearce.jgit/src/org/spearce/jgit/lib/Repository.java\n@@ -470,7 +470,7 @@ public class Repository {\n \t\treturn ref;\n \t}\n \n-\tpublic Collection getBranches() {\n+\tpublic Collection<String> getBranches() {\n \t\treturn listFilesRecursively(new File(refsDir, \"heads\"), null);\n \t}\n \n-- \n1.5.1.1\n"},{"id":"42076","messageId":"1179100134893-git-send-email-robin.rosenberg@dewire.com","threadId":"8142","inReplyTo":"11790995571082-git-send-email-robin.rosenberg@dewire.com","subject":"The first patch in the series","fromName":"Robin Rosenberg","fromEmail":"robin.rosenberg@dewire.com","sentAt":"2007-05-13T23:48:53Z","receivedAt":"2007-05-13T23:48:53Z","isPatch":false,"sender":{"key":"robin.rosenberg@dewire.com","avatar":"https://avatars.githubusercontent.com/u/46357?v=4"},"body":"Apply this one befor the others. \n"},{"id":"42077","messageId":"11791001343234-git-send-email-robin.rosenberg@dewire.com","threadId":"8142","inReplyTo":"1179100134893-git-send-email-robin.rosenberg@dewire.com","subject":"[PATCH] Require JDK1.5","fromName":"Robin Rosenberg","fromEmail":"robin.rosenberg@dewire.com","sentAt":"2007-05-13T23:48:54Z","receivedAt":"2007-05-13T23:48:54Z","isPatch":true,"sender":{"key":"robin.rosenberg@dewire.com","avatar":"https://avatars.githubusercontent.com/u/46357?v=4"},"body":"This changes project settings to requre Java 5 and\nalso tightens some compiler settings.\n\nSigned-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>\n---\n .../.settings/org.eclipse.jdt.core.prefs           |   22 ++++++++++---------\n .../.settings/org.eclipse.jdt.ui.prefs             |    5 +--\n .../.settings/org.eclipse.jdt.core.prefs           |   22 ++++++++++---------\n .../.settings/org.eclipse.jdt.ui.prefs             |    5 +--\n .../.settings/org.eclipse.jdt.core.prefs           |   22 ++++++++++---------\n .../.settings/org.eclipse.jdt.ui.prefs             |    5 +--\n .../.settings/org.eclipse.jdt.core.prefs           |   22 ++++++++++---------\n .../.settings/org.eclipse.jdt.ui.prefs             |    3 +-\n .../src/org/spearce/jgit/lib/ObjectIdMap.java      |    4 +-\n 9 files changed, 57 insertions(+), 53 deletions(-)\n\ndiff --git a/org.spearce.egit.core.test/.settings/org.eclipse.jdt.core.prefs b/org.spearce.egit.core.test/.settings/org.eclipse.jdt.core.prefs\nindex 16fbddc..261f937 100644\n--- a/org.spearce.egit.core.test/.settings/org.eclipse.jdt.core.prefs\n+++ b/org.spearce.egit.core.test/.settings/org.eclipse.jdt.core.prefs\n@@ -1,16 +1,16 @@\n-#Mon Jan 29 20:50:25 EST 2007\n+#Wed May 09 00:26:39 CEST 2007\n eclipse.preferences.version=1\n-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled\n-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.4\n+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled\n+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5\n org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve\n-org.eclipse.jdt.core.compiler.compliance=1.4\n+org.eclipse.jdt.core.compiler.compliance=1.5\n org.eclipse.jdt.core.compiler.debug.lineNumber=generate\n org.eclipse.jdt.core.compiler.debug.localVariable=generate\n org.eclipse.jdt.core.compiler.debug.sourceFile=generate\n org.eclipse.jdt.core.compiler.doc.comment.support=enabled\n org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning\n org.eclipse.jdt.core.compiler.problem.assertIdentifier=error\n-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore\n+org.eclipse.jdt.core.compiler.problem.autoboxing=warning\n org.eclipse.jdt.core.compiler.problem.deprecation=warning\n org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled\n org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled\n@@ -24,7 +24,7 @@ org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=error\n org.eclipse.jdt.core.compiler.problem.forbiddenReference=error\n org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=error\n org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning\n-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore\n+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning\n org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=error\n org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error\n org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled\n@@ -45,11 +45,13 @@ org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning\n org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error\n org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=error\n org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore\n-org.eclipse.jdt.core.compiler.problem.nullReference=warning\n+org.eclipse.jdt.core.compiler.problem.nullReference=error\n org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning\n-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore\n+org.eclipse.jdt.core.compiler.problem.parameterAssignment=warning\n org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error\n+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning\n org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore\n+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning\n org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled\n org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error\n org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled\n@@ -60,7 +62,7 @@ org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning\n org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning\n org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning\n org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=error\n-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore\n+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=warning\n org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=error\n org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled\n org.eclipse.jdt.core.compiler.problem.unusedImport=error\n@@ -71,7 +73,7 @@ org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=di\n org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled\n org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error\n org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=error\n-org.eclipse.jdt.core.compiler.source=1.4\n+org.eclipse.jdt.core.compiler.source=1.5\n org.eclipse.jdt.core.formatter.align_type_members_on_columns=false\n org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16\n org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16\ndiff --git a/org.spearce.egit.core.test/.settings/org.eclipse.jdt.ui.prefs b/org.spearce.egit.core.test/.settings/org.eclipse.jdt.ui.prefs\nindex 273e64b..709a440 100644\n--- a/org.spearce.egit.core.test/.settings/org.eclipse.jdt.ui.prefs\n+++ b/org.spearce.egit.core.test/.settings/org.eclipse.jdt.ui.prefs\n@@ -1,8 +1,7 @@\n-#Mon Jan 29 20:38:19 EST 2007\n+#Wed May 09 00:20:24 CEST 2007\n eclipse.preferences.version=1\n-formatter_profile=_EGit\n+formatter_profile=_JGit\n formatter_settings_version=10\n-internal.default.compliance=user\n org.eclipse.jdt.ui.ignorelowercasenames=true\n org.eclipse.jdt.ui.importorder=java;javax;org;com;\n org.eclipse.jdt.ui.ondemandthreshold=99\ndiff --git a/org.spearce.egit.core/.settings/org.eclipse.jdt.core.prefs b/org.spearce.egit.core/.settings/org.eclipse.jdt.core.prefs\nindex 16fbddc..261f937 100644\n--- a/org.spearce.egit.core/.settings/org.eclipse.jdt.core.prefs\n+++ b/org.spearce.egit.core/.settings/org.eclipse.jdt.core.prefs\n@@ -1,16 +1,16 @@\n-#Mon Jan 29 20:50:25 EST 2007\n+#Wed May 09 00:26:39 CEST 2007\n eclipse.preferences.version=1\n-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled\n-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.4\n+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled\n+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5\n org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve\n-org.eclipse.jdt.core.compiler.compliance=1.4\n+org.eclipse.jdt.core.compiler.compliance=1.5\n org.eclipse.jdt.core.compiler.debug.lineNumber=generate\n org.eclipse.jdt.core.compiler.debug.localVariable=generate\n org.eclipse.jdt.core.compiler.debug.sourceFile=generate\n org.eclipse.jdt.core.compiler.doc.comment.support=enabled\n org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning\n org.eclipse.jdt.core.compiler.problem.assertIdentifier=error\n-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore\n+org.eclipse.jdt.core.compiler.problem.autoboxing=warning\n org.eclipse.jdt.core.compiler.problem.deprecation=warning\n org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled\n org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled\n@@ -24,7 +24,7 @@ org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=error\n org.eclipse.jdt.core.compiler.problem.forbiddenReference=error\n org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=error\n org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning\n-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore\n+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning\n org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=error\n org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error\n org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled\n@@ -45,11 +45,13 @@ org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning\n org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error\n org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=error\n org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore\n-org.eclipse.jdt.core.compiler.problem.nullReference=warning\n+org.eclipse.jdt.core.compiler.problem.nullReference=error\n org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning\n-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore\n+org.eclipse.jdt.core.compiler.problem.parameterAssignment=warning\n org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error\n+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning\n org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore\n+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning\n org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled\n org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error\n org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled\n@@ -60,7 +62,7 @@ org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning\n org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning\n org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning\n org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=error\n-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore\n+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=warning\n org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=error\n org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled\n org.eclipse.jdt.core.compiler.problem.unusedImport=error\n@@ -71,7 +73,7 @@ org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=di\n org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled\n org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error\n org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=error\n-org.eclipse.jdt.core.compiler.source=1.4\n+org.eclipse.jdt.core.compiler.source=1.5\n org.eclipse.jdt.core.formatter.align_type_members_on_columns=false\n org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16\n org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16\ndiff --git a/org.spearce.egit.core/.settings/org.eclipse.jdt.ui.prefs b/org.spearce.egit.core/.settings/org.eclipse.jdt.ui.prefs\nindex 273e64b..709a440 100644\n--- a/org.spearce.egit.core/.settings/org.eclipse.jdt.ui.prefs\n+++ b/org.spearce.egit.core/.settings/org.eclipse.jdt.ui.prefs\n@@ -1,8 +1,7 @@\n-#Mon Jan 29 20:38:19 EST 2007\n+#Wed May 09 00:20:24 CEST 2007\n eclipse.preferences.version=1\n-formatter_profile=_EGit\n+formatter_profile=_JGit\n formatter_settings_version=10\n-internal.default.compliance=user\n org.eclipse.jdt.ui.ignorelowercasenames=true\n org.eclipse.jdt.ui.importorder=java;javax;org;com;\n org.eclipse.jdt.ui.ondemandthreshold=99\ndiff --git a/org.spearce.egit.ui/.settings/org.eclipse.jdt.core.prefs b/org.spearce.egit.ui/.settings/org.eclipse.jdt.core.prefs\nindex 71b6be1..261f937 100644\n--- a/org.spearce.egit.ui/.settings/org.eclipse.jdt.core.prefs\n+++ b/org.spearce.egit.ui/.settings/org.eclipse.jdt.core.prefs\n@@ -1,16 +1,16 @@\n-#Mon Jan 29 20:50:36 EST 2007\n+#Wed May 09 00:26:39 CEST 2007\n eclipse.preferences.version=1\n-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled\n-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.4\n+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled\n+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5\n org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve\n-org.eclipse.jdt.core.compiler.compliance=1.4\n+org.eclipse.jdt.core.compiler.compliance=1.5\n org.eclipse.jdt.core.compiler.debug.lineNumber=generate\n org.eclipse.jdt.core.compiler.debug.localVariable=generate\n org.eclipse.jdt.core.compiler.debug.sourceFile=generate\n org.eclipse.jdt.core.compiler.doc.comment.support=enabled\n org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning\n org.eclipse.jdt.core.compiler.problem.assertIdentifier=error\n-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore\n+org.eclipse.jdt.core.compiler.problem.autoboxing=warning\n org.eclipse.jdt.core.compiler.problem.deprecation=warning\n org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled\n org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled\n@@ -24,7 +24,7 @@ org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=error\n org.eclipse.jdt.core.compiler.problem.forbiddenReference=error\n org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=error\n org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning\n-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore\n+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning\n org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=error\n org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error\n org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled\n@@ -45,11 +45,13 @@ org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning\n org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error\n org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=error\n org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore\n-org.eclipse.jdt.core.compiler.problem.nullReference=warning\n+org.eclipse.jdt.core.compiler.problem.nullReference=error\n org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning\n-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore\n+org.eclipse.jdt.core.compiler.problem.parameterAssignment=warning\n org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error\n+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning\n org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore\n+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning\n org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled\n org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error\n org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled\n@@ -60,7 +62,7 @@ org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning\n org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning\n org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning\n org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=error\n-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore\n+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=warning\n org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=error\n org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled\n org.eclipse.jdt.core.compiler.problem.unusedImport=error\n@@ -71,7 +73,7 @@ org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=di\n org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled\n org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error\n org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=error\n-org.eclipse.jdt.core.compiler.source=1.4\n+org.eclipse.jdt.core.compiler.source=1.5\n org.eclipse.jdt.core.formatter.align_type_members_on_columns=false\n org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16\n org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16\ndiff --git a/org.spearce.egit.ui/.settings/org.eclipse.jdt.ui.prefs b/org.spearce.egit.ui/.settings/org.eclipse.jdt.ui.prefs\nindex e6430e9..709a440 100644\n--- a/org.spearce.egit.ui/.settings/org.eclipse.jdt.ui.prefs\n+++ b/org.spearce.egit.ui/.settings/org.eclipse.jdt.ui.prefs\n@@ -1,8 +1,7 @@\n-#Mon Jan 29 20:38:13 EST 2007\n+#Wed May 09 00:20:24 CEST 2007\n eclipse.preferences.version=1\n-formatter_profile=_EGit\n+formatter_profile=_JGit\n formatter_settings_version=10\n-internal.default.compliance=user\n org.eclipse.jdt.ui.ignorelowercasenames=true\n org.eclipse.jdt.ui.importorder=java;javax;org;com;\n org.eclipse.jdt.ui.ondemandthreshold=99\ndiff --git a/org.spearce.jgit/.settings/org.eclipse.jdt.core.prefs b/org.spearce.jgit/.settings/org.eclipse.jdt.core.prefs\nindex bfbc85d..261f937 100644\n--- a/org.spearce.jgit/.settings/org.eclipse.jdt.core.prefs\n+++ b/org.spearce.jgit/.settings/org.eclipse.jdt.core.prefs\n@@ -1,16 +1,16 @@\n-#Mon Jan 29 20:50:45 EST 2007\n+#Wed May 09 00:26:39 CEST 2007\n eclipse.preferences.version=1\n-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled\n-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.4\n+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled\n+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5\n org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve\n-org.eclipse.jdt.core.compiler.compliance=1.4\n+org.eclipse.jdt.core.compiler.compliance=1.5\n org.eclipse.jdt.core.compiler.debug.lineNumber=generate\n org.eclipse.jdt.core.compiler.debug.localVariable=generate\n org.eclipse.jdt.core.compiler.debug.sourceFile=generate\n org.eclipse.jdt.core.compiler.doc.comment.support=enabled\n org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning\n org.eclipse.jdt.core.compiler.problem.assertIdentifier=error\n-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore\n+org.eclipse.jdt.core.compiler.problem.autoboxing=warning\n org.eclipse.jdt.core.compiler.problem.deprecation=warning\n org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled\n org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled\n@@ -24,7 +24,7 @@ org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=error\n org.eclipse.jdt.core.compiler.problem.forbiddenReference=error\n org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=error\n org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning\n-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore\n+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning\n org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=error\n org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error\n org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled\n@@ -45,11 +45,13 @@ org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning\n org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error\n org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=error\n org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore\n-org.eclipse.jdt.core.compiler.problem.nullReference=warning\n+org.eclipse.jdt.core.compiler.problem.nullReference=error\n org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning\n-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore\n+org.eclipse.jdt.core.compiler.problem.parameterAssignment=warning\n org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error\n+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning\n org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore\n+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning\n org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled\n org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error\n org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled\n@@ -60,7 +62,7 @@ org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning\n org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning\n org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning\n org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=error\n-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore\n+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=warning\n org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=error\n org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled\n org.eclipse.jdt.core.compiler.problem.unusedImport=error\n@@ -71,7 +73,7 @@ org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=di\n org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled\n org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error\n org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=error\n-org.eclipse.jdt.core.compiler.source=1.4\n+org.eclipse.jdt.core.compiler.source=1.5\n org.eclipse.jdt.core.formatter.align_type_members_on_columns=false\n org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16\n org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16\ndiff --git a/org.spearce.jgit/.settings/org.eclipse.jdt.ui.prefs b/org.spearce.jgit/.settings/org.eclipse.jdt.ui.prefs\nindex 126418a..709a440 100644\n--- a/org.spearce.jgit/.settings/org.eclipse.jdt.ui.prefs\n+++ b/org.spearce.jgit/.settings/org.eclipse.jdt.ui.prefs\n@@ -1,8 +1,7 @@\n-#Mon Jan 29 20:38:06 EST 2007\n+#Wed May 09 00:20:24 CEST 2007\n eclipse.preferences.version=1\n formatter_profile=_JGit\n formatter_settings_version=10\n-internal.default.compliance=user\n org.eclipse.jdt.ui.ignorelowercasenames=true\n org.eclipse.jdt.ui.importorder=java;javax;org;com;\n org.eclipse.jdt.ui.ondemandthreshold=99\ndiff --git a/org.spearce.jgit/src/org/spearce/jgit/lib/ObjectIdMap.java b/org.spearce.jgit/src/org/spearce/jgit/lib/ObjectIdMap.java\nindex c397a0d..63796fd 100644\n--- a/org.spearce.jgit/src/org/spearce/jgit/lib/ObjectIdMap.java\n+++ b/org.spearce.jgit/src/org/spearce/jgit/lib/ObjectIdMap.java\n@@ -50,9 +50,9 @@ public class ObjectIdMap implements Map {\n \n \tpublic ObjectIdMap(Map sample) {\n \t\ttry {\n-\t\t\tMethod m=sample.getClass().getMethod(\"clone\", null);\n+\t\t\tMethod m=sample.getClass().getMethod(\"clone\", (Class[])null);\n \t\t\tfor (int i=0; i<256; ++i) {\n-\t\t\t\tlevel0[i] = (Map)m.invoke(sample, null);\n+\t\t\t\tlevel0[i] = (Map)m.invoke(sample, (Object[])null);\n \t\t\t}\n \t\t} catch (IllegalAccessException e) {\n \t\t\tthrow new IllegalArgumentException(e);\n-- \n1.5.1.1\n"},{"id":"42086","messageId":"Pine.LNX.4.63.0705140303380.17507@alpha.polcom.net","threadId":"8142","inReplyTo":"11791001343234-git-send-email-robin.rosenberg@dewire.com","subject":"Re: [PATCH] Require JDK1.5","fromName":"Grzegorz Kulewski","fromEmail":"kangur@polcom.net","sentAt":"2007-05-14T01:07:30Z","receivedAt":"2007-05-14T01:07:30Z","isPatch":true,"sender":{"key":"kangur@polcom.net","avatar":null},"body":"On Mon, 14 May 2007, Robin Rosenberg wrote:\n> This changes project settings to requre Java 5 and\n> also tightens some compiler settings.\n>\n> Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>\n> ---\n> .../.settings/org.eclipse.jdt.core.prefs           |   22 ++++++++++---------\n> .../.settings/org.eclipse.jdt.ui.prefs             |    5 +--\n> .../.settings/org.eclipse.jdt.core.prefs           |   22 ++++++++++---------\n> .../.settings/org.eclipse.jdt.ui.prefs             |    5 +--\n> .../.settings/org.eclipse.jdt.core.prefs           |   22 ++++++++++---------\n> .../.settings/org.eclipse.jdt.ui.prefs             |    5 +--\n> .../.settings/org.eclipse.jdt.core.prefs           |   22 ++++++++++---------\n> .../.settings/org.eclipse.jdt.ui.prefs             |    3 +-\n> .../src/org/spearce/jgit/lib/ObjectIdMap.java      |    4 +-\n> 9 files changed, 57 insertions(+), 53 deletions(-)\n[snip]\n> diff --git a/org.spearce.jgit/src/org/spearce/jgit/lib/ObjectIdMap.java b/org.spearce.jgit/src/org/spearce/jgit/lib/ObjectIdMap.java\n> index c397a0d..63796fd 100644\n> --- a/org.spearce.jgit/src/org/spearce/jgit/lib/ObjectIdMap.java\n> +++ b/org.spearce.jgit/src/org/spearce/jgit/lib/ObjectIdMap.java\n> @@ -50,9 +50,9 @@ public class ObjectIdMap implements Map {\n>\n> \tpublic ObjectIdMap(Map sample) {\n> \t\ttry {\n> -\t\t\tMethod m=sample.getClass().getMethod(\"clone\", null);\n> +\t\t\tMethod m=sample.getClass().getMethod(\"clone\", (Class[])null);\n> \t\t\tfor (int i=0; i<256; ++i) {\n> -\t\t\t\tlevel0[i] = (Map)m.invoke(sample, null);\n> +\t\t\t\tlevel0[i] = (Map)m.invoke(sample, (Object[])null);\n> \t\t\t}\n> \t\t} catch (IllegalAccessException e) {\n> \t\t\tthrow new IllegalArgumentException(e);\n\nI wonder why one would need changes like this?\n\nThese casts are not needed for anything as far as I can see and your IDE \nshould easily tell you what type that parameter is. No?\n\n\nThanks,\n\nGrzegorz Kulewski\n"},{"id":"42099","messageId":"46480E02.1010500@peralex.com","threadId":"8142","inReplyTo":"Pine.LNX.4.63.0705140303380.17507@alpha.polcom.net","subject":"Re: [PATCH] Require JDK1.5","fromName":"Noel Grandin","fromEmail":"noel@peralex.com","sentAt":"2007-05-14T07:21:38Z","receivedAt":"2007-05-14T07:21:38Z","isPatch":true,"sender":{"key":"noel@peralex.com","avatar":null},"body":"\n>> diff --git\n>> a/org.spearce.jgit/src/org/spearce/jgit/lib/ObjectIdMap.java\n>> b/org.spearce.jgit/src/org/spearce/jgit/lib/ObjectIdMap.java\n>> index c397a0d..63796fd 100644\n>> --- a/org.spearce.jgit/src/org/spearce/jgit/lib/ObjectIdMap.java\n>> +++ b/org.spearce.jgit/src/org/spearce/jgit/lib/ObjectIdMap.java\n>> @@ -50,9 +50,9 @@ public class ObjectIdMap implements Map {\n>>\n>>     public ObjectIdMap(Map sample) {\n>>         try {\n>> -            Method m=sample.getClass().getMethod(\"clone\", null);\n>> +            Method m=sample.getClass().getMethod(\"clone\",\n>> (Class[])null);\n>>             for (int i=0; i<256; ++i) {\n>> -                level0[i] = (Map)m.invoke(sample, null);\n>> +                level0[i] = (Map)m.invoke(sample, (Object[])null);\n>>             }\n>>         } catch (IllegalAccessException e) {\n>>             throw new IllegalArgumentException(e);\n>\n> I wonder why one would need changes like this?\n>\n> These casts are not needed for anything as far as I can see and your\n> IDE should easily tell you what type that parameter is. No?\n>\nThose are varargs parameters, so when compiling under 1.5 you sometimes\nhave to tell the compiler the difference between passing a varargs array\nand passing one parameter.\n\n\nDisclaimer: http://www.peralex.com/disclaimer.html\n"},{"id":"42149","messageId":"200705141924.34490.robin.rosenberg@dewire.com","threadId":"8142","inReplyTo":"46480E02.1010500@peralex.com","subject":"Re: [PATCH] Require JDK1.5","fromName":"Robin Rosenberg","fromEmail":"robin.rosenberg@dewire.com","sentAt":"2007-05-14T17:24:34Z","receivedAt":"2007-05-14T17:24:34Z","isPatch":true,"sender":{"key":"robin.rosenberg@dewire.com","avatar":"https://avatars.githubusercontent.com/u/46357?v=4"},"body":"måndag 14 maj 2007 skrev Noel Grandin:\n> \n> >> diff --git\n> >> a/org.spearce.jgit/src/org/spearce/jgit/lib/ObjectIdMap.java\n> >> b/org.spearce.jgit/src/org/spearce/jgit/lib/ObjectIdMap.java\n> >> index c397a0d..63796fd 100644\n> >> --- a/org.spearce.jgit/src/org/spearce/jgit/lib/ObjectIdMap.java\n> >> +++ b/org.spearce.jgit/src/org/spearce/jgit/lib/ObjectIdMap.java\n> >> @@ -50,9 +50,9 @@ public class ObjectIdMap implements Map {\n> >>\n> >>     public ObjectIdMap(Map sample) {\n> >>         try {\n> >> -            Method m=sample.getClass().getMethod(\"clone\", null);\n> >> +            Method m=sample.getClass().getMethod(\"clone\",\n> >> (Class[])null);\n> >>             for (int i=0; i<256; ++i) {\n> >> -                level0[i] = (Map)m.invoke(sample, null);\n> >> +                level0[i] = (Map)m.invoke(sample, (Object[])null);\n> >>             }\n> >>         } catch (IllegalAccessException e) {\n> >>             throw new IllegalArgumentException(e);\n> >\n> > I wonder why one would need changes like this?\n> >\n> > These casts are not needed for anything as far as I can see and your\n> > IDE should easily tell you what type that parameter is. No?\n> >\n> Those are varargs parameters, so when compiling under 1.5 you sometimes\n> have to tell the compiler the difference between passing a varargs array\n> and passing one parameter.\n\nThe compiler does the right thing by default in this case, but I don't\nlike seeing warnings for code that is perfectly fine, hence the cast.\n\nI noticed I dropped using this class just before sending the previous set\nof patches, so it isn't really necessary in the current code, but I think I will start \nusing it soon so it can stay.\n\n-- robin\n"},{"id":"42165","messageId":"11791762032532-git-send-email-robin.rosenberg@dewire.com","threadId":"8142","inReplyTo":"11791001343234-git-send-email-robin.rosenberg@dewire.com","subject":"[PATCH] Set required execution enviroment","fromName":"Robin Rosenberg","fromEmail":"robin.rosenberg@dewire.com","sentAt":"2007-05-14T20:56:43Z","receivedAt":"2007-05-14T20:56:43Z","isPatch":true,"sender":{"key":"robin.rosenberg@dewire.com","avatar":"https://avatars.githubusercontent.com/u/46357?v=4"},"body":"This is required to be able to export the plugin to jar\nfiles, at least using Eclipse 3.3 M7, otherwise the compiler\nassumes 1.4 syntax and compilation fails.\n\nSigned-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>\n---\n org.spearce.egit.core.test/META-INF/MANIFEST.MF |    1 +\n org.spearce.egit.core/META-INF/MANIFEST.MF      |    1 +\n org.spearce.egit.ui/META-INF/MANIFEST.MF        |    1 +\n org.spearce.jgit/META-INF/MANIFEST.MF           |    1 +\n 4 files changed, 4 insertions(+), 0 deletions(-)\n\ndiff --git a/org.spearce.egit.core.test/META-INF/MANIFEST.MF b/org.spearce.egit.core.test/META-INF/MANIFEST.MF\nindex e553c1e..b0f365d 100644\n--- a/org.spearce.egit.core.test/META-INF/MANIFEST.MF\n+++ b/org.spearce.egit.core.test/META-INF/MANIFEST.MF\n@@ -17,3 +17,4 @@ Import-Package: org.eclipse.core.resources,\n  org.eclipse.jdt.junit,\n  org.eclipse.jdt.launching\n Export-Package: org.spearce.egit.core.internal.mapping\n+Bundle-RequiredExecutionEnvironment: J2SE-1.5\ndiff --git a/org.spearce.egit.core/META-INF/MANIFEST.MF b/org.spearce.egit.core/META-INF/MANIFEST.MF\nindex e3cfc13..384b87e 100644\n--- a/org.spearce.egit.core/META-INF/MANIFEST.MF\n+++ b/org.spearce.egit.core/META-INF/MANIFEST.MF\n@@ -17,3 +17,4 @@ Export-Package: org.spearce.egit.core.internal.mapping;x-friends:=\"org.spearce.e\n  org.spearce.egit.core.op,\n  org.spearce.egit.core.project\n Eclipse-LazyStart: true\n+Bundle-RequiredExecutionEnvironment: J2SE-1.5\ndiff --git a/org.spearce.egit.ui/META-INF/MANIFEST.MF b/org.spearce.egit.ui/META-INF/MANIFEST.MF\nindex 9857e3f..e1dcc12 100644\n--- a/org.spearce.egit.ui/META-INF/MANIFEST.MF\n+++ b/org.spearce.egit.ui/META-INF/MANIFEST.MF\n@@ -19,3 +19,4 @@ Require-Bundle: org.eclipse.core.runtime,\n  org.spearce.jgit,\n  org.spearce.egit.core\n Eclipse-LazyStart: true\n+Bundle-RequiredExecutionEnvironment: J2SE-1.5\ndiff --git a/org.spearce.jgit/META-INF/MANIFEST.MF b/org.spearce.jgit/META-INF/MANIFEST.MF\nindex 3f9d29c..c5c0e0a 100644\n--- a/org.spearce.jgit/META-INF/MANIFEST.MF\n+++ b/org.spearce.jgit/META-INF/MANIFEST.MF\n@@ -9,3 +9,4 @@ Export-Package: org.spearce.jgit.errors,\n  org.spearce.jgit.lib\n Require-Bundle: org.junit\n Eclipse-LazyStart: true\n+Bundle-RequiredExecutionEnvironment: J2SE-1.5\n-- \n1.5.1.1\n"},{"id":"42172","messageId":"20070514224533.GA28832@spearce.org","threadId":"8142","inReplyTo":"11790995571637-git-send-email-robin.rosenberg@dewire.com","subject":"Re: [PATCH] Implement packed refs","fromName":"Shawn O. Pearce","fromEmail":"spearce@spearce.org","sentAt":"2007-05-14T22:45:33Z","receivedAt":"2007-05-14T22:45:33Z","isPatch":true,"sender":{"key":"spearce@spearce.org","avatar":"https://avatars.githubusercontent.com/u/34844?v=4"},"body":"Robin Rosenberg <robin.rosenberg@dewire.com> wrote:\n> diff --git a/org.spearce.jgit/src/org/spearce/jgit/lib/Repository.java b/org.spearce.jgit/src/org/spearce/jgit/lib/Repository.java\n> index 76191be..3b2a82c 100644\n> @@ -411,6 +412,10 @@ public class Repository {\n>  \tprivate Ref readRefBasic(String name) throws IOException {\n>  \t\tint depth = 0;\n>  \t\tREF_READING: do {\n> +\t\t\tObjectId id = packedRefs.get(name);\n> +\t\t\tif (id != null)\n> +\t\t\t\treturn new Ref(null, id);\n> +\n>  \t\t\tfinal File f = new File(getDirectory(), name);\n>  \t\t\tif (!f.isFile()) {\n>  \t\t\t\treturn new Ref(f, null);\n\nThis is actually backwards.  Git checks the loose ref first, and\nthen the packed ref.  The reason is so that users can pack all\nof their refs (git pack-refs --all) and then just create new ref\nfiles for those that they change, rather than rewriting the entire\npacked-refs file over again.\n\nI'm adding a commit after your series to correct this.\n\n> +\t\t} catch (IOException e) {\n> +\t\t\te.printStackTrace();\n> +\t\t}\n\nWe really should be throwing exceptions back to the caller,\nespecially on things that could indicate corruption or other\nproblems with reading the repository contents.\n\n-- \nShawn.\n"},{"id":"42173","messageId":"200705150049.24467.robin.rosenberg@dewire.com","threadId":"8142","inReplyTo":"20070514224533.GA28832@spearce.org","subject":"Re: [PATCH] Implement packed refs","fromName":"Robin Rosenberg","fromEmail":"robin.rosenberg@dewire.com","sentAt":"2007-05-14T22:49:23Z","receivedAt":"2007-05-14T22:49:23Z","isPatch":true,"sender":{"key":"robin.rosenberg@dewire.com","avatar":"https://avatars.githubusercontent.com/u/46357?v=4"},"body":"tisdag 15 maj 2007 skrev Shawn O. Pearce:\n> Robin Rosenberg <robin.rosenberg@dewire.com> wrote:\n> > diff --git a/org.spearce.jgit/src/org/spearce/jgit/lib/Repository.java b/org.spearce.jgit/src/org/spearce/jgit/lib/Repository.java\n> > index 76191be..3b2a82c 100644\n> > @@ -411,6 +412,10 @@ public class Repository {\n> >  \tprivate Ref readRefBasic(String name) throws IOException {\n> >  \t\tint depth = 0;\n> >  \t\tREF_READING: do {\n> > +\t\t\tObjectId id = packedRefs.get(name);\n> > +\t\t\tif (id != null)\n> > +\t\t\t\treturn new Ref(null, id);\n> > +\n> >  \t\t\tfinal File f = new File(getDirectory(), name);\n> >  \t\t\tif (!f.isFile()) {\n> >  \t\t\t\treturn new Ref(f, null);\n> \n> This is actually backwards.  Git checks the loose ref first, and\n> then the packed ref.  The reason is so that users can pack all\n> of their refs (git pack-refs --all) and then just create new ref\n> files for those that they change, rather than rewriting the entire\n> packed-refs file over again.\n> \n> I'm adding a commit after your series to correct this.\nThanks.\n\n> > +\t\t} catch (IOException e) {\n> > +\t\t\te.printStackTrace();\n> > +\t\t}\n> \n> We really should be throwing exceptions back to the caller,\n> especially on things that could indicate corruption or other\n> problems with reading the repository contents.\n\nWell, [looking for something to blame]... \n\n-- robin\n"}]}