[EGIT PATCH 16/26] Support recursively getting all entries under a subtree path
- Date: Mon, 11 Aug 2008 18:08:03 -0700
- From: "Shawn O. Pearce" <spearce@xxxxxxxxxxx>
- Subject: [EGIT PATCH 16/26] Support recursively getting all entries under a subtree path
Some applications need to process through all entries of a subtree.
A good example is if the entries need to be recreated into another
subtree to support a "cp -r a b" or "mv a b" operation.
The getEntriesWithin method returns an array of all entries within
a single subtree path, allowing the aplication to process over that
array in order.
Signed-off-by: Shawn O. Pearce <spearce@xxxxxxxxxxx>
---
.../src/org/spearce/jgit/dircache/DirCache.java | 22 ++++++++++++++++++++
1 files changed, 22 insertions(+), 0 deletions(-)
diff --git a/org.spearce.jgit/src/org/spearce/jgit/dircache/DirCache.java b/org.spearce.jgit/src/org/spearce/jgit/dircache/DirCache.java
index e48fdec..302c514 100644
--- a/org.spearce.jgit/src/org/spearce/jgit/dircache/DirCache.java
+++ b/org.spearce.jgit/src/org/spearce/jgit/dircache/DirCache.java
@@ -631,6 +631,28 @@ public class DirCache {
return i < 0 ? null : sortedEntries[i];
}
+ /**
+ * Recursively get all entries within a subtree.
+ *
+ * @param path
+ * the subtree path to get all entries within.
+ * @return all entries recursively contained within the subtree.
+ */
+ public DirCacheEntry[] getEntriesWithin(String path) {
+ if (!path.endsWith("/"))
+ path += "/";
+ final byte[] p = Constants.encode(path);
+ final int pLen = p.length;
+
+ int eIdx = findEntry(p, pLen);
+ if (eIdx < 0)
+ eIdx = -(eIdx + 1);
+ final int lastIdx = nextEntry(p, pLen, eIdx);
+ final DirCacheEntry[] r = new DirCacheEntry[lastIdx - eIdx];
+ System.arraycopy(sortedEntries, eIdx, r, 0, r.length);
+ return r;
+ }
+
void toArray(final int i, final DirCacheEntry[] dst, final int off,
final int cnt) {
System.arraycopy(sortedEntries, i, dst, off, cnt);
--
1.6.0.rc2.22.g71b99
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
- Follow-Ups:
- [EGIT PATCH 17/26] Support copying meta fields from one DirCacheEntry to another
- From: Shawn O. Pearce
- [EGIT PATCH 17/26] Support copying meta fields from one DirCacheEntry to another
- References:
- [EGIT PATCH 00/26] New DirCache API
- From: Shawn O. Pearce
- [EGIT PATCH 01/26] Force all source code to UTF-8 encoding by default
- From: Shawn O. Pearce
- [EGIT PATCH 02/26] Protect WorkingTreeIterator's name encoding from weird ByteBuffers
- From: Shawn O. Pearce
- [EGIT PATCH 03/26] Add Constants.encode as a utility for quick encoding in UTF-8
- From: Shawn O. Pearce
- [EGIT PATCH 04/26] Rely upon Constants.CHARSET over Constants.CHARACTER_ENCODING
- From: Shawn O. Pearce
- [EGIT PATCH 05/26] Allow AbstractTreeIterators to find out about StopWalkExceptions
- From: Shawn O. Pearce
- [EGIT PATCH 06/26] Implement a new .git/index (aka dircache) read interface
- From: Shawn O. Pearce
- [EGIT PATCH 07/26] Export the new DirCache API to Eclipse plugins using jgit
- From: Shawn O. Pearce
- [EGIT PATCH 08/26] Support locking (and unlocking) a .git/index through DirCache
- From: Shawn O. Pearce
- [EGIT PATCH 09/26] Support writing a .git/index through DirCache
- From: Shawn O. Pearce
- [EGIT PATCH 10/26] Support the 'TREE' extension in .git/index through DirCache
- From: Shawn O. Pearce
- [EGIT PATCH 11/26] Support using a DirCache within a TreeWalk
- From: Shawn O. Pearce
- [EGIT PATCH 12/26] Support recreating a .git/index through DirCache
- From: Shawn O. Pearce
- [EGIT PATCH 13/26] Support iterating and building a DirCache at the same time
- From: Shawn O. Pearce
- [EGIT PATCH 14/26] Support creating a new DirCacheEntry for an arbitrary path
- From: Shawn O. Pearce
- [EGIT PATCH 15/26] Support a simplified model of editing index entries
- From: Shawn O. Pearce
- [EGIT PATCH 00/26] New DirCache API
- Prev by Date: [EGIT PATCH 17/26] Support copying meta fields from one DirCacheEntry to another
- Next by Date: [EGIT PATCH 15/26] Support a simplified model of editing index entries
- Previous by thread: [EGIT PATCH 15/26] Support a simplified model of editing index entries
- Next by thread: [EGIT PATCH 17/26] Support copying meta fields from one DirCacheEntry to another
- Index(es):