diff options
24 files changed, 273 insertions, 103 deletions
diff --git a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerTest.java b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerTest.java index 9f5b2f85a6..7b3c717afd 100644 --- a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerTest.java +++ b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerTest.java @@ -78,8 +78,6 @@ import org.eclipse.jgit.errors.RepositoryNotFoundException; import org.eclipse.jgit.errors.TransportException; import org.eclipse.jgit.http.server.GitServlet; import org.eclipse.jgit.internal.JGitText; -import org.eclipse.jgit.internal.storage.file.ReflogEntry; -import org.eclipse.jgit.internal.storage.file.ReflogReader; import org.eclipse.jgit.junit.TestRepository; import org.eclipse.jgit.junit.TestRng; import org.eclipse.jgit.junit.http.AccessEvent; @@ -88,6 +86,8 @@ import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.NullProgressMonitor; import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.Ref; +import org.eclipse.jgit.lib.ReflogEntry; +import org.eclipse.jgit.lib.ReflogReader; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.lib.StoredConfig; import org.eclipse.jgit.revwalk.RevBlob; diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Reflog.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Reflog.java index a09bb11fde..db51a173f9 100644 --- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Reflog.java +++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Reflog.java @@ -46,8 +46,8 @@ import java.util.Collection; import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.ReflogCommand;
-import org.eclipse.jgit.internal.storage.file.ReflogEntry;
import org.eclipse.jgit.lib.Constants;
+import org.eclipse.jgit.lib.ReflogEntry;
import org.eclipse.jgit.lib.Repository;
import org.kohsuke.args4j.Argument;
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CherryPickCommandTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CherryPickCommandTest.java index faaac55ea8..f66661a52f 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CherryPickCommandTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CherryPickCommandTest.java @@ -56,11 +56,11 @@ import org.eclipse.jgit.api.ResetCommand.ResetType; import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.api.errors.JGitInternalException; import org.eclipse.jgit.dircache.DirCache; -import org.eclipse.jgit.internal.storage.file.ReflogReader; import org.eclipse.jgit.junit.RepositoryTestCase; import org.eclipse.jgit.lib.ConfigConstants; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.FileMode; +import org.eclipse.jgit.lib.ReflogReader; import org.eclipse.jgit.lib.RepositoryState; import org.eclipse.jgit.merge.ResolveMerger.MergeFailureReason; import org.eclipse.jgit.revwalk.RevCommit; diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CommitAndLogCommandTests.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CommitAndLogCommandTests.java index e5680273c0..79d8f60441 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CommitAndLogCommandTests.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CommitAndLogCommandTests.java @@ -56,12 +56,12 @@ import org.eclipse.jgit.api.errors.JGitInternalException; import org.eclipse.jgit.api.errors.NoMessageException; import org.eclipse.jgit.errors.IncorrectObjectTypeException; import org.eclipse.jgit.errors.MissingObjectException; -import org.eclipse.jgit.internal.storage.file.ReflogReader; import org.eclipse.jgit.junit.RepositoryTestCase; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.PersonIdent; import org.eclipse.jgit.lib.RefUpdate; +import org.eclipse.jgit.lib.ReflogReader; import org.eclipse.jgit.revwalk.RevCommit; import org.eclipse.jgit.treewalk.TreeWalk; import org.eclipse.jgit.util.FS; diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/ReflogCommandTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/ReflogCommandTest.java index 318d1f98b9..b07c7033f5 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/ReflogCommandTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/ReflogCommandTest.java @@ -47,10 +47,10 @@ import static org.junit.Assert.assertNotNull; import java.util.Collection; -import org.eclipse.jgit.internal.storage.file.ReflogEntry; import org.eclipse.jgit.junit.RepositoryTestCase; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.ObjectId; +import org.eclipse.jgit.lib.ReflogEntry; import org.eclipse.jgit.revwalk.RevCommit; import org.junit.Before; import org.junit.Test; diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/RevertCommandTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/RevertCommandTest.java index 01aaa7bd71..bb3e7a92e8 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/RevertCommandTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/RevertCommandTest.java @@ -57,11 +57,11 @@ import org.eclipse.jgit.api.ResetCommand.ResetType; import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.api.errors.JGitInternalException; import org.eclipse.jgit.dircache.DirCache; -import org.eclipse.jgit.internal.storage.file.ReflogReader; import org.eclipse.jgit.junit.RepositoryTestCase; import org.eclipse.jgit.lib.ConfigConstants; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.FileMode; +import org.eclipse.jgit.lib.ReflogReader; import org.eclipse.jgit.lib.RepositoryState; import org.eclipse.jgit.merge.ResolveMerger.MergeFailureReason; import org.eclipse.jgit.revwalk.RevCommit; diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/StashCreateCommandTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/StashCreateCommandTest.java index 322d47a091..030dc9f4a1 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/StashCreateCommandTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/StashCreateCommandTest.java @@ -54,13 +54,13 @@ import java.util.List; import org.eclipse.jgit.api.errors.UnmergedPathsException; import org.eclipse.jgit.diff.DiffEntry; -import org.eclipse.jgit.internal.storage.file.ReflogEntry; -import org.eclipse.jgit.internal.storage.file.ReflogReader; import org.eclipse.jgit.junit.RepositoryTestCase; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.PersonIdent; import org.eclipse.jgit.lib.Ref; +import org.eclipse.jgit.lib.ReflogEntry; +import org.eclipse.jgit.lib.ReflogReader; import org.eclipse.jgit.revwalk.RevCommit; import org.eclipse.jgit.revwalk.RevWalk; import org.eclipse.jgit.treewalk.TreeWalk; @@ -442,7 +442,7 @@ public class StashCreateCommandTest extends RepositoryTestCase { assertEquals("content", read(committedFile)); validateStashedCommit(stashed); - ReflogReader reader = new ReflogReader(git.getRepository(), + ReflogReader reader = git.getRepository().getReflogReader( Constants.R_STASH); ReflogEntry entry = reader.getLastEntry(); assertNotNull(entry); diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/StashDropCommandTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/StashDropCommandTest.java index 43f063f04d..cfad817d23 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/StashDropCommandTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/StashDropCommandTest.java @@ -52,12 +52,12 @@ import java.io.File; import java.util.List; import org.eclipse.jgit.api.errors.JGitInternalException; -import org.eclipse.jgit.internal.storage.file.ReflogEntry; -import org.eclipse.jgit.internal.storage.file.ReflogReader; import org.eclipse.jgit.junit.RepositoryTestCase; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.Ref; +import org.eclipse.jgit.lib.ReflogEntry; +import org.eclipse.jgit.lib.ReflogReader; import org.eclipse.jgit.revwalk.RevCommit; import org.junit.Before; import org.junit.Test; @@ -126,9 +126,9 @@ public class StashDropCommandTest extends RepositoryTestCase { stashRef = git.getRepository().getRef(Constants.R_STASH); assertNull(stashRef); - ReflogReader reader = new ReflogReader(git.getRepository(), + ReflogReader reader = git.getRepository().getReflogReader( Constants.R_STASH); - assertTrue(reader.getReverseEntries().isEmpty()); + assertNull(reader); } @Test @@ -154,9 +154,9 @@ public class StashDropCommandTest extends RepositoryTestCase { assertNull(git.stashDrop().setAll(true).call()); assertNull(git.getRepository().getRef(Constants.R_STASH)); - ReflogReader reader = new ReflogReader(git.getRepository(), + ReflogReader reader = git.getRepository().getReflogReader( Constants.R_STASH); - assertTrue(reader.getReverseEntries().isEmpty()); + assertNull(reader); } @Test @@ -184,7 +184,7 @@ public class StashDropCommandTest extends RepositoryTestCase { assertNotNull(stashRef); assertEquals(firstStash, stashRef.getObjectId()); - ReflogReader reader = new ReflogReader(git.getRepository(), + ReflogReader reader = git.getRepository().getReflogReader( Constants.R_STASH); List<ReflogEntry> entries = reader.getReverseEntries(); assertEquals(1, entries.size()); @@ -226,7 +226,7 @@ public class StashDropCommandTest extends RepositoryTestCase { assertNotNull(stashRef); assertEquals(thirdStash, stashRef.getObjectId()); - ReflogReader reader = new ReflogReader(git.getRepository(), + ReflogReader reader = git.getRepository().getReflogReader( Constants.R_STASH); List<ReflogEntry> entries = reader.getReverseEntries(); assertEquals(2, entries.size()); @@ -284,7 +284,7 @@ public class StashDropCommandTest extends RepositoryTestCase { assertNotNull(stashRef); assertEquals(thirdStash, stashRef.getObjectId()); - ReflogReader reader = new ReflogReader(git.getRepository(), + ReflogReader reader = git.getRepository().getReflogReader( Constants.R_STASH); List<ReflogEntry> entries = reader.getReverseEntries(); assertEquals(2, entries.size()); diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/RefUpdateTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/RefUpdateTest.java index 08e49d3dd5..7388dce237 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/RefUpdateTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/RefUpdateTest.java @@ -61,11 +61,6 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; -import org.eclipse.jgit.internal.storage.file.FileRepository; -import org.eclipse.jgit.internal.storage.file.LockFile; -import org.eclipse.jgit.internal.storage.file.RefDirectory; -import org.eclipse.jgit.internal.storage.file.RefDirectoryUpdate; -import org.eclipse.jgit.internal.storage.file.ReflogReader; import org.eclipse.jgit.junit.SampleDataRepositoryTestCase; import org.eclipse.jgit.lib.AnyObjectId; import org.eclipse.jgit.lib.Constants; @@ -75,6 +70,8 @@ import org.eclipse.jgit.lib.Ref; import org.eclipse.jgit.lib.RefRename; import org.eclipse.jgit.lib.RefUpdate; import org.eclipse.jgit.lib.RefUpdate.Result; +import org.eclipse.jgit.lib.ReflogEntry; +import org.eclipse.jgit.lib.ReflogReader; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.revwalk.RevCommit; import org.eclipse.jgit.revwalk.RevWalk; @@ -127,14 +124,16 @@ public class RefUpdateTest extends SampleDataRepositoryTestCase { assertNotSame(newid, r.getObjectId()); assertSame(ObjectId.class, r.getObjectId().getClass()); assertEquals(newid, r.getObjectId()); - List<org.eclipse.jgit.internal.storage.file.ReflogEntry> reverseEntries1 = db.getReflogReader("refs/heads/abc").getReverseEntries(); - org.eclipse.jgit.internal.storage.file.ReflogEntry entry1 = reverseEntries1.get(0); + List<ReflogEntry> reverseEntries1 = db + .getReflogReader("refs/heads/abc").getReverseEntries(); + ReflogEntry entry1 = reverseEntries1.get(0); assertEquals(1, reverseEntries1.size()); assertEquals(ObjectId.zeroId(), entry1.getOldId()); assertEquals(r.getObjectId(), entry1.getNewId()); assertEquals(new PersonIdent(db).toString(), entry1.getWho().toString()); assertEquals("", entry1.getComment()); - List<org.eclipse.jgit.internal.storage.file.ReflogEntry> reverseEntries2 = db.getReflogReader("HEAD").getReverseEntries(); + List<ReflogEntry> reverseEntries2 = db.getReflogReader("HEAD") + .getReverseEntries(); assertEquals(0, reverseEntries2.size()); } @@ -339,8 +338,8 @@ public class RefUpdateTest extends SampleDataRepositoryTestCase { // the branch HEAD referred to is left untouched assertEquals(pid, db.resolve("refs/heads/master")); - ReflogReader reflogReader = new ReflogReader(db, "HEAD"); - org.eclipse.jgit.internal.storage.file.ReflogEntry e = reflogReader.getReverseEntries().get(0); + ReflogReader reflogReader = db.getReflogReader("HEAD"); + ReflogEntry e = reflogReader.getReverseEntries().get(0); assertEquals(pid, e.getOldId()); assertEquals(ppid, e.getNewId()); assertEquals("GIT_COMMITTER_EMAIL", e.getWho().getEmailAddress()); @@ -369,8 +368,8 @@ public class RefUpdateTest extends SampleDataRepositoryTestCase { // the branch HEAD referred to is left untouched assertNull(db.resolve("refs/heads/unborn")); - ReflogReader reflogReader = new ReflogReader(db, "HEAD"); - org.eclipse.jgit.internal.storage.file.ReflogEntry e = reflogReader.getReverseEntries().get(0); + ReflogReader reflogReader = db.getReflogReader("HEAD"); + ReflogEntry e = reflogReader.getReverseEntries().get(0); assertEquals(ObjectId.zeroId(), e.getOldId()); assertEquals(ppid, e.getNewId()); assertEquals("GIT_COMMITTER_EMAIL", e.getWho().getEmailAddress()); @@ -706,9 +705,9 @@ public class RefUpdateTest extends SampleDataRepositoryTestCase { ObjectId oldfromId = db.resolve(fromName); ObjectId oldHeadId = db.resolve(Constants.HEAD); writeReflog(db, oldfromId, "Just a message", fromName); - List<org.eclipse.jgit.internal.storage.file.ReflogEntry> oldFromLog = db + List<ReflogEntry> oldFromLog = db .getReflogReader(fromName).getReverseEntries(); - List<org.eclipse.jgit.internal.storage.file.ReflogEntry> oldHeadLog = oldHeadId != null ? db + List<ReflogEntry> oldHeadLog = oldHeadId != null ? db .getReflogReader(Constants.HEAD).getReverseEntries() : null; assertTrue("internal check, we have a log", new File(db.getDirectory(), diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/ReflogReaderTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/ReflogReaderTest.java index 65367a8c18..a0dff7ee86 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/ReflogReaderTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/ReflogReaderTest.java @@ -55,13 +55,13 @@ import java.io.IOException; import java.text.SimpleDateFormat; import java.util.List; -import org.eclipse.jgit.internal.storage.file.CheckoutEntry; -import org.eclipse.jgit.internal.storage.file.ReflogEntry; -import org.eclipse.jgit.internal.storage.file.ReflogReader; import org.eclipse.jgit.junit.SampleDataRepositoryTestCase; +import org.eclipse.jgit.lib.CheckoutEntry; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.PersonIdent; +import org.eclipse.jgit.lib.ReflogEntry; +import org.eclipse.jgit.lib.ReflogReader; import org.junit.Test; public class ReflogReaderTest extends SampleDataRepositoryTestCase { @@ -97,7 +97,7 @@ public class ReflogReaderTest extends SampleDataRepositoryTestCase { public void testReadOneLine() throws Exception { setupReflog("logs/refs/heads/master", oneLine); - ReflogReader reader = new ReflogReader(db, "refs/heads/master"); + ReflogReader reader = new ReflogReaderImpl(db, "refs/heads/master"); ReflogEntry e = reader.getLastEntry(); assertEquals(ObjectId .fromString("da85355dfc525c9f6f3927b876f379f46ccf826e"), e @@ -124,7 +124,7 @@ public class ReflogReaderTest extends SampleDataRepositoryTestCase { public void testReadTwoLine() throws Exception { setupReflog("logs/refs/heads/master", twoLine); - ReflogReader reader = new ReflogReader(db, "refs/heads/master"); + ReflogReader reader = new ReflogReaderImpl(db, "refs/heads/master"); List<ReflogEntry> reverseEntries = reader.getReverseEntries(); assertEquals(2, reverseEntries.size()); ReflogEntry e = reverseEntries.get(0); @@ -159,7 +159,7 @@ public class ReflogReaderTest extends SampleDataRepositoryTestCase { @Test public void testReadWhileAppendIsInProgress() throws Exception { setupReflog("logs/refs/heads/master", twoLineWithAppendInProgress); - ReflogReader reader = new ReflogReader(db, "refs/heads/master"); + ReflogReader reader = new ReflogReaderImpl(db, "refs/heads/master"); List<ReflogEntry> reverseEntries = reader.getReverseEntries(); assertEquals(2, reverseEntries.size()); ReflogEntry e = reverseEntries.get(0); @@ -236,7 +236,7 @@ public class ReflogReaderTest extends SampleDataRepositoryTestCase { public void testSpecificEntryNumber() throws Exception { setupReflog("logs/refs/heads/master", twoLine); - ReflogReader reader = new ReflogReader(db, "refs/heads/master"); + ReflogReader reader = new ReflogReaderImpl(db, "refs/heads/master"); ReflogEntry e = reader.getReverseEntry(0); assertEquals( ObjectId.fromString("c6734895958052a9dbc396cff4459dc1a25029ab"), diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/ReflogCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/ReflogCommand.java index 373eb3c645..8cd78aebe1 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/api/ReflogCommand.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/ReflogCommand.java @@ -49,9 +49,9 @@ import java.util.Collection; import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.api.errors.InvalidRefNameException; import org.eclipse.jgit.internal.JGitText; -import org.eclipse.jgit.internal.storage.file.ReflogEntry; -import org.eclipse.jgit.internal.storage.file.ReflogReader; import org.eclipse.jgit.lib.Constants; +import org.eclipse.jgit.lib.ReflogEntry; +import org.eclipse.jgit.lib.ReflogReader; import org.eclipse.jgit.lib.Repository; /** @@ -96,7 +96,7 @@ public class ReflogCommand extends GitCommand<Collection<ReflogEntry>> { checkCallable(); try { - ReflogReader reader = new ReflogReader(repo, ref); + ReflogReader reader = repo.getReflogReader(ref); return reader.getReverseEntries(); } catch (IOException e) { throw new InvalidRefNameException(MessageFormat.format( diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/StashDropCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/StashDropCommand.java index a3779103fc..e4431c37b1 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/api/StashDropCommand.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/StashDropCommand.java @@ -54,13 +54,13 @@ import org.eclipse.jgit.api.errors.InvalidRefNameException; import org.eclipse.jgit.api.errors.JGitInternalException; import org.eclipse.jgit.errors.LockFailedException; import org.eclipse.jgit.internal.JGitText; -import org.eclipse.jgit.internal.storage.file.ReflogEntry; -import org.eclipse.jgit.internal.storage.file.ReflogReader; import org.eclipse.jgit.internal.storage.file.ReflogWriter; import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.Ref; import org.eclipse.jgit.lib.RefUpdate; import org.eclipse.jgit.lib.RefUpdate.Result; +import org.eclipse.jgit.lib.ReflogEntry; +import org.eclipse.jgit.lib.ReflogReader; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.util.FileUtils; @@ -181,9 +181,9 @@ public class StashDropCommand extends GitCommand<ObjectId> { return null; } - ReflogReader reader = new ReflogReader(repo, R_STASH); List<ReflogEntry> entries; try { + ReflogReader reader = repo.getReflogReader(R_STASH); entries = reader.getReverseEntries(); } catch (IOException e) { throw new JGitInternalException(JGitText.get().stashDropFailed, e); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/StashListCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/StashListCommand.java index 3d498fc127..bbbb7ace3d 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/api/StashListCommand.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/StashListCommand.java @@ -53,8 +53,8 @@ import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.api.errors.InvalidRefNameException; import org.eclipse.jgit.api.errors.JGitInternalException; import org.eclipse.jgit.internal.JGitText; -import org.eclipse.jgit.internal.storage.file.ReflogEntry; import org.eclipse.jgit.lib.Constants; +import org.eclipse.jgit.lib.ReflogEntry; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.revwalk.RevCommit; import org.eclipse.jgit.revwalk.RevWalk; diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsRepository.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsRepository.java index e2b9ddd2f0..122f6d3d19 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsRepository.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsRepository.java @@ -47,9 +47,9 @@ import java.io.IOException; import java.text.MessageFormat; import org.eclipse.jgit.internal.JGitText; -import org.eclipse.jgit.internal.storage.file.ReflogReader; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.RefUpdate; +import org.eclipse.jgit.lib.ReflogReader; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.lib.StoredConfig; diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/CheckoutEntry.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/CheckoutEntryImpl.java index 7f3a398359..e968119ad9 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/CheckoutEntry.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/CheckoutEntryImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011, Robin Rosenberg <robin.rosenberg@dewire.com> + * Copyright (C) 2011-2013, Robin Rosenberg <robin.rosenberg@dewire.com> * and other copyright owners as documented in the project's IP log. * * This program and the accompanying materials are made available @@ -43,17 +43,20 @@ package org.eclipse.jgit.internal.storage.file; +import org.eclipse.jgit.lib.CheckoutEntry; +import org.eclipse.jgit.lib.ReflogEntry; + /** * Parsed information about a checkout. */ -public class CheckoutEntry { +public class CheckoutEntryImpl implements CheckoutEntry { static final String CHECKOUT_MOVING_FROM = "checkout: moving from "; //$NON-NLS-1$ private String from; private String to; - CheckoutEntry(ReflogEntry reflogEntry) { + CheckoutEntryImpl(ReflogEntry reflogEntry) { String comment = reflogEntry.getComment(); int p1 = CHECKOUT_MOVING_FROM.length(); int p2 = comment.indexOf(" to ", p1); //$NON-NLS-1$ @@ -62,16 +65,10 @@ public class CheckoutEntry { to = comment.substring(p2 + " to ".length(), p3); //$NON-NLS-1$ } - /** - * @return the name of the branch before checkout - */ public String getFromBranch() { return from; } - /** - * @return the name of the branch after checkout - */ public String getToBranch() { return to; } diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileRepository.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileRepository.java index 95c4c1228f..364fdeb4a1 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileRepository.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileRepository.java @@ -66,6 +66,7 @@ import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.Ref; import org.eclipse.jgit.lib.RefDatabase; import org.eclipse.jgit.lib.RefUpdate; +import org.eclipse.jgit.lib.ReflogReader; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.storage.file.FileBasedConfig; import org.eclipse.jgit.storage.file.FileRepositoryBuilder; @@ -414,7 +415,7 @@ public class FileRepository extends Repository { public ReflogReader getReflogReader(String refName) throws IOException { Ref ref = getRef(refName); if (ref != null) - return new ReflogReader(this, ref.getName()); + return new ReflogReaderImpl(this, ref.getName()); return null; } } diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/GC.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/GC.java index 9950819cbf..ccf35e8968 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/GC.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/GC.java @@ -88,6 +88,7 @@ import org.eclipse.jgit.lib.ProgressMonitor; import org.eclipse.jgit.lib.Ref; import org.eclipse.jgit.lib.Ref.Storage; import org.eclipse.jgit.lib.RefDatabase; +import org.eclipse.jgit.lib.ReflogEntry; import org.eclipse.jgit.revwalk.ObjectWalk; import org.eclipse.jgit.revwalk.RevObject; import org.eclipse.jgit.revwalk.RevWalk; diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ReflogEntry.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ReflogEntryImpl.java index fb48519439..60f04b8d1f 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ReflogEntry.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ReflogEntryImpl.java @@ -47,15 +47,17 @@ package org.eclipse.jgit.internal.storage.file; import java.io.Serializable; import org.eclipse.jgit.internal.JGitText; +import org.eclipse.jgit.lib.CheckoutEntry; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.PersonIdent; +import org.eclipse.jgit.lib.ReflogEntry; import org.eclipse.jgit.util.RawParseUtils; /** * Parsed reflog entry */ -public class ReflogEntry implements Serializable { +public class ReflogEntryImpl implements Serializable, ReflogEntry { private static final long serialVersionUID = 1L; private ObjectId oldId; @@ -66,7 +68,7 @@ public class ReflogEntry implements Serializable { private String comment; - ReflogEntry(byte[] raw, int pos) { + ReflogEntryImpl(byte[] raw, int pos) { oldId = ObjectId.fromString(raw, pos); pos += Constants.OBJECT_ID_STRING_LENGTH; if (raw[pos++] != ' ') @@ -88,29 +90,29 @@ public class ReflogEntry implements Serializable { } } - /** - * @return the commit id before the change + /* (non-Javadoc) + * @see org.eclipse.jgit.internal.storage.file.ReflogEntry#getOldId() */ public ObjectId getOldId() { return oldId; } - /** - * @return the commit id after the change + /* (non-Javadoc) + * @see org.eclipse.jgit.internal.storage.file.ReflogEntry#getNewId() */ public ObjectId getNewId() { return newId; } - /** - * @return user performing the change + /* (non-Javadoc) + * @see org.eclipse.jgit.internal.storage.file.ReflogEntry#getWho() */ public PersonIdent getWho() { return who; } - /** - * @return textual description of the change + /* (non-Javadoc) + * @see org.eclipse.jgit.internal.storage.file.ReflogEntry#getComment() */ public String getComment() { return comment; @@ -123,13 +125,12 @@ public class ReflogEntry implements Serializable { + ", " + getComment() + "]"; } - /** - * @return a {@link CheckoutEntry} with parsed information about a branch - * switch, or null if the entry is not a checkout + /* (non-Javadoc) + * @see org.eclipse.jgit.internal.storage.file.ReflogEntry#parseCheckout() */ public CheckoutEntry parseCheckout() { - if (getComment().startsWith(CheckoutEntry.CHECKOUT_MOVING_FROM)) - return new CheckoutEntry(this); + if (getComment().startsWith(CheckoutEntryImpl.CHECKOUT_MOVING_FROM)) + return new CheckoutEntryImpl(this); else return null; } diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ReflogReader.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ReflogReaderImpl.java index c814cb4196..dadc631194 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ReflogReader.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ReflogReaderImpl.java @@ -1,5 +1,4 @@ /* - * Copyright (C) 2009, Robin Rosenberg * Copyright (C) 2009, Robin Rosenberg <robin.rosenberg@dewire.com> * and other copyright owners as documented in the project's IP log. * @@ -52,6 +51,8 @@ import java.util.Collections; import java.util.List; import org.eclipse.jgit.lib.Constants; +import org.eclipse.jgit.lib.ReflogEntry; +import org.eclipse.jgit.lib.ReflogReader; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.util.IO; import org.eclipse.jgit.util.RawParseUtils; @@ -59,42 +60,33 @@ import org.eclipse.jgit.util.RawParseUtils; /** * Utility for reading reflog entries */ -public class ReflogReader { +class ReflogReaderImpl implements ReflogReader { private File logName; /** * @param db * @param refname */ - public ReflogReader(Repository db, String refname) { + ReflogReaderImpl(Repository db, String refname) { logName = new File(db.getDirectory(), Constants.LOGS + '/' + refname); } - /** - * Get the last entry in the reflog - * - * @return the latest reflog entry, or null if no log - * @throws IOException + /* (non-Javadoc) + * @see org.eclipse.jgit.internal.storage.file.ReflogReaader#getLastEntry() */ public ReflogEntry getLastEntry() throws IOException { return getReverseEntry(0); } - /** - * @return all reflog entries in reverse order - * @throws IOException + /* (non-Javadoc) + * @see org.eclipse.jgit.internal.storage.file.ReflogReaader#getReverseEntries() */ public List<ReflogEntry> getReverseEntries() throws IOException { return getReverseEntries(Integer.MAX_VALUE); } - /** - * Get specific entry in the reflog relative to the last entry which is - * considered entry zero. - * - * @param number - * @return reflog entry or null if not found - * @throws IOException + /* (non-Javadoc) + * @see org.eclipse.jgit.internal.storage.file.ReflogReaader#getReverseEntry(int) */ public ReflogEntry getReverseEntry(int number) throws IOException { if (number < 0) @@ -112,17 +104,14 @@ public class ReflogReader { while (rs >= 0) { rs = RawParseUtils.prevLF(log, rs); if (number == current) - return new ReflogEntry(log, rs < 0 ? 0 : rs + 2); + return new ReflogEntryImpl(log, rs < 0 ? 0 : rs + 2); current++; } return null; } - /** - * @param max - * max number of entries to read - * @return all reflog entries in reverse order - * @throws IOException + /* (non-Javadoc) + * @see org.eclipse.jgit.internal.storage.file.ReflogReaader#getReverseEntries(int) */ public List<ReflogEntry> getReverseEntries(int max) throws IOException { final byte[] log; @@ -136,7 +125,7 @@ public class ReflogReader { List<ReflogEntry> ret = new ArrayList<ReflogEntry>(); while (rs >= 0 && max-- > 0) { rs = RawParseUtils.prevLF(log, rs); - ReflogEntry entry = new ReflogEntry(log, rs < 0 ? 0 : rs + 2); + ReflogEntry entry = new ReflogEntryImpl(log, rs < 0 ? 0 : rs + 2); ret.add(entry); } return ret; diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ReflogWriter.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ReflogWriter.java index 5dc017cd97..9ec35075d1 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ReflogWriter.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ReflogWriter.java @@ -67,6 +67,7 @@ import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.PersonIdent; import org.eclipse.jgit.lib.Ref; import org.eclipse.jgit.lib.RefUpdate; +import org.eclipse.jgit.lib.ReflogEntry; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.util.FS; import org.eclipse.jgit.util.FileUtils; diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/CheckoutEntry.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/CheckoutEntry.java new file mode 100644 index 0000000000..58f17d6f4c --- /dev/null +++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/CheckoutEntry.java @@ -0,0 +1,18 @@ +package org.eclipse.jgit.lib; + +/** + * Parsed information about a checkout. + */ +public interface CheckoutEntry { + + /** + * @return the name of the branch before checkout + */ + public abstract String getFromBranch(); + + /** + * @return the name of the branch after checkout + */ + public abstract String getToBranch(); + +}
\ No newline at end of file diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ReflogEntry.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ReflogEntry.java new file mode 100644 index 0000000000..97875832a9 --- /dev/null +++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ReflogEntry.java @@ -0,0 +1,79 @@ +/* + * Copyright (C) 2011-2013, Robin Rosenberg <robin.rosenberg@dewire.com> + * and other copyright owners as documented in the project's IP log. + * + * This program and the accompanying materials are made available + * under the terms of the Eclipse Distribution License v1.0 which + * accompanies this distribution, is reproduced below, and is + * available at http://www.eclipse.org/org/documents/edl-v10.php + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * - Neither the name of the Eclipse Foundation, Inc. nor the + * names of its contributors may be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.eclipse.jgit.lib; + +import org.eclipse.jgit.lib.ObjectId; +import org.eclipse.jgit.lib.PersonIdent; + +/** + * Parsed reflog entry + */ +public interface ReflogEntry { + + /** + * @return the commit id before the change + */ + public abstract ObjectId getOldId(); + + /** + * @return the commit id after the change + */ + public abstract ObjectId getNewId(); + + /** + * @return user performing the change + */ + public abstract PersonIdent getWho(); + + /** + * @return textual description of the change + */ + public abstract String getComment(); + + /** + * @return a {@link CheckoutEntry} with parsed information about a branch + * switch, or null if the entry is not a checkout + */ + public abstract CheckoutEntry parseCheckout(); + +}
\ No newline at end of file diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ReflogReader.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ReflogReader.java new file mode 100644 index 0000000000..563ad497de --- /dev/null +++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ReflogReader.java @@ -0,0 +1,87 @@ +/* + * Copyright (C) 2013, Robin Rosenberg <robin.rosenberg@dewire.com> + * and other copyright owners as documented in the project's IP log. + * + * This program and the accompanying materials are made available + * under the terms of the Eclipse Distribution License v1.0 which + * accompanies this distribution, is reproduced below, and is + * available at http://www.eclipse.org/org/documents/edl-v10.php + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * - Neither the name of the Eclipse Foundation, Inc. nor the + * names of its contributors may be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package org.eclipse.jgit.lib; + +import java.io.IOException; +import java.util.List; + +/** + * Utility for reading reflog entries + */ +public interface ReflogReader { + + /** + * Get the last entry in the reflog + * + * @return the latest reflog entry, or null if no log + * @throws IOException + */ + public abstract ReflogEntry getLastEntry() throws IOException; + + /** + * @return all reflog entries in reverse order + * @throws IOException + */ + public abstract List<ReflogEntry> getReverseEntries() throws IOException; + + /** + * Get specific entry in the reflog relative to the last entry which is + * considered entry zero. + * + * @param number + * @return reflog entry or null if not found + * @throws IOException + */ + public abstract ReflogEntry getReverseEntry(int number) throws IOException; + + /** + * @param max + * max number of entries to read + * @return all reflog entries in reverse order + * @throws IOException + */ + public abstract List<ReflogEntry> getReverseEntries(int max) + throws IOException; + +}
\ No newline at end of file diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java index de14282cfd..79f02c0230 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java @@ -76,9 +76,6 @@ import org.eclipse.jgit.events.IndexChangedListener; import org.eclipse.jgit.events.ListenerList; import org.eclipse.jgit.events.RepositoryEvent; import org.eclipse.jgit.internal.JGitText; -import org.eclipse.jgit.internal.storage.file.CheckoutEntry; -import org.eclipse.jgit.internal.storage.file.ReflogEntry; -import org.eclipse.jgit.internal.storage.file.ReflogReader; import org.eclipse.jgit.revwalk.RevBlob; import org.eclipse.jgit.revwalk.RevCommit; import org.eclipse.jgit.revwalk.RevObject; @@ -757,7 +754,7 @@ public abstract class Repository { private String resolveReflogCheckout(int checkoutNo) throws IOException { - List<ReflogEntry> reflogEntries = new ReflogReader(this, Constants.HEAD) + List<ReflogEntry> reflogEntries = getReflogReader(Constants.HEAD) .getReverseEntries(); for (ReflogEntry entry : reflogEntries) { CheckoutEntry checkout = entry.parseCheckout(); @@ -778,7 +775,7 @@ public abstract class Repository { JGitText.get().invalidReflogRevision, time)); } assert number >= 0; - ReflogReader reader = new ReflogReader(this, ref.getName()); + ReflogReader reader = getReflogReader(ref.getName()); ReflogEntry entry = reader.getReverseEntry(number); if (entry == null) throw new RevisionSyntaxException(MessageFormat.format( |