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

时间:2016-06-16 11:06:08

标签: eclipse-plugin eclipse-rcp egit jgit

我有一个Eclipse RCP应用程序,它使用EGit和JGit来实现项目的版本控制。

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

我尝试通过JGit API查找解决方案,但找不到任何有用的东西。简单地使用文件操作API删除.git目录是不够的,因为其中的某些文件似乎被锁定(很可能是由JGit)。

1 个答案:

答案 0 :(得分:2)

抱歉,我不是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;
    }

}

作为参考,您可以检查上下文菜单的处理程序"断开连接",它完全符合您的要求:org.eclipse.egit.ui.internal.actions.DisconnectActionHandler https://git.eclipse.org/c/egit/egit.git/tree/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/DisconnectActionHandler.java

它使用了很多内部类的egit,但最后它使用了RepositoryProvider的API。

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

我希望这有帮助!