我想删除Bitbucket LFS上的一个文件,提供它的OID。我在文档中找不到如何做到这一点。这是可以做到的吗?怎么做?
发布于 2021-08-17 08:02:19
bitbucket api ( https://developer.atlassian.com/bitbucket/api/2/reference/resource/ )的目标不是直接支持标准的git命令,如接收新的提交、签出、推送等) bitbucket API更多地公开了GIT作为标准存储库没有涵盖的开箱即用的内容,如添加存储库、存储库元数据、拉取请求审批、评论、工作区、问题、管道、代码片段和团队管理。
为了处理标准的git命令和GIT-LFS相关命令,您可以尝试使用标准库,这些库可以提供对GIT存储库的编程访问权限,如org.eclipse.jgit ( https://www.eclipse.org/jgit/ )。有一些包专门用于git-lfs ( https://download.eclipse.org/jgit/site/5.12.0.202106070339-r/apidocs/org/eclipse/jgit/lfs/package-summary.html ),尽管只要我们知道文件路径,删除操作就不涉及git-lfs特定命令。
因此,您通常会在pom.xml文件或类似文件中包含以下内容:
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit</artifactId>
<version>5.12.0.202106070339-r</version>
</dependency>
<dependency><!-- this second one is not used in the snippet below -->
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit.lfs</artifactId>
<version>5.12.0.202106070339-r</version>
</dependency>下面是Java中的一小段代码,展示了如何继续操作,前提是您不仅可以获得对象的OID,还可以获得文件路径。
import java.io.File;
import java.io.IOException;
import org.eclipse.jgit.api.CommitCommand;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.RmCommand;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.api.errors.NoFilepatternException;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.lib.RepositoryBuilder;
public class App {
public static void main( String[] args ) throws IOException, NoFilepatternException, GitAPIException {
File file = new File("c:/users/admin/git/MyRepo");
Repository repo = new RepositoryBuilder().setWorkTree(file).build();
Git git = new Git(repo);
RmCommand rmc = new RmCommand(repo);
rmc.addFilepattern("large_image_file.bmp");
rmc.call();
CommitCommand cc = git.commit();
cc.setMessage("deleting large files");
cc.call();
}
}https://stackoverflow.com/questions/68782602
复制相似问题