Skip to content

Commit 5169379

Browse files
authored
Merge pull request #544 from vise890/comm-auth-times
add support for author and commiter times
2 parents 2b68367 + a27e715 commit 5169379

File tree

9 files changed

+47
-1
lines changed

9 files changed

+47
-1
lines changed

core/src/main/java/pl/project13/core/GitCommitPropertyConstant.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ public class GitCommitPropertyConstant {
4141
public static final String COMMIT_MESSAGE_FULL = "commit.message.full";
4242
public static final String COMMIT_MESSAGE_SHORT = "commit.message.short";
4343
public static final String COMMIT_TIME = "commit.time";
44+
public static final String COMMIT_AUTHOR_TIME = "commit.author.time";
45+
public static final String COMMIT_COMMITTER_TIME = "commit.committer.time";
4446
public static final String REMOTE_ORIGIN_URL = "remote.origin.url";
4547
public static final String TAGS = "tags";
4648
public static final String CLOSEST_TAG_NAME = "closest.tag.name";

core/src/main/java/pl/project13/core/GitDataProvider.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,10 @@ public void loadGitData(@Nonnull String evaluateOnCommit, @Nonnull Properties pr
159159
maybePut(properties, GitCommitPropertyConstant.COMMIT_MESSAGE_SHORT, this::getCommitMessageShort);
160160
// git.commit.time
161161
maybePut(properties, GitCommitPropertyConstant.COMMIT_TIME, this::getCommitTime);
162+
// commit.author.time
163+
maybePut(properties, GitCommitPropertyConstant.COMMIT_AUTHOR_TIME, this::getCommitAuthorTime);
164+
// commit.committer.time
165+
maybePut(properties, GitCommitPropertyConstant.COMMIT_COMMITTER_TIME, this::getCommitAuthorTime);
162166
// git remote.origin.url
163167
maybePut(properties, GitCommitPropertyConstant.REMOTE_ORIGIN_URL, this::getRemoteOriginUrl);
164168

core/src/main/java/pl/project13/core/GitProvider.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,10 @@ public interface GitProvider {
4343

4444
String getCommitAuthorEmail() throws GitCommitIdExecutionException;
4545

46+
String getCommitAuthorTime() throws GitCommitIdExecutionException;
47+
48+
String getCommitCommitterTime() throws GitCommitIdExecutionException;
49+
4650
String getCommitMessageFull() throws GitCommitIdExecutionException;
4751

4852
String getCommitMessageShort() throws GitCommitIdExecutionException;

core/src/main/java/pl/project13/core/JGitProvider.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,20 @@ public String getCommitTime() throws GitCommitIdExecutionException {
215215
return smf.format(commitDate);
216216
}
217217

218+
@Override
219+
public String getCommitAuthorTime() throws GitCommitIdExecutionException {
220+
Date commitAuthorDate = evalCommit.getAuthorIdent().getWhen();
221+
SimpleDateFormat smf = getSimpleDateFormatWithTimeZone();
222+
return smf.format(commitAuthorDate);
223+
}
224+
225+
@Override
226+
public String getCommitCommitterTime() throws GitCommitIdExecutionException {
227+
Date commitCommitterDate = evalCommit.getCommitterIdent().getWhen();
228+
SimpleDateFormat smf = getSimpleDateFormatWithTimeZone();
229+
return smf.format(commitCommitterDate);
230+
}
231+
218232
@Override
219233
public String getRemoteOriginUrl() throws GitCommitIdExecutionException {
220234
String url = git.getConfig().getString("remote", "origin", "url");
@@ -329,7 +343,7 @@ private Repository getGitRepository() throws GitCommitIdExecutionException {
329343

330344
return repository;
331345
}
332-
346+
333347
@Override
334348
public AheadBehind getAheadBehind() throws GitCommitIdExecutionException {
335349
try {

core/src/main/java/pl/project13/core/NativeGitProvider.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,20 @@ public String getCommitTime() throws GitCommitIdExecutionException {
255255
return smf.format(Long.parseLong(value) * 1000L);
256256
}
257257

258+
@Override
259+
public String getCommitAuthorTime() throws GitCommitIdExecutionException {
260+
String value = runQuietGitCommand(canonical, nativeGitTimeoutInMs, "log -1 --pretty=format:%at " + evaluateOnCommit);
261+
SimpleDateFormat smf = getSimpleDateFormatWithTimeZone();
262+
return smf.format(Long.parseLong(value) * 1000L);
263+
}
264+
265+
@Override
266+
public String getCommitCommitterTime() throws GitCommitIdExecutionException {
267+
String value = runQuietGitCommand(canonical, nativeGitTimeoutInMs, "log -1 --pretty=format:%ct " + evaluateOnCommit);
268+
SimpleDateFormat smf = getSimpleDateFormatWithTimeZone();
269+
return smf.format(Long.parseLong(value) * 1000L);
270+
}
271+
258272
@Override
259273
public String getTags() throws GitCommitIdExecutionException {
260274
final String result = runQuietGitCommand(canonical, nativeGitTimeoutInMs, "tag --contains " + evaluateOnCommit);

maven/docs/using-the-plugin.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -894,6 +894,8 @@ Generated properties
894894
|`git.commit.message.full` | Represents the raw body (unwrapped subject and body) of the commit message (`git log -1 --pretty=format:%B`) |
895895
|`git.commit.message.short` | Represents the subject of the commit message - may *not* be suitable for filenames (`git log -1 --pretty=format:%s`) |
896896
|`git.commit.time` | Represents the (formatted) time stamp when the commit has been performed. |
897+
|`git.commit.committer.time` | Represents the (formatted) time stamp when the commit has been performed. |
898+
|`git.commit.author.time` | Represents the (formatted) time stamp when the commit has been originally performed. |
897899
|`git.commit.user.email` | Represents the user eMail of the user who performed the commit. |
898900
|`git.commit.user.name` | Represents the user name of the user who performed the commit. |
899901
|`git.dirty` | A working tree is said to be "dirty" if it contains modifications which have not been committed to the current branch. |

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,8 @@ private void assertGitPropertiesPresentInProject(Properties properties) {
110110
assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.message.full"));
111111
assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.message.short"));
112112
assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.time"));
113+
assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.committer.time"));
114+
assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.author.time"));
113115
assertThat(properties).satisfies(new ContainsKeyCondition("git.remote.origin.url"));
114116
assertThat(properties).satisfies(new ContainsKeyCondition("git.closest.tag.name"));
115117
assertThat(properties).satisfies(new ContainsKeyCondition("git.closest.tag.commit.count"));

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,8 @@ private void assertGitPropertiesPresentInProject(Properties properties) {
9999
assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.message.full"));
100100
assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.message.short"));
101101
assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.time"));
102+
assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.author.time"));
103+
assertThat(properties).satisfies(new ContainsKeyCondition("git.commit.committer.time"));
102104
assertThat(properties).satisfies(new ContainsKeyCondition("git.remote.origin.url"));
103105
}
104106
}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ public class NativeAndJGitProviderTest extends GitIntegrationTest {
4343
"git.commit.message.full",
4444
"git.commit.message.short",
4545
"git.commit.time",
46+
"git.commit.author.time",
47+
"git.commit.committer.time",
4648
"git.total.commit.count",
4749
"git.remote.origin.url",
4850
"git.local.branch.ahead",

0 commit comments

Comments
 (0)