我使用 Java JGit 库(最新版本为 5.9.0.202009080501-r)将远程存储库克隆到我的本地环境。
Git git = Git.cloneRepository().setURI(repositoryUrl).setCredentialsProvider(new UsernamePasswordCredentialsProvider(user, password)).setDirectory(targetDir).call();
使用存储库的内容后,我想通过删除此本地存储库的目录将其从本地环境中删除。
FileUtils.deleteDirectory(gitDirectory);
问题是我无法从 Java 代码中删除 .git 目录,因为拒绝访问“.git\objects\pack”目录中的文件
java.io.IOException:无法删除文件:“本地存储库目录”.git\objects ...由以下原因引起:java.nio.file.AccessDeniedException: 'local repository directory'.git\objects\pack\pack-*******.idx**
它是锁定这些文件的JGit库。停止Java程序后,我可以手动删除这些文件。但是我想从代码中删除它们,因为在服务器上,无法停止应用程序只是为了删除某些内容。
到目前为止,我正在调查这个问题几天。到目前为止我尝试过:
git.close();
git.getRepository().close();
git.getRepository().getObjectDatabase().close();
Git.shutdown();
StoredConfig configuration = git.getRepository().getConfig();
configuration.setBoolean( CONFIG_GC_SECTION, null, CONFIG_KEY_AUTODETACH, false );
configuration.setInt( CONFIG_GC_SECTION, null, CONFIG_KEY_AUTOPACKLIMIT, 0 );
configuration.setInt( CONFIG_GC_SECTION, null, CONFIG_KEY_AUTO, 0 );
configuration.save();
WindowCacheConfig config = new WindowCacheConfig();
config.setPackedGitMMAP(false);
WindowCache.reconfigure(config);
git.gc().setPreserveOldPacks(false).call();
git.gc().setPrunePreserved(true).call();
git.gc().setAggressive(true).call();
上述尝试都没有帮助,结果始终是相同的访问拒绝异常。任何帮助,不胜感激。
假设你有这个:
File dir = new File( "c:/users/master/documents/test" );
dir.mkdir();
Git git = Git.cloneRepository()
.setDirectory( dir )
.setURI( "http://git.com/scm/devenv/jira.git" )
.call();
// you do your stuff with the cloned files here
完成后调用此内容:
git.close();
git = null;
Git.shutdown();
removeRecursively( dir );
添加此方法:
private static void removeRecursively(File f) {
if (f.isDirectory()) {
for (File c : f.listFiles()) {
removeRecursively(c);
}
}
f.delete();
}
在前面我们介绍了Git支持多种数据传输协议,有 git:// 协议、http(s):// 和 user@server:/path.git表示的 SSH 传输协议。我们可以通过这三种协议,对项目/仓库进行克隆操作。 下面,我们将以仓库 git@git.oschina.net:zxzllyj/sample-project.git 为例,对项目/仓库进行克隆。 通过HTTPS协议克隆 git clone
我们已经按照 ChineseTutorialInstall 安装了 Mercurial,对吗?很好! Mercurial 中,我们在 仓库 里做我们所有的工作。仓库是一个目录,它包含所有我们希望保留历史的源代码和这些源代码的历史记录。 最简单开始 Mercurial 的方法是使用一个已经包含文件和一些历史记录的仓库。 我们使用 clone 命令来做这个事情。 这生产一个仓库的Clone",它生成一
git新建的私有仓库,使用git clone url拉取,输入用户名和密码后报错如图,用户名和密码输入的是git登录的用户名和密码,输入没问题,凭据管理器里对应凭据也删了,但还是报错,请问下要怎么解决? 另外我也用了tortoiseGit里‘编辑全局.git/config’里面设置的用户和密码也不成功。
问题内容: 有没有不使用子进程来克隆git存储库的Python方法吗?我准备使用您推荐的任何种类的模块。 问题答案: 有GitPython。之前和内部都没有听说过,它依赖于git可执行文件的位置。此外,他们可能有很多错误。但这可能值得一试。 如何克隆: (这不是很好,我不知道这是否是受支持的方法,但确实有效。)
在较老一代的版本控制系统里,checkout是获取文件的标准操作。你将获得一组特定保 存状态的文件。 在Git和其他分布式版本控制系统里,克隆是标准的操作。通过创建整个仓库的克隆来获得文件。或者说,你实际上把整个中心服务器做了个镜像。凡是主仓库上能做的事, 你都能做。 封闭源码 闭源项目须避免执行touch命令,并确保你从未创建`git-daemon-export-ok`文件。资源 库不再可以通过
本文向大家介绍Docker私有仓库管理和删除本地仓库中的镜像,包括了Docker私有仓库管理和删除本地仓库中的镜像的使用技巧和注意事项,需要的朋友参考一下 一:Docker私有仓库安装 1、 下载镜像是有镜像仓库: 2、 启动并且挂载镜像仓库到本地磁盘: -v /registry:/home/docker-registry:默认情况下,会将仓库存放于容器内的/home/docker-registr
你可以去位于 github 的 Ceph 源码库克隆某个 Ceph 分支,先选择一个分支(默认是 master ),然后点击 Download ZIP 按钮。 要克隆整个 git 源码库,你得先安装、配置 git 。 安装 Git 在 Debian/Ubuntu 上执行下列命令安装 git : sudo apt-get install git 在 CentOS/RHEL 上执行下列命令安装 git
你可以在每一篇教程中找到在线的代码范例,但如果你想自己运行教程的Demo或者将正常工作的范例代码与你的代码进行比较,你可以在这里找到在线的GitHub代码仓库。 目前,CMakeLists.txt文件能够正常生成Visual Studio的工程文件和make文件,它能够在Windows和Linux上运行。但是它在Apple的macOS和其它的IDE上还没有进行非常完全的测试,所以如果出现问题你可以