Eclipse plugin 从Eclipose RCP项目中删除版本控制
我有一个EclipseRCP应用程序,它使用EGit和JGit实现项目的版本控制 在某些情况下,我希望使项目不再受版本控制。这意味着删除文件系统上项目的.git目录,并使我的应用程序知道项目不受版本控制Eclipse plugin 从Eclipose RCP项目中删除版本控制,eclipse-plugin,eclipse-rcp,egit,jgit,Eclipse Plugin,Eclipse Rcp,Egit,Jgit,我有一个EclipseRCP应用程序,它使用EGit和JGit实现项目的版本控制 在某些情况下,我希望使项目不再受版本控制。这意味着删除文件系统上项目的.git目录,并使我的应用程序知道项目不受版本控制 我试图通过jgitapi寻找解决方案,但找不到任何有用的东西。仅仅使用文件操作API删除.git目录是不够的,因为其中的一些文件似乎被锁定(很可能是JGit锁定的)。对不起,我不是100%确定,因为我对您的场景不够清楚,但是您说您的应用程序也基于EGit,因此,我假设您正在使用标准的Eclips
我试图通过jgitapi寻找解决方案,但找不到任何有用的东西。仅仅使用文件操作API删除.git目录是不够的,因为其中的一些文件似乎被锁定(很可能是JGit锁定的)。对不起,我不是100%确定,因为我对您的场景不够清楚,但是您说您的应用程序也基于EGit,因此,我假设您正在使用标准的EclipseAPI来管理项目。如果是这种情况,您需要的是:
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.DisconnectActionHandler
它使用了大量的egit内部类,但最终使用了RepositoryProvider的API
请注意,方法RepositoryProvider.unmap(project)
不会删除存储库,它只是断开项目的连接
我希望这有帮助 谢谢你的提示-我不知道unmap(project)方法。但是,调用此方法似乎不会释放.git目录上的文件系统锁。因此,仍然无法从我的应用程序中以编程方式删除此目录。我应该补充一点,如果未删除.git目录,EGit在重新启动应用程序后仍会将项目视为处于版本控制之下。这听起来有点奇怪。我想知道是什么锁定了.git目录!