Skip to content

Commit 5b6e886

Browse files
olivier-hubautohubautmanikmagar
authored
fix: ensure that jGit finds the .git directory (#25)
* Always pass a basePath when performing a Git operation. * chore(release): [patch] * chore: attempt to trigger GH actions * fix: tests and formatting closes #24 --------- Co-authored-by: Olivier Hubaut <olivier@hubaut.info> Co-authored-by: Manik Magar <manik.magar@gmail.com>
1 parent d4132d6 commit 5b6e886

File tree

12 files changed

+65
-55
lines changed

12 files changed

+65
-55
lines changed

git-versioner-maven-core/src/main/java/com/github/manikmagar/maven/versioner/core/git/GitTag.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,22 @@
22

33
import org.eclipse.jgit.lib.Ref;
44

5+
import java.io.File;
6+
57
public class GitTag {
68

79
private GitTag() {
810

911
}
1012

11-
public static String create(final String tagName, final String tagMessage) {
12-
return JGit.executeOperation(git -> {
13+
public static String create(File basePath, final String tagName, final String tagMessage) {
14+
return JGit.executeOperation(basePath, git -> {
1315
Ref tag = git.tag().setName(tagName).setMessage(tagMessage).call();
1416
return String.format("%s@%s", tag.getName(), tag.getObjectId().getName());
1517
});
1618
}
1719

18-
public static boolean exists(final String tagName) {
19-
return JGit.executeOperation(git -> null != git.getRepository().findRef("refs/tags/" + tagName));
20+
public static boolean exists(File basePath, final String tagName) {
21+
return JGit.executeOperation(basePath, git -> null != git.getRepository().findRef("refs/tags/" + tagName));
2022
}
2123
}

git-versioner-maven-core/src/main/java/com/github/manikmagar/maven/versioner/core/git/JGit.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ public class JGit {
1212
private JGit() {
1313
}
1414

15-
public static <R> R executeOperation(Operation<Git, R> work) throws GitVersionerException {
16-
try (Repository repository = new FileRepositoryBuilder().readEnvironment().findGitDir().build()) {
15+
public static <R> R executeOperation(File basePath, Operation<Git, R> work) throws GitVersionerException {
16+
try (Repository repository = new FileRepositoryBuilder().readEnvironment().findGitDir(basePath).build()) {
1717
try (Git git = new Git(repository)) {
1818
return work.apply(git);
1919
}
@@ -24,8 +24,6 @@ public static <R> R executeOperation(Operation<Git, R> work) throws GitVersioner
2424

2525
/**
2626
* Find local git dir by scanning upwards to find .git dir
27-
*
28-
* @return
2927
*/
3028
public static String findGitDir(String basePath) {
3129
try (Repository repository = new FileRepositoryBuilder().readEnvironment().findGitDir(new File(basePath))

git-versioner-maven-core/src/main/java/com/github/manikmagar/maven/versioner/core/git/JGitVersioner.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,24 @@
66
import org.eclipse.jgit.lib.Ref;
77
import org.eclipse.jgit.revwalk.RevCommit;
88

9+
import java.io.File;
910
import java.util.Collections;
1011
import java.util.List;
1112
import java.util.stream.Collectors;
1213
import java.util.stream.StreamSupport;
1314

1415
public class JGitVersioner implements Versioner {
1516

17+
File basePath;
1618
VersionConfig versionConfig;
1719

18-
public JGitVersioner(VersionConfig versionConfig) {
20+
public JGitVersioner(File basePath, VersionConfig versionConfig) {
1921
this.versionConfig = versionConfig;
22+
this.basePath = basePath;
2023
}
2124

2225
public VersionStrategy version() {
23-
return JGit.executeOperation(git -> {
26+
return JGit.executeOperation(basePath, git -> {
2427
var branch = git.getRepository().getBranch();
2528
Ref head = git.getRepository().findRef("HEAD");
2629
var hash = "";
@@ -39,7 +42,7 @@ public VersionStrategy version() {
3942
versionStrategy.increment(VersionComponentType.MAJOR, hash);
4043
} else if (hasValue(commit.getFullMessage(), versionConfig.getKeywords().getMinorKey())) {
4144
versionStrategy.increment(VersionComponentType.MINOR, hash);
42-
} else if (hasValue(commit.getFullMessage(),versionConfig.getKeywords().getPatchKey())) {
45+
} else if (hasValue(commit.getFullMessage(), versionConfig.getKeywords().getPatchKey())) {
4346
versionStrategy.increment(VersionComponentType.PATCH, hash);
4447
} else {
4548
versionStrategy.increment(VersionComponentType.COMMIT, hash);
@@ -50,9 +53,9 @@ public VersionStrategy version() {
5053
}
5154

5255
boolean hasValue(String commitMessage, String keyword) {
53-
if(versionConfig.getKeywords().isUseRegex()){
56+
if (versionConfig.getKeywords().isUseRegex()) {
5457
return commitMessage.matches(keyword);
55-
}else {
58+
} else {
5659
return commitMessage.contains(keyword);
5760
}
5861
}

git-versioner-maven-core/src/test/java/com/github/manikmagar/maven/versioner/core/git/JGitVersionerTest.java

Lines changed: 24 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -3,36 +3,35 @@
33
import com.github.manikmagar.maven.versioner.core.params.VersionConfig;
44
import junitparams.JUnitParamsRunner;
55
import junitparams.Parameters;
6+
import org.assertj.core.util.Files;
67
import org.junit.Test;
78
import org.junit.runner.RunWith;
89

910
import static org.assertj.core.api.Assertions.assertThat;
1011

1112
@RunWith(JUnitParamsRunner.class)
1213
public class JGitVersionerTest {
13-
private VersionConfig versionConfig = new VersionConfig();;
14-
private JGitVersioner jGitVersioner = new JGitVersioner(versionConfig);
15-
16-
@Test
17-
@Parameters(value = {
18-
"Fix: [minor] corrected typo, .*\\[minor\\].*, true",
19-
"[minor] Fix: corrected typo, ^\\[minor\\].*, true",
20-
"Fix: [minor] corrected typo, ^\\[minor\\].*, false",
21-
"Update: improved performance, [minor], false"})
22-
public void testHasValueWithRegex(String commitMessage, String keyword, boolean expected) {
23-
versionConfig.getKeywords().setUseRegex(true);
24-
25-
assertThat(jGitVersioner.hasValue(commitMessage, keyword)).isEqualTo(expected);
26-
}
27-
28-
@Test
29-
public void testHasValueWithoutRegex() {
30-
versionConfig.getKeywords().setUseRegex(false);
31-
32-
String commitMessage = "Fix: [minor] corrected typo";
33-
assertThat(jGitVersioner.hasValue(commitMessage, "[minor]")).isTrue();
34-
35-
commitMessage = "Update: improved performance";
36-
assertThat(jGitVersioner.hasValue(commitMessage, "[minor]")).isFalse();
37-
}
14+
private VersionConfig versionConfig = new VersionConfig();
15+
private JGitVersioner jGitVersioner = new JGitVersioner(Files.currentFolder(), versionConfig);
16+
17+
@Test
18+
@Parameters(value = {"Fix: [minor] corrected typo, .*\\[minor\\].*, true",
19+
"[minor] Fix: corrected typo, ^\\[minor\\].*, true", "Fix: [minor] corrected typo, ^\\[minor\\].*, false",
20+
"Update: improved performance, [minor], false"})
21+
public void testHasValueWithRegex(String commitMessage, String keyword, boolean expected) {
22+
versionConfig.getKeywords().setUseRegex(true);
23+
24+
assertThat(jGitVersioner.hasValue(commitMessage, keyword)).isEqualTo(expected);
25+
}
26+
27+
@Test
28+
public void testHasValueWithoutRegex() {
29+
versionConfig.getKeywords().setUseRegex(false);
30+
31+
String commitMessage = "Fix: [minor] corrected typo";
32+
assertThat(jGitVersioner.hasValue(commitMessage, "[minor]")).isTrue();
33+
34+
commitMessage = "Update: improved performance";
35+
assertThat(jGitVersioner.hasValue(commitMessage, "[minor]")).isFalse();
36+
}
3837
}

git-versioner-maven-core/src/test/java/com/github/manikmagar/maven/versioner/plugin/mojo/params/VersionConfigTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ public void setKeywords() {
3636
VersionKeywords versionKeywords = new VersionKeywords();
3737
versionKeywords.setMajorKey("[TEST]");
3838
versionConfig.setKeywords(versionKeywords);
39-
assertThat(versionConfig.getKeywords()).extracting("majorKey", "minorKey", "patchKey", "useRegex").containsExactly("[TEST]",
40-
KEY_MINOR, KEY_PATCH, false);
39+
assertThat(versionConfig.getKeywords()).extracting("majorKey", "minorKey", "patchKey", "useRegex")
40+
.containsExactly("[TEST]", KEY_MINOR, KEY_PATCH, false);
4141
}
4242

4343
@Test
@@ -46,7 +46,7 @@ public void setUseRegEx() {
4646
VersionKeywords versionKeywords = new VersionKeywords();
4747
versionKeywords.setUseRegex(true);
4848
versionConfig.setKeywords(versionKeywords);
49-
assertThat(versionConfig.getKeywords()).extracting("majorKey", "minorKey", "patchKey", "useRegex").containsExactly(KEY_MAJOR,
50-
KEY_MINOR, KEY_PATCH, true);
49+
assertThat(versionConfig.getKeywords()).extracting("majorKey", "minorKey", "patchKey", "useRegex")
50+
.containsExactly(KEY_MAJOR, KEY_MINOR, KEY_PATCH, true);
5151
}
5252
}

git-versioner-maven-core/src/test/java/com/github/manikmagar/maven/versioner/plugin/mojo/params/VersionKeywordsTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ public class VersionKeywordsTest {
1515

1616
@Test
1717
public void defaultKeywords() {
18-
assertThat(new VersionKeywords()).extracting("majorKey", "minorKey", "patchKey","useRegex").containsExactly(KEY_MAJOR,
19-
KEY_MINOR, KEY_PATCH, false);
18+
assertThat(new VersionKeywords()).extracting("majorKey", "minorKey", "patchKey", "useRegex")
19+
.containsExactly(KEY_MAJOR, KEY_MINOR, KEY_PATCH, false);
2020
}
2121

2222
@Test

git-versioner-maven-extension/pom.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@
3232
<groupId>org.apache.maven.shared</groupId>
3333
<artifactId>maven-verifier</artifactId>
3434
</dependency>
35+
<dependency>
36+
<groupId>org.apache.maven.plugin-tools</groupId>
37+
<artifactId>maven-plugin-annotations</artifactId>
38+
</dependency>
3539
</dependencies>
3640

3741
</project>

git-versioner-maven-extension/src/main/java/com/github/manikmagar/maven/versioner/extension/GitVersionerModelProcessor.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ private Model processModel(Model projectModel, Map<String, ?> options) {
8787
LOGGER.info(MessageUtils.buffer().a("--- ").mojo(extensionGAV).a(" ").strong("[core-extension]").a(" ---")
8888
.toString());
8989
versionConfig = loadConfig();
90-
versionStrategy = new JGitVersioner(versionConfig).version();
90+
versionStrategy = new JGitVersioner(projectModel.getPomFile().getAbsoluteFile(), versionConfig).version();
9191
findRelatedProjects(projectModel);
9292
initialized = true;
9393
}
@@ -187,8 +187,7 @@ private void addPluginConfiguration(Plugin plugin) {
187187
String config = String.format(
188188
"<configuration> <versionConfig> <keywords> <majorKey>%s</majorKey>"
189189
+ " <minorKey>%s</minorKey> <patchKey>%s</patchKey>"
190-
+ " <useRegex>%s</useRegex>"
191-
+ " </keywords> </versionConfig></configuration>",
190+
+ " <useRegex>%s</useRegex>" + " </keywords> </versionConfig></configuration>",
192191
versionConfig.getKeywords().getMajorKey(), versionConfig.getKeywords().getMinorKey(),
193192
versionConfig.getKeywords().getPatchKey(), versionConfig.getKeywords().isUseRegex());
194193
try {
@@ -212,7 +211,7 @@ private VersionConfig loadConfig() {
212211
keywords.setMajorKey(properties.getProperty(VersionKeywords.GV_KEYWORDS_MAJOR_KEY));
213212
keywords.setMinorKey(properties.getProperty(VersionKeywords.GV_KEYWORDS_MINOR_KEY));
214213
keywords.setPatchKey(properties.getProperty(VersionKeywords.GV_KEYWORDS_PATCH_KEY));
215-
keywords.setUseRegex(properties.getProperty(VersionKeywords.GV_KEYWORDS_KEY_USEREGEX,"false").equals("true"));
214+
keywords.setUseRegex(properties.getProperty(VersionKeywords.GV_KEYWORDS_KEY_USEREGEX, "false").equals("true"));
216215
coreVersionConfig.setKeywords(keywords);
217216

218217
VersionPattern versionPattern = new VersionPattern();

git-versioner-maven-plugin/src/main/java/com/github/manikmagar/maven/versioner/plugin/mojo/AbstractVersionerMojo.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public void setMavenProject(MavenProject mavenProject) {
4040
}
4141

4242
protected Versioner getVersioner() {
43-
return new JGitVersioner(getVersionConfig().toVersionConfig());
43+
return new JGitVersioner(mavenProject.getBasedir().getAbsoluteFile(), getVersionConfig().toVersionConfig());
4444
}
4545

4646
protected String replaceTokens(String pattern, VersionStrategy versionStrategy) {

git-versioner-maven-plugin/src/main/java/com/github/manikmagar/maven/versioner/plugin/mojo/Tag.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,12 @@ public void execute() throws MojoExecutionException, MojoFailureException {
5858
var tagMessage = replaceTokens(getTagMessagePattern(), versionStrategy);
5959
getLog().info("Current Version: " + versionStrategy.toVersionString());
6060
getLog().info(String.format("Tag Version '%s' with message '%s'", tagName, tagMessage));
61-
if (GitTag.exists(tagName)) {
61+
if (GitTag.exists(mavenProject.getBasedir().getAbsoluteFile(), tagName)) {
6262
getLog().error(String.format("Tag already exist: %s", tagName));
6363
if (isFailWhenTagExist())
6464
throw new GitVersionerException("Tag already exist: " + tagName);
6565
} else {
66-
String tagId = GitTag.create(tagName, tagMessage);
66+
String tagId = GitTag.create(mavenProject.getBasedir().getAbsoluteFile(), tagName, tagMessage);
6767
getLog().info(String.format("Created tag: '%s'", tagId));
6868
}
6969
}

0 commit comments

Comments
 (0)