in ddm-rrm-git-integration/src/main/java/com/epam/digital/data/platform/management/gitintegration/service/JGitServiceImpl.java [235:274]
public FileDatesDto getDates(@NonNull String repositoryName, @NonNull String filePath) {
var normalizedFilePath = FilenameUtils.normalize(filePath);
var cachedDates = datesCacheService.getDates(repositoryName, normalizedFilePath);
if (Objects.nonNull(cachedDates)) {
return cachedDates;
}
log.debug("Retrieving git commit dates in repository {} for path {}", repositoryName,
normalizedFilePath);
var repositoryDirectory = getExistedRepository(repositoryName);
log.trace("Synchronizing repo {}", repositoryName);
var lock = getLock(repositoryName);
lock.lock();
try (var git = openRepo(repositoryDirectory)) {
log.trace("Retrieving commit stack for file {}", normalizedFilePath);
var revCommitList = getRevCommitList(normalizedFilePath, git);
if (revCommitList.isEmpty()) {
log.debug(
"Git commit dates in repository {} for path {} wasn't found", repositoryName,
normalizedFilePath);
return null;
}
log.trace("Retrieving updated date-time as first element in stack and created as last");
var updatedTime = getCommitDateTime(revCommitList.get(0));
var createdTime = getCommitDateTime(revCommitList.get(revCommitList.size() - 1));
log.debug(
"Git commit dates in repository {} for path {} retrieved", repositoryName,
normalizedFilePath);
var dates = FileDatesDto.builder().create(createdTime).update(updatedTime).build();
datesCacheService.setDatesToCache(repositoryName, normalizedFilePath, dates);
return dates;
} finally {
lock.unlock();
log.trace("Repo {} lock released", repositoryName);
}
}