[EGIT PATCH 07/11] Allow WorkingTreeIterator to track last modified time for entries
- From
Shawn O. Pearce <spearce@spearce.org>
- Date
- Aug 10, 2008, 08:46 UTC
- Message-ID
- <1218357986-19671-8-git-send-email-spearce@spearce.org>
- In-Reply-To
- <1218357986-19671-7-git-send-email-spearce@spearce.org>
We need this last modified time to compare against the index to decide if a file is dirty or not. Its computed on demand only for the items we actually care about, as we don't need the last modified time for a directory.
Signed-off-by: Shawn O. Pearce <spearce@spearce.org> --- .../spearce/jgit/treewalk/FileTreeIterator.java | 9 +++++++++ .../spearce/jgit/treewalk/WorkingTreeIterator.java | 13 +++++++++++++ 2 files changed, 22 insertions(+), 0 deletions(-)
diff --git a/org.spearce.jgit/src/org/spearce/jgit/treewalk/FileTreeIterator.java b/org.spearce.jgit/src/org/spearce/jgit/treewalk/FileTreeIterator.java index 331f153..25425dd 100644 --- a/org.spearce.jgit/src/org/spearce/jgit/treewalk/FileTreeIterator.java +++ b/org.spearce.jgit/src/org/spearce/jgit/treewalk/FileTreeIterator.java @@ -106,6 +106,8 @@ public class FileTreeIterator extends WorkingTreeIterator { private long length = -1; + private long lastModified; + FileEntry(final File f) { file = f; @@ -138,6 +140,13 @@ public class FileTreeIterator extends WorkingTreeIterator { } @Override + public long getLastModified() { + if (lastModified == 0) + lastModified = file.lastModified(); + return lastModified; + } + + @Override public InputStream openInputStream() throws IOException { return new FileInputStream(file); } diff --git a/org.spearce.jgit/src/org/spearce/jgit/treewalk/WorkingTreeIterator.java b/org.spearce.jgit/src/org/spearce/jgit/treewalk/WorkingTreeIterator.java index afac77b..cb4a089 100644 --- a/org.spearce.jgit/src/org/spearce/jgit/treewalk/WorkingTreeIterator.java +++ b/org.spearce.jgit/src/org/spearce/jgit/treewalk/WorkingTreeIterator.java @@ -433,6 +433,19 @@ public abstract class WorkingTreeIterator extends AbstractTreeIterator { public abstract long getLength(); /** + * Get the last modified time of this entry. + * <p> + * <b>Note: Efficient implementation required.</b> + * <p> + * The implementation of this method must be efficient. If a subclass + * needs to compute the value they should cache the reference within an + * instance member instead. + * + * @return time since the epoch (in ms) of the last change. + */ + public abstract long getLastModified(); + + /** * Get the name of this entry within its directory. * <p> * Efficient implementations are not required. The caller will obtain
-- 1.6.0.rc2.219.g1250ab