package api.common.util;
import lombok.SneakyThrows;
import org.gitlab4j.api.GitLabApi;
import org.gitlab4j.api.models.Commit;
import org.gitlab4j.api.models.Project;
import java.util.Date;
import java.util.List;
/**
*
*
* org.gitlab4j
* gitlab4j-api
* 5.0.1
*
*/
public class GitLabUtil {
/**
* @param projectUrl git 仓库地址 http://gitlab-441-442-443/root/test1021.git
* @param username
* @param password
* @return
*/
@SneakyThrows
public static long getLastCommitTimestamp(String projectUrl, String username, String password) {
String[] split = projectUrl.split("/");
String hostUrl = split[0] + "/" + split[1] + "/" + split[2];
String projectName = split[4].split("\\.")[0];
GitLabApi gitLabApi = GitLabApi.oauth2Login(hostUrl, username, password);
Project project = gitLabApi.getProjectApi().getProject(username, projectName);
Long projectId = project.getId();
List master = gitLabApi.getCommitsApi().getCommits(projectId, "master", new Date(1666331629),
new Date(System.currentTimeMillis()));
master.sort((commit1, commit2) -> commit2.getCommittedDate().compareTo(commit1.getCommittedDate())); // 降序
Commit commit = master.get(0);
Date committedDate = commit.getCommittedDate();
return committedDate.getTime();
}
}