Skip to content

Commit b8e2505

Browse files
committed
Merge pull request #103 from georglundesgaard/master
Fixed bug when using forceLongFormat on gitDescribe
2 parents 30b77d4 + 50504f6 commit b8e2505

File tree

3 files changed

+62
-8
lines changed

3 files changed

+62
-8
lines changed

src/main/java/pl/project13/jgit/DescribeCommand.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ public DescribeCommand always(boolean always) {
180180
public DescribeCommand forceLongFormat(@Nullable Boolean forceLongFormat) {
181181
if (forceLongFormat != null) {
182182
this.forceLongFormat = forceLongFormat;
183-
log("--long = %s", forceLongFormat);
183+
log("--long =", forceLongFormat);
184184
}
185185
return this;
186186
}
@@ -312,9 +312,9 @@ public DescribeResult call() throws GitAPIException {
312312
// check if dirty
313313
boolean dirty = findDirtyState(repo);
314314

315-
if (hasTags(headCommit, tagObjectIdToName)) {
315+
if (hasTags(headCommit, tagObjectIdToName) && !forceLongFormat) {
316316
String tagName = tagObjectIdToName.get(headCommit).iterator().next();
317-
log("The commit we're on is a Tag ([",tagName,"]), returning.");
317+
log("The commit we're on is a Tag ([",tagName,"]) and forceLongFormat == false, returning.");
318318

319319
return new DescribeResult(tagName, dirty, dirtyOption);
320320
}
@@ -351,7 +351,7 @@ private DescribeResult createDescribeResult(ObjectReader objectReader, ObjectId
351351
.withCommitIdAbbrev(abbrev);
352352

353353
} else if (howFarFromWhichTag.first > 0 || forceLongFormat) {
354-
return new DescribeResult(objectReader, howFarFromWhichTag.second, howFarFromWhichTag.first, headCommitId, dirty, dirtyOption)
354+
return new DescribeResult(objectReader, howFarFromWhichTag.second, howFarFromWhichTag.first, headCommitId, dirty, dirtyOption, forceLongFormat)
355355
.withCommitIdAbbrev(abbrev); // we're a bit away from a tag
356356

357357
} else if (howFarFromWhichTag.first == 0) {

src/main/java/pl/project13/jgit/DescribeResult.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ public class DescribeResult {
4949
private boolean dirty;
5050
private String dirtyMarker;
5151

52+
private boolean forceLongFormat;
53+
5254
private ObjectReader objectReader;
5355

5456
public static final DescribeResult EMPTY = new DescribeResult("");
@@ -58,7 +60,7 @@ public DescribeResult(@NotNull String tagName) {
5860
}
5961

6062
public DescribeResult(@NotNull ObjectReader objectReader, String tagName, int commitsAwayFromTag, @Nullable ObjectId commitId) {
61-
this(objectReader, tagName, commitsAwayFromTag, commitId, false, Optional.<String>absent());
63+
this(objectReader, tagName, commitsAwayFromTag, commitId, false, Optional.<String>absent(), false);
6264
}
6365

6466
public DescribeResult(@NotNull ObjectReader objectReader, @NotNull ObjectId commitId) {
@@ -69,13 +71,14 @@ public DescribeResult(@NotNull ObjectReader objectReader, @NotNull ObjectId comm
6971
}
7072

7173
public DescribeResult(@NotNull ObjectReader objectReader, String tagName, int commitsAwayFromTag, ObjectId commitId, boolean dirty, String dirtyMarker) {
72-
this(objectReader, tagName, commitsAwayFromTag, commitId, dirty, Optional.of(dirtyMarker));
74+
this(objectReader, tagName, commitsAwayFromTag, commitId, dirty, Optional.of(dirtyMarker), false);
7375
}
7476

75-
public DescribeResult(@NotNull ObjectReader objectReader, String tagName, int commitsAwayFromTag, ObjectId commitId, boolean dirty, Optional<String> dirtyMarker) {
77+
public DescribeResult(@NotNull ObjectReader objectReader, String tagName, int commitsAwayFromTag, ObjectId commitId, boolean dirty, Optional<String> dirtyMarker, boolean forceLongFormat) {
7678
this(objectReader, commitId, dirty, dirtyMarker);
7779
this.tagName = Optional.of(tagName);
7880
this.commitsAwayFromTag = commitsAwayFromTag;
81+
this.forceLongFormat = forceLongFormat;
7982
}
8083

8184
public DescribeResult(@NotNull ObjectReader objectReader, @NotNull ObjectId commitId, boolean dirty, @NotNull Optional<String> dirtyMarker) {
@@ -145,6 +148,9 @@ private boolean abbrevZeroHidesCommitsPartOfDescribe() {
145148

146149
@Nullable
147150
public String commitsAwayFromTag() {
151+
if (forceLongFormat) {
152+
return String.valueOf(commitsAwayFromTag);
153+
}
148154
return commitsAwayFromTag == 0 ? null : String.valueOf(commitsAwayFromTag);
149155
}
150156

src/test/java/pl/project13/maven/git/GitCommitIdMojoIntegrationTest.java

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
import java.util.Properties;
3535

3636
import static org.fest.assertions.Assertions.assertThat;
37-
import static org.junit.Assert.assertEquals;
37+
import static org.fest.assertions.MapAssert.entry;
3838
import static org.mockito.internal.util.reflection.Whitebox.setInternalState;
3939

4040
public class GitCommitIdMojoIntegrationTest extends GitIntegrationTest {
@@ -250,6 +250,54 @@ public void shouldNotSkipWithoutFailOnNoGitDirectoryWhenNoGitRepoIsPresent() thr
250250
assertGitPropertiesPresentInProject(targetProject.getProperties());
251251
}
252252

253+
@Test
254+
public void shouldGenerateDescribeWithTagOnlyWhenForceLongFormatIsFalse() throws Exception {
255+
// given
256+
mavenSandbox.withParentProject("my-pom-project", "pom")
257+
.withChildProject("my-jar-module", "jar")
258+
.withGitRepoInChild(AvailableGitTestRepo.ON_A_TAG)
259+
.create(CleanUp.CLEANUP_FIRST);
260+
261+
MavenProject targetProject = mavenSandbox.getChildProject();
262+
263+
setProjectToExecuteMojoIn(targetProject);
264+
GitDescribeConfig gitDescribeConfig = new GitDescribeConfig();
265+
gitDescribeConfig.setTags(true);
266+
gitDescribeConfig.setForceLongFormat(false);
267+
gitDescribeConfig.setAbbrev(7);
268+
alterMojoSettings("gitDescribe", gitDescribeConfig);
269+
270+
// when
271+
mojo.execute();
272+
273+
// then
274+
assertThat(targetProject.getProperties()).includes(entry("git.commit.id.describe", "v1.0.0"));
275+
}
276+
277+
@Test
278+
public void shouldGenerateDescribeWithTagAndZeroAndCommitIdWhenForceLongFormatIsTrue() throws Exception {
279+
// given
280+
mavenSandbox.withParentProject("my-pom-project", "pom")
281+
.withChildProject("my-jar-module", "jar")
282+
.withGitRepoInChild(AvailableGitTestRepo.ON_A_TAG)
283+
.create(CleanUp.CLEANUP_FIRST);
284+
285+
MavenProject targetProject = mavenSandbox.getChildProject();
286+
287+
setProjectToExecuteMojoIn(targetProject);
288+
GitDescribeConfig gitDescribeConfig = new GitDescribeConfig();
289+
gitDescribeConfig.setTags(true);
290+
gitDescribeConfig.setForceLongFormat(true);
291+
gitDescribeConfig.setAbbrev(7);
292+
alterMojoSettings("gitDescribe", gitDescribeConfig);
293+
294+
// when
295+
mojo.execute();
296+
297+
// then
298+
assertThat(targetProject.getProperties()).includes(entry("git.commit.id.describe", "v1.0.0-0-gde4db35"));
299+
}
300+
253301
private void alterMojoSettings(String parameterName, Object parameterValue) {
254302
setInternalState(mojo, parameterName, parameterValue);
255303
}

0 commit comments

Comments
 (0)