import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevBlob;
import org.eclipse.jgit.revwalk.RevCommit;
+import org.eclipse.jgit.storage.file.ReflogEntry;
import org.eclipse.jgit.storage.file.FileBasedConfig;
import org.eclipse.jgit.storage.file.FileRepository;
import org.eclipse.jgit.storage.file.ReflogReader;
final ReflogReader log = remoteRepository.getReflogReader(dstName);
assertNotNull("has log for " + dstName);
- final ReflogReader.Entry last = log.getLastEntry();
+ final ReflogEntry last = log.getLastEntry();
assertNotNull("has last entry", last);
assertEquals(ObjectId.zeroId(), last.getOldId());
assertEquals(Q, last.getNewId());
assertNotSame(newid, r.getObjectId());
assertSame(ObjectId.class, r.getObjectId().getClass());
assertEquals(newid, r.getObjectId());
- List<org.eclipse.jgit.storage.file.ReflogReader.Entry> reverseEntries1 = db.getReflogReader("refs/heads/abc").getReverseEntries();
- org.eclipse.jgit.storage.file.ReflogReader.Entry entry1 = reverseEntries1.get(0);
+ List<org.eclipse.jgit.storage.file.ReflogEntry> reverseEntries1 = db.getReflogReader("refs/heads/abc").getReverseEntries();
+ org.eclipse.jgit.storage.file.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.storage.file.ReflogReader.Entry> reverseEntries2 = db.getReflogReader("HEAD").getReverseEntries();
+ List<org.eclipse.jgit.storage.file.ReflogEntry> reverseEntries2 = db.getReflogReader("HEAD").getReverseEntries();
assertEquals(0, reverseEntries2.size());
}
// the branch HEAD referred to is left untouched
assertEquals(pid, db.resolve("refs/heads/master"));
ReflogReader reflogReader = new ReflogReader(db, "HEAD");
- org.eclipse.jgit.storage.file.ReflogReader.Entry e = reflogReader.getReverseEntries().get(0);
+ org.eclipse.jgit.storage.file.ReflogEntry e = reflogReader.getReverseEntries().get(0);
assertEquals(pid, e.getOldId());
assertEquals(ppid, e.getNewId());
assertEquals("GIT_COMMITTER_EMAIL", e.getWho().getEmailAddress());
// the branch HEAD referred to is left untouched
assertNull(db.resolve("refs/heads/unborn"));
ReflogReader reflogReader = new ReflogReader(db, "HEAD");
- org.eclipse.jgit.storage.file.ReflogReader.Entry e = reflogReader.getReverseEntries().get(0);
+ org.eclipse.jgit.storage.file.ReflogEntry e = reflogReader.getReverseEntries().get(0);
assertEquals(ObjectId.zeroId(), e.getOldId());
assertEquals(ppid, e.getNewId());
assertEquals("GIT_COMMITTER_EMAIL", e.getWho().getEmailAddress());
ObjectId oldHeadId = db.resolve(Constants.HEAD);
writeReflog(db, oldfromId, oldfromId, "Just a message",
fromName);
- List<org.eclipse.jgit.storage.file.ReflogReader.Entry> oldFromLog = db
+ List<org.eclipse.jgit.storage.file.ReflogEntry> oldFromLog = db
.getReflogReader(fromName).getReverseEntries();
- List<org.eclipse.jgit.storage.file.ReflogReader.Entry> oldHeadLog = oldHeadId != null ? db
+ List<org.eclipse.jgit.storage.file.ReflogEntry> oldHeadLog = oldHeadId != null ? db
.getReflogReader(Constants.HEAD).getReverseEntries() : null;
assertTrue("internal check, we have a log", new File(db.getDirectory(),
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.PersonIdent;
import org.eclipse.jgit.lib.SampleDataRepositoryTestCase;
-import org.eclipse.jgit.storage.file.ReflogReader.Entry;
import org.junit.Test;
public class ReflogReaderTest extends SampleDataRepositoryTestCase {
setupReflog("logs/refs/heads/master", oneLine);
ReflogReader reader = new ReflogReader(db, "refs/heads/master");
- Entry e = reader.getLastEntry();
+ ReflogEntry e = reader.getLastEntry();
assertEquals(ObjectId
.fromString("da85355dfc525c9f6f3927b876f379f46ccf826e"), e
.getOldId());
setupReflog("logs/refs/heads/master", twoLine);
ReflogReader reader = new ReflogReader(db, "refs/heads/master");
- List<Entry> reverseEntries = reader.getReverseEntries();
+ List<ReflogEntry> reverseEntries = reader.getReverseEntries();
assertEquals(2, reverseEntries.size());
- Entry e = reverseEntries.get(0);
+ ReflogEntry e = reverseEntries.get(0);
assertEquals(ObjectId
.fromString("c6734895958052a9dbc396cff4459dc1a25029ab"), e
.getOldId());
public void testReadWhileAppendIsInProgress() throws Exception {
setupReflog("logs/refs/heads/master", twoLineWithAppendInProgress);
ReflogReader reader = new ReflogReader(db, "refs/heads/master");
- List<Entry> reverseEntries = reader.getReverseEntries();
+ List<ReflogEntry> reverseEntries = reader.getReverseEntries();
assertEquals(2, reverseEntries.size());
- Entry e = reverseEntries.get(0);
+ ReflogEntry e = reverseEntries.get(0);
assertEquals(ObjectId
.fromString("c6734895958052a9dbc396cff4459dc1a25029ab"), e
.getOldId());
public void testReadLineWithMissingComment() throws Exception {
setupReflog("logs/refs/heads/master", oneLineWithoutComment);
final ReflogReader reader = db.getReflogReader("master");
- Entry e = reader.getLastEntry();
+ ReflogEntry e = reader.getLastEntry();
assertEquals(ObjectId
.fromString("da85355dfc525c9f6f3927b876f379f46ccf826e"), e
.getOldId());
--- /dev/null
+/*
+ * Copyright (C) 2011, Chris Aniszczyk <caniszczyk@gmail.com>
+ * Copyright (C) 2009, 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.storage.file;
+
+import org.eclipse.jgit.JGitText;
+import org.eclipse.jgit.lib.Constants;
+import org.eclipse.jgit.lib.ObjectId;
+import org.eclipse.jgit.lib.PersonIdent;
+import org.eclipse.jgit.util.RawParseUtils;
+
+/**
+ * Parsed reflog entry
+ */
+public class ReflogEntry {
+ private ObjectId oldId;
+
+ private ObjectId newId;
+
+ private PersonIdent who;
+
+ private String comment;
+
+ ReflogEntry(byte[] raw, int pos) {
+ oldId = ObjectId.fromString(raw, pos);
+ pos += Constants.OBJECT_ID_STRING_LENGTH;
+ if (raw[pos++] != ' ')
+ throw new IllegalArgumentException(
+ JGitText.get().rawLogMessageDoesNotParseAsLogEntry);
+ newId = ObjectId.fromString(raw, pos);
+ pos += Constants.OBJECT_ID_STRING_LENGTH;
+ if (raw[pos++] != ' ') {
+ throw new IllegalArgumentException(
+ JGitText.get().rawLogMessageDoesNotParseAsLogEntry);
+ }
+ who = RawParseUtils.parsePersonIdentOnly(raw, pos);
+ int p0 = RawParseUtils.next(raw, pos, '\t');
+ if (p0 >= raw.length)
+ comment = ""; // personident has no \t, no comment present
+ else {
+ int p1 = RawParseUtils.nextLF(raw, p0);
+ comment = p1 > p0 ? RawParseUtils.decode(raw, p0, p1 - 1) : "";
+ }
+ }
+
+ /**
+ * @return the commit id before the change
+ */
+ public ObjectId getOldId() {
+ return oldId;
+ }
+
+ /**
+ * @return the commit id after the change
+ */
+ public ObjectId getNewId() {
+ return newId;
+ }
+
+ /**
+ * @return user performin the change
+ */
+ public PersonIdent getWho() {
+ return who;
+ }
+
+ /**
+ * @return textual description of the change
+ */
+ public String getComment() {
+ return comment;
+ }
+
+ @Override
+ public String toString() {
+ return "Entry[" + oldId.name() + ", " + newId.name() + ", " + getWho() + ", "
+ + getComment() + "]";
+ }
+}
\ No newline at end of file
import java.util.Collections;
import java.util.List;
-import org.eclipse.jgit.JGitText;
-import org.eclipse.jgit.lib.Constants;
-import org.eclipse.jgit.lib.ObjectId;
-import org.eclipse.jgit.lib.PersonIdent;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.util.IO;
import org.eclipse.jgit.util.RawParseUtils;
* Utility for reading reflog entries
*/
public class ReflogReader {
- /**
- * Parsed reflog entry
- */
- static public class Entry {
- private ObjectId oldId;
-
- private ObjectId newId;
-
- private PersonIdent who;
-
- private String comment;
-
- Entry(byte[] raw, int pos) {
- oldId = ObjectId.fromString(raw, pos);
- pos += Constants.OBJECT_ID_STRING_LENGTH;
- if (raw[pos++] != ' ')
- throw new IllegalArgumentException(
- JGitText.get().rawLogMessageDoesNotParseAsLogEntry);
- newId = ObjectId.fromString(raw, pos);
- pos += Constants.OBJECT_ID_STRING_LENGTH;
- if (raw[pos++] != ' ') {
- throw new IllegalArgumentException(
- JGitText.get().rawLogMessageDoesNotParseAsLogEntry);
- }
- who = RawParseUtils.parsePersonIdentOnly(raw, pos);
- int p0 = RawParseUtils.next(raw, pos, '\t');
- if (p0 >= raw.length)
- comment = ""; // personident has no \t, no comment present
- else {
- int p1 = RawParseUtils.nextLF(raw, p0);
- comment = p1 > p0 ? RawParseUtils.decode(raw, p0, p1 - 1) : "";
- }
- }
-
- /**
- * @return the commit id before the change
- */
- public ObjectId getOldId() {
- return oldId;
- }
-
- /**
- * @return the commit id after the change
- */
- public ObjectId getNewId() {
- return newId;
- }
-
- /**
- * @return user performin the change
- */
- public PersonIdent getWho() {
- return who;
- }
-
- /**
- * @return textual description of the change
- */
- public String getComment() {
- return comment;
- }
-
- @Override
- public String toString() {
- return "Entry[" + oldId.name() + ", " + newId.name() + ", " + getWho() + ", "
- + getComment() + "]";
- }
- }
-
private File logName;
- ReflogReader(Repository db, String refname) {
+ /**
+ * @param db
+ * @param refname
+ */
+ public ReflogReader(Repository db, String refname) {
logName = new File(db.getDirectory(), "logs/" + refname);
}
* @return the latest reflog entry, or null if no log
* @throws IOException
*/
- public Entry getLastEntry() throws IOException {
- List<Entry> entries = getReverseEntries(1);
+ public ReflogEntry getLastEntry() throws IOException {
+ List<ReflogEntry> entries = getReverseEntries(1);
return entries.size() > 0 ? entries.get(0) : null;
}
* @return all reflog entries in reverse order
* @throws IOException
*/
- public List<Entry> getReverseEntries() throws IOException {
+ public List<ReflogEntry> getReverseEntries() throws IOException {
return getReverseEntries(Integer.MAX_VALUE);
}
* @return all reflog entries in reverse order
* @throws IOException
*/
- public List<Entry> getReverseEntries(int max) throws IOException {
+ public List<ReflogEntry> getReverseEntries(int max) throws IOException {
final byte[] log;
try {
log = IO.readFully(logName);
}
int rs = RawParseUtils.prevLF(log, log.length);
- List<Entry> ret = new ArrayList<Entry>();
+ List<ReflogEntry> ret = new ArrayList<ReflogEntry>();
while (rs >= 0 && max-- > 0) {
rs = RawParseUtils.prevLF(log, rs);
- Entry entry = new Entry(log, rs < 0 ? 0 : rs + 2);
+ ReflogEntry entry = new ReflogEntry(log, rs < 0 ? 0 : rs + 2);
ret.add(entry);
}
return ret;