use of org.eclipse.jgit.revwalk.RevCommit in project fabric8 by jboss-fuse.
the class GitPatchRepositoryImpl method getFileContent.
@Override
public String getFileContent(Git fork, String sha1, String fileName) throws IOException {
ObjectReader objectReader = fork.getRepository().newObjectReader();
RevCommit commit = new RevWalk(fork.getRepository()).parseCommit(fork.getRepository().resolve(sha1));
TreeWalk tw = new TreeWalk(fork.getRepository());
tw.addTree(commit.getTree());
tw.setRecursive(false);
tw.setFilter(PathFilter.create(fileName));
if (tw.next()) {
ObjectId objectId = tw.getObjectId(0);
ObjectLoader loader = fork.getRepository().open(objectId);
ByteArrayOutputStream out = new ByteArrayOutputStream();
loader.copyTo(out);
return new String(out.toByteArray(), "UTF-8");
}
return null;
}
use of org.eclipse.jgit.revwalk.RevCommit in project fabric8 by jboss-fuse.
the class GitPatchRepositoryImpl method findTagsBetween.
@Override
public Map<String, RevTag> findTagsBetween(Git git, RevCommit c1, RevCommit c2) throws GitAPIException, IOException {
Map<ObjectId, List<RevTag>> reverseReferences = new HashMap<>();
RevWalk walk = new RevWalk(git.getRepository());
for (Ref t : git.tagList().call()) {
Ref peeled = git.getRepository().peel(t);
if (peeled != null && peeled.getPeeledObjectId() != null) {
if (!reverseReferences.containsKey(peeled.getPeeledObjectId())) {
reverseReferences.put(peeled.getPeeledObjectId(), new LinkedList<RevTag>());
}
reverseReferences.get(peeled.getPeeledObjectId()).add(walk.parseTag(t.getObjectId()));
}
}
Map<String, RevTag> result = new HashMap<>();
Iterable<RevCommit> commits = git.log().addRange(c1, c2).call();
for (RevCommit commit : commits) {
if (reverseReferences.containsKey(commit.getId())) {
for (RevTag tag : reverseReferences.get(commit.getId())) {
result.put(tag.getTagName(), tag);
}
}
}
return result;
}
use of org.eclipse.jgit.revwalk.RevCommit in project fabric8 by jboss-fuse.
the class GitPatchRepositoryIT method latestTag.
@Test
public void latestTag() throws GitAPIException, IOException {
Git repo = repository.findOrCreateGitRepository(new File(patchesHome, "r3"), false);
RevCommit c1 = repository.prepareCommit(repo, "commit1").call();
RevCommit c2 = repository.prepareCommit(repo, "commit2").call();
RevCommit c3 = repository.prepareCommit(repo, "commit3").call();
repo.tag().setName("baseline-1.2.3").setObjectId(c1).call();
repo.tag().setName("baseline-y-z-1.2.4").setObjectId(c1).call();
// lower version, newer commit/tag
repo.tag().setName("baseline-1.2.1").setObjectId(c3).call();
repo.tag().setName("baseline-x-1.2.2").setObjectId(c3).call();
RevTag tag = repository.findLatestBaseline(repo);
assertThat(tag.getTagName(), equalTo("baseline-y-z-1.2.4"));
assertThat(tag.getObject(), equalTo(c1.getId()));
}
use of org.eclipse.jgit.revwalk.RevCommit in project fabric8 by jboss-fuse.
the class GitPatchRepositoryIT method currentBaseline.
@Test
public void currentBaseline() throws GitAPIException, IOException {
Git repo = repository.findOrCreateGitRepository(new File(patchesHome, "r4"), false);
repo.checkout().setName(GitPatchRepository.HISTORY_BRANCH).call();
RevCommit c1 = repository.prepareCommit(repo, "commit1").call();
repo.tag().setName("baseline-1.2.3").setObjectId(c1).call();
RevCommit c2 = repository.prepareCommit(repo, "commit2").call();
// for the purpose of test
repo.tag().setName("baseline-1.2.1").setObjectId(c2).call();
// 2nd tag for the same commit
repo.tag().setName("baseline-in-fabric-1.2.1").setObjectId(c2).call();
RevCommit c3 = repository.prepareCommit(repo, "commit3").call();
RevTag tag1 = repository.findLatestBaseline(repo);
assertThat(tag1.getTagName(), equalTo("baseline-1.2.3"));
assertThat(tag1.getObject(), equalTo(c1.getId()));
RevTag tag2 = repository.findCurrentBaseline(repo);
assertThat(tag2.getTagName(), equalTo("baseline-in-fabric-1.2.1"));
assertThat(tag2.getObject(), equalTo(c2.getId()));
}
use of org.eclipse.jgit.revwalk.RevCommit in project fabric8 by jboss-fuse.
the class GitPatchManagementServiceForStandaloneChildContainersIT method installNonRollupPatch.
@Test
public void installNonRollupPatch() throws IOException, GitAPIException {
initializationPerformedBaselineDistributionFoundInPatches();
freshKarafStandaloneDistro();
PatchManagement management = (PatchManagement) pm;
GitPatchRepository repository = ((GitPatchManagementServiceImpl) pm).getGitPatchRepository();
Git fork = repository.cloneRepository(repository.findOrCreateMainGitRepository(), true);
// no changes, but commit
((GitPatchManagementServiceImpl) pm).applyUserChanges(fork);
repository.prepareCommit(fork, "artificial change, not treated as user change (could be a patch)").call();
repository.push(fork);
FileUtils.write(new File(karafBase, "bin/shutdown"), "#!/bin/bash\nexit 42");
((GitPatchManagementServiceImpl) pm).applyUserChanges(fork);
repository.closeRepository(fork, true);
preparePatchZip("src/test/resources/content/patch1", "target/karaf/patches/source/patch-1.zip", false);
List<PatchData> patches = management.fetchPatches(new File("target/karaf/patches/source/patch-1.zip").toURI().toURL());
Patch patch = management.trackPatch(patches.get(0));
String tx = management.beginInstallation(PatchKind.NON_ROLLUP);
management.install(tx, patch, null);
@SuppressWarnings("unchecked") Map<String, Git> transactions = (Map<String, Git>) getField(management, "pendingTransactions");
assertThat(transactions.size(), equalTo(1));
fork = transactions.values().iterator().next();
ObjectId since = fork.getRepository().resolve("baseline-child-2.4.0.redhat-620133^{commit}");
ObjectId to = fork.getRepository().resolve(tx);
Iterable<RevCommit> commits = fork.log().addRange(since, to).call();
List<String> commitList = Arrays.asList("[PATCH] Installing patch my-patch-1", "[PATCH] Apply user changes", "artificial change, not treated as user change (could be a patch)", "[PATCH] Apply user changes");
int n = 0;
for (RevCommit c : commits) {
String msg = c.getShortMessage();
assertThat(msg, equalTo(commitList.get(n++)));
}
assertThat(n, equalTo(commitList.size()));
assertThat(fork.tagList().call().size(), equalTo(4));
assertTrue(repository.containsTag(fork, "patch-management"));
assertTrue(repository.containsTag(fork, "baseline-6.2.0"));
assertTrue(repository.containsTag(fork, "baseline-child-2.4.0.redhat-620133"));
assertFalse(repository.containsTag(fork, "patch-my-patch-1"));
assertTrue(repository.containsTag(fork, "patch-my-patch-1-child"));
assertThat("The conflict should be resolved in special way", FileUtils.readFileToString(new File(karafHome, "bin/setenv")), equalTo("JAVA_MIN_MEM=2G # Minimum memory for the JVM\n"));
}
Aggregations