从Eclipose RCP项目中删除版本控件



我有一个Eclipse RCP应用程序,该应用程序使用EGIT和JGIT来实现项目的版本控件。

在某些情况下,我想做到这一点,以便项目不再受版本控制。这意味着既删除了文件系统上的项目.git目录,又使我的应用程序意识到该项目不在版本控制下。

我试图浏览JGIT API以寻求解决方案,但找不到任何有用的东西。只需使用文件操作API删除.git目录是不够的,因为其中某些文件似乎已锁定(很可能由JGIT锁定)。

对不起,我不是100%确定的,因为您的情况对我来说还不够清楚,但是您说您的申请也基于EGIT,所以我认为您正在使用标准Eclipse API管理项目。如果是这种情况,您要寻找的是:org.eclipse.team.core.RepositoryProvider

这是一个例子:

public class UntrackProject extends AbstractHandler implements IHandler {
    @Override
    public Object execute(ExecutionEvent event) throws ExecutionException {
        IProject project = getProject(); // get the project, for example using the selection service
        try {
            RepositoryProvider.unmap(project);
            //TODO Refresh your viewer to show changes
        } catch (TeamException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }
}

供参考,您可以检查上下文菜单的处理程序" Disconnect",该处理程序完全可以完成您要寻找的内容:org.eclipse.egit.ui.internal.actions.DisconnectActionHandlerhttps://git.eclipse.org/c/egit/egit.git.git/tree/org.eclipse.egit.ui/src/org/org/eclipse/egit/egit/egit/iinternal/internal/ternal/actions/disconnectaction handler.java

它使用了许多内部类EGIT,但最终使用了RepositoryProvider的API。

请注意,方法RepositoryProvider.unmap(project)不会删除存储库,它只是断开项目。

我希望这会有所帮助!

最新更新