[EGIT PATCH 17/26] Support copying meta fields from one DirCacheEntry to another
- Date: Mon, 11 Aug 2008 18:08:04 -0700
- From: "Shawn O. Pearce" <spearce@xxxxxxxxxxx>
- Subject: [EGIT PATCH 17/26] Support copying meta fields from one DirCacheEntry to another
When an application moves a DirCacheEntry record from one path to
another path in the index we need to recreate the entry object and
also copy the meta fields from the old entry to the new entry.
Signed-off-by: Shawn O. Pearce <spearce@xxxxxxxxxxx>
---
.../org/spearce/jgit/dircache/DirCacheEntry.java | 16 ++++++++++++++++
1 files changed, 16 insertions(+), 0 deletions(-)
diff --git a/org.spearce.jgit/src/org/spearce/jgit/dircache/DirCacheEntry.java b/org.spearce.jgit/src/org/spearce/jgit/dircache/DirCacheEntry.java
index eba2678..2b5ce03 100644
--- a/org.spearce.jgit/src/org/spearce/jgit/dircache/DirCacheEntry.java
+++ b/org.spearce.jgit/src/org/spearce/jgit/dircache/DirCacheEntry.java
@@ -354,6 +354,22 @@ public class DirCacheEntry {
return Constants.CHARSET.decode(ByteBuffer.wrap(path)).toString();
}
+ /**
+ * Copy the ObjectId and other meta fields from an existing entry.
+ * <p>
+ * This method copies everything except the path from one entry to another,
+ * supporting renaming.
+ *
+ * @param src
+ * the entry to copy ObjectId and meta fields from.
+ */
+ public void copyMetaData(final DirCacheEntry src) {
+ final int pLen = NB.decodeUInt16(info, infoOffset + P_FLAGS) & 0xfff;
+ System.arraycopy(src.info, src.infoOffset, info, infoOffset, INFO_LEN);
+ NB.encodeInt16(info, infoOffset + P_FLAGS, pLen
+ | NB.decodeUInt16(info, infoOffset + P_FLAGS) & ~0xfff);
+ }
+
private long decodeTS(final int pIdx) {
final int base = infoOffset + pIdx;
final int sec = NB.decodeInt32(info, base);
--
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 18/26] Add JUnit tests for new DirCache API
- From: Shawn O. Pearce
- [EGIT PATCH 18/26] Add JUnit tests for new DirCache API
- 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 16/26] Support recursively getting all entries under a subtree path
- From: Shawn O. Pearce
- [EGIT PATCH 00/26] New DirCache API
- Prev by Date: [EGIT PATCH 18/26] Add JUnit tests for new DirCache API
- Next by Date: [EGIT PATCH 16/26] Support recursively getting all entries under a subtree path
- Previous by thread: [EGIT PATCH 16/26] Support recursively getting all entries under a subtree path
- Next by thread: [EGIT PATCH 18/26] Add JUnit tests for new DirCache API
- Index(es):