我们如何 use/access/read 在我们的 java 代码中将放置在私有 gitlab 存储库中的文件内容归档

How can we use/access/read file contents of files placed in a private gitlab repository in our java code

我想 use/access/read 将文件内容(excel、属性文件等)放在我的 java 代码中的私有 gitlab 存储库中,这将创建一个使用私有 gitlab 存储库中的文件内容作为输出的 CSV 文件。

如果您的 Java 应用程序的目的是 analyze/control git 存储库,那么在 JAR 中执行 git 操作是有意义的。否则,请考虑从 CI/CD 管道或用户调用简单的 bash 脚本。

JGit

如果您的应用程序需要执行许多 git 操作,JGit is a good option. You can include the dependency in maven 或 gradle。

下面是克隆特定分支的简单代码示例:

import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException;

try {
    Git.cloneRepository()
      .setURI("https://github.com/account/repo.git")
      .setDirectory(new File("/path/to/target_directory"))
      .setBranchesToClone(Arrays.asList("refs/heads/branch-name"))
      .setBranch("refs/heads/branch-name")
      .call();
} catch (GitAPIException e) {
    System.err.println("Exception occurred while cloning repo.");
    e.printStackTrace();
}

运行时执行

如果你不想使用JGit的学习曲线,或者不想外部依赖,你也可以使用Runtime exec方法调用git命令.这需要在主机 OS 上安装、访问和验证 git。这是一个例子:

import java.io.*;

try {
    String cmd = "git clone https://github.com/account/repo.git";
    Process p = Runtime.getRuntime().exec(cmd);
}
catch(IOException e)
{
   System.err.println("Exception occurred while executing command.");
   e.printStackTrace();
}

其他参考资料: