From 2066e55e4740d9e9cfaf455596f832ff694f853a Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Mon, 8 Dec 2008 08:52:46 -0800 Subject: [PATCH] Revert "Teach GitMoveDeleteHook how to move a folder recursively" This reverts commit e7307f14c531d52cf231c39d844841c4adaf5e5a. Turns out this change was more unstable than the code that is based upon GitIndex. As much as I'd like to push forward into DirCache, we're backing this change out to make a stable 0.4 release possible. Signed-off-by: Shawn O. Pearce --- .../org/spearce/egit/core/GitMoveDeleteHook.java | 51 +++------------------- 1 file changed, 5 insertions(+), 46 deletions(-) diff --git a/org.spearce.egit.core/src/org/spearce/egit/core/GitMoveDeleteHook.java b/org.spearce.egit.core/src/org/spearce/egit/core/GitMoveDeleteHook.java index 2cdff7db..409f0184 100644 --- a/org.spearce.egit.core/src/org/spearce/egit/core/GitMoveDeleteHook.java +++ b/org.spearce.egit.core/src/org/spearce/egit/core/GitMoveDeleteHook.java @@ -1,7 +1,6 @@ /******************************************************************************* * Copyright (C) 2008, Robin Rosenberg * Copyright (C) 2007, Shawn O. Pearce - * Copyright (C) 2008, Google Inc. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 @@ -140,52 +139,12 @@ class GitMoveDeleteHook implements IMoveDeleteHook { return true; } - public boolean moveFolder(final IResourceTree tree, final IFolder srcf, - final IFolder dstf, final int updateFlags, + public boolean moveFolder(final IResourceTree tree, final IFolder source, + final IFolder destination, final int updateFlags, final IProgressMonitor monitor) { - final boolean force = (updateFlags & IResource.FORCE) == IResource.FORCE; - if (!force && !tree.isSynchronized(srcf, IResource.DEPTH_ZERO)) - return false; - - final RepositoryMapping srcm = RepositoryMapping.getMapping(srcf); - if (srcm == null) - return false; - final RepositoryMapping dstm = RepositoryMapping.getMapping(dstf); - - try { - final DirCache sCache = DirCache.lock(srcm.getRepository()); - final String sPath = srcm.getRepoRelativePath(srcf); - final DirCacheEntry[] sEnt = sCache.getEntriesWithin(sPath); - if (sEnt.length == 0) { - sCache.unlock(); - return false; - } - - final DirCacheEditor sEdit = sCache.editor(); - sEdit.add(new DirCacheEditor.DeleteTree(sPath)); - if (dstm != null && dstm.getRepository() == srcm.getRepository()) { - final String dPath = srcm.getRepoRelativePath(dstf) + "/"; - final int sPathLen = sPath.length() + 1; - for (final DirCacheEntry se : sEnt) { - final String p = se.getPathString().substring(sPathLen); - sEdit.add(new DirCacheEditor.PathEdit(dPath + p) { - @Override - public void apply(final DirCacheEntry dEnt) { - dEnt.copyMetaData(se); - } - }); - } - } - if (!sEdit.commit()) - tree.failed(new Status(IStatus.ERROR, Activator.getPluginId(), - 0, CoreText.MoveDeleteHook_operationError, null)); - - tree.standardMoveFolder(srcf, dstf, updateFlags, monitor); - } catch (IOException e) { - tree.failed(new Status(IStatus.ERROR, Activator.getPluginId(), 0, - CoreText.MoveDeleteHook_operationError, e)); - } - return true; + // TODO: Implement this. Should be relatively easy, but consider that + // Eclipse thinks folders are real thinsgs, while Git does not care. + return FINISH_FOR_ME; } public boolean moveProject(final IResourceTree tree, final IProject source, -- 2.11.4.GIT