Skip to content

Commit 7662cba

Browse files
committed
getCommitsRange() and getBranches() fixed
1 parent 932b1d1 commit 7662cba

File tree

2 files changed

+26
-31
lines changed

2 files changed

+26
-31
lines changed

src/main/java/org/scm4j/vcs/GitVCS.java

Lines changed: 26 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,6 @@ protected Git getLocalGit(String folder) throws Exception {
6969
.setDirectory(new File(folder))
7070
.setURI(repo.getRepoUrl())
7171
.setCredentialsProvider(credentials)
72-
.setNoCheckout(false)
73-
.setCloneAllBranches(true)
7472
.call()
7573
.close();
7674
}
@@ -374,6 +372,7 @@ void checkout(Git git, Repository gitRepo, String branchName, String revision) t
374372
.setCredentialsProvider(credentials)
375373
.call();
376374
if (revision == null) {
375+
377376
cmd
378377
.setStartPoint("origin/" + bn)
379378
.setCreateBranch(gitRepo.exactRef("refs/heads/" + bn) == null)
@@ -450,18 +449,19 @@ public Set<String> getBranches(String path) {
450449
try (IVCSLockedWorkingCopy wc = repo.getVCSLockedWorkingCopy();
451450
Git git = getLocalGit(wc);
452451
Repository gitRepo = git.getRepository()) {
453-
// checkout conflict with files in releaser
454-
// git
455-
// .fetch()
456-
// .setRefSpecs(new RefSpec("+refs/heads/*:refs/heads/*"))
457-
// .setRemoveDeletedRefs(true)
458-
// .setCredentialsProvider(credentials)
459-
// .call();
460452

461453
git
462454
.pull()
463455
.setCredentialsProvider(credentials)
464456
.call();
457+
git
458+
.fetch()
459+
.setRefSpecs(new RefSpec("+refs/heads/*:refs/heads/*"))
460+
.setRemoveDeletedRefs(true)
461+
.setCredentialsProvider(credentials)
462+
.call();
463+
464+
465465

466466
Collection<Ref> refs = gitRepo.getRefDatabase().getRefs(REFS_REMOTES_ORIGIN).values();
467467
Set<String> res = new HashSet<>();
@@ -614,23 +614,21 @@ public List<VCSCommit> getCommitsRange(String branchName, String startFromCommit
614614
RevWalk rw = new RevWalk(gitRepo)) {
615615

616616
checkout(git, gitRepo, branchName, null);
617-
618617
String bn = getRealBranchName(branchName);
619618

620619
List<VCSCommit> res = new ArrayList<>();
621620
RevCommit startCommit;
622621
RevCommit endCommit;
623622
if (direction == WalkDirection.ASC) {
624-
Ref ref = gitRepo.exactRef("refs/heads/" + bn);
625-
ObjectId headCommitId = ref.getObjectId();
623+
ObjectId headCommitId = gitRepo.exactRef("refs/remotes/origin/" + bn).getObjectId();
626624
startCommit = rw.parseCommit( headCommitId );
627625
ObjectId sinceCommit = startFromCommitId == null ?
628626
getInitialCommit(gitRepo, bn).getId() :
629627
ObjectId.fromString(startFromCommitId);
630628
endCommit = rw.parseCommit(sinceCommit);
631629
} else {
632630
ObjectId sinceCommit = startFromCommitId == null ?
633-
gitRepo.exactRef("refs/heads/" + bn).getObjectId() :
631+
gitRepo.exactRef("refs/remotes/origin/" + bn).getObjectId() :
634632
ObjectId.fromString(startFromCommitId);
635633
startCommit = rw.parseCommit( sinceCommit );
636634
endCommit = getInitialCommit(gitRepo, bn);
@@ -839,23 +837,24 @@ public List<VCSTag> getTagsOnRevision(String revision) {
839837
updateLocalTags(git);
840838

841839
List<VCSTag> res = new ArrayList<>();
842-
843-
Collection<Ref> refs = gitRepo.getAllRefsByPeeledObjectId().get(gitRepo.resolve(revision));
840+
841+
// getAllRefsByPeeledObject does not work. Does not return newelly created tag
842+
Collection<Ref> tagRefs = gitRepo.getTags().values();
843+
844844
RevCommit revCommit;
845-
for (Ref ref : refs == null ? new ArrayList<Ref>() : refs) {
846-
if (!ref.getName().contains("refs/tags/")) {
847-
continue;
848-
}
845+
for (Ref ref : tagRefs) {
849846
ObjectId relatedCommitObjectId = ref.getPeeledObjectId() == null ? ref.getObjectId() : ref.getPeeledObjectId();
850847
revCommit = rw.parseCommit(relatedCommitObjectId);
851-
VCSCommit relatedCommit = getVCSCommit(revCommit);
852-
RevObject revObject = rw.parseAny(ref.getObjectId());
853-
if (revObject instanceof RevTag) {
854-
RevTag revTag = (RevTag) revObject;
855-
res.add(new VCSTag(revTag.getTagName(), revTag.getFullMessage(), revTag.getTaggerIdent().getName(), relatedCommit));
856-
} else {
857-
res.add(new VCSTag(ref.getName().replace("refs/tags/", ""), null, null, relatedCommit));
858-
}
848+
if (revCommit.getName().equals(revision)) {
849+
VCSCommit relatedCommit = getVCSCommit(revCommit);
850+
RevObject revObject = rw.parseAny(ref.getObjectId());
851+
if (revObject instanceof RevTag) {
852+
RevTag revTag = (RevTag) revObject;
853+
res.add(new VCSTag(revTag.getTagName(), revTag.getFullMessage(), revTag.getTaggerIdent().getName(), relatedCommit));
854+
} else {
855+
res.add(new VCSTag(ref.getName().replace("refs/tags/", ""), null, null, relatedCommit));
856+
}
857+
}
859858
}
860859

861860
return res;

src/test/java/org/scm4j/vcs/GitVCSTest.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -295,9 +295,5 @@ public void testGetTagsOnRevisionUnannotated() throws Exception {
295295
assertTrue(vcs.getTagsOnRevision(c3.getRevision()).containsAll(Arrays.asList(
296296
tag3)));
297297
}
298-
299-
@Override
300-
public void testBranches() throws Exception {
301-
}
302298
}
303299

0 commit comments

Comments
 (0)