summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJames Moger <james.moger@gitblit.com>2013-07-03 11:11:48 -0400
committerJames Moger <james.moger@gitblit.com>2013-07-03 11:11:48 -0400
commit5c5b7a8659851abc6ce1654414ceeef2e7f9c803 (patch)
treec5c0650883dc81a1e8faaef2919f764d1316be9d /src
parentd9d4677aa4f4774dddd57a6a9aef28931c8f3f5e (diff)
downloadgitblit-5c5b7a8659851abc6ce1654414ceeef2e7f9c803.tar.gz
gitblit-5c5b7a8659851abc6ce1654414ceeef2e7f9c803.zip
Set author as tooltip of "last change" on repositories page (issue-238)
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/gitblit/GitBlit.java9
-rw-r--r--src/main/java/com/gitblit/models/RepositoryModel.java1
-rw-r--r--src/main/java/com/gitblit/utils/JGitUtils.java39
-rw-r--r--src/main/java/com/gitblit/wicket/pages/OverviewPage.java2
-rw-r--r--src/main/java/com/gitblit/wicket/pages/SummaryPage.java2
-rw-r--r--src/main/java/com/gitblit/wicket/panels/RepositoriesPanel.java3
-rw-r--r--src/test/java/com/gitblit/tests/JGitUtilsTest.java6
7 files changed, 44 insertions, 18 deletions
diff --git a/src/main/java/com/gitblit/GitBlit.java b/src/main/java/com/gitblit/GitBlit.java
index ca21717c..6f2f70cc 100644
--- a/src/main/java/com/gitblit/GitBlit.java
+++ b/src/main/java/com/gitblit/GitBlit.java
@@ -121,6 +121,7 @@ import com.gitblit.utils.DeepCopier;
import com.gitblit.utils.FederationUtils;
import com.gitblit.utils.HttpUtils;
import com.gitblit.utils.JGitUtils;
+import com.gitblit.utils.JGitUtils.LastChange;
import com.gitblit.utils.JsonUtils;
import com.gitblit.utils.MetricUtils;
import com.gitblit.utils.ObjectCache;
@@ -1669,7 +1670,9 @@ public class GitBlit implements ServletContextListener {
model.hasCommits = JGitUtils.hasCommits(r);
}
- model.lastChange = JGitUtils.getLastChange(r);
+ LastChange lc = JGitUtils.getLastChange(r);
+ model.lastChange = lc.when;
+ model.lastChangeAuthor = lc.who;
if (!model.skipSizeCalculation) {
ByteFormat byteFormat = new ByteFormat();
model.size = byteFormat.format(calculateSize(model));
@@ -1973,7 +1976,9 @@ public class GitBlit implements ServletContextListener {
model.name = repositoryName;
}
model.hasCommits = JGitUtils.hasCommits(r);
- model.lastChange = JGitUtils.getLastChange(r);
+ LastChange lc = JGitUtils.getLastChange(r);
+ model.lastChange = lc.when;
+ model.lastChangeAuthor = lc.who;
model.projectPath = StringUtils.getFirstPathElement(repositoryName);
StoredConfig config = r.getConfig();
diff --git a/src/main/java/com/gitblit/models/RepositoryModel.java b/src/main/java/com/gitblit/models/RepositoryModel.java
index 5eb51b4b..29962658 100644
--- a/src/main/java/com/gitblit/models/RepositoryModel.java
+++ b/src/main/java/com/gitblit/models/RepositoryModel.java
@@ -46,6 +46,7 @@ public class RepositoryModel implements Serializable, Comparable<RepositoryModel
public String description;
public List<String> owners;
public Date lastChange;
+ public String lastChangeAuthor;
public boolean hasCommits;
public boolean showRemoteBranches;
public boolean useTickets;
diff --git a/src/main/java/com/gitblit/utils/JGitUtils.java b/src/main/java/com/gitblit/utils/JGitUtils.java
index 9dabebe6..8676d748 100644
--- a/src/main/java/com/gitblit/utils/JGitUtils.java
+++ b/src/main/java/com/gitblit/utils/JGitUtils.java
@@ -439,39 +439,56 @@ public class JGitUtils {
}
return false;
}
+
+ /**
+ * Encapsulates the result of cloning or pulling from a repository.
+ */
+ public static class LastChange {
+ public Date when;
+ public String who;
+
+ LastChange() {
+ when = new Date(0);
+ }
+
+ LastChange(long lastModified) {
+ this.when = new Date(lastModified);
+ }
+ }
/**
- * Returns the date of the most recent commit on a branch. If the repository
- * does not exist Date(0) is returned. If it does exist but is empty, the
- * last modified date of the repository folder is returned.
+ * Returns the date and author of the most recent commit on a branch. If the
+ * repository does not exist Date(0) is returned. If it does exist but is
+ * empty, the last modified date of the repository folder is returned.
*
* @param repository
- * @return
+ * @return a LastChange object
*/
- public static Date getLastChange(Repository repository) {
+ public static LastChange getLastChange(Repository repository) {
if (!hasCommits(repository)) {
// null repository
if (repository == null) {
- return new Date(0);
+ return new LastChange();
}
// fresh repository
- return new Date(repository.getDirectory().lastModified());
+ return new LastChange(repository.getDirectory().lastModified());
}
List<RefModel> branchModels = getLocalBranches(repository, true, -1);
if (branchModels.size() > 0) {
// find most recent branch update
- Date lastChange = new Date(0);
+ LastChange lastChange = new LastChange();
for (RefModel branchModel : branchModels) {
- if (branchModel.getDate().after(lastChange)) {
- lastChange = branchModel.getDate();
+ if (branchModel.getDate().after(lastChange.when)) {
+ lastChange.when = branchModel.getDate();
+ lastChange.who = branchModel.getAuthorIdent().getName();
}
}
return lastChange;
}
// default to the repository folder modification date
- return new Date(repository.getDirectory().lastModified());
+ return new LastChange(repository.getDirectory().lastModified());
}
/**
diff --git a/src/main/java/com/gitblit/wicket/pages/OverviewPage.java b/src/main/java/com/gitblit/wicket/pages/OverviewPage.java
index 88487670..ff6326d4 100644
--- a/src/main/java/com/gitblit/wicket/pages/OverviewPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/OverviewPage.java
@@ -98,7 +98,7 @@ public class OverviewPage extends RepositoryPage {
add(ownersView);
add(WicketUtils.createTimestampLabel("repositoryLastChange",
- JGitUtils.getLastChange(r), getTimeZone(), getTimeUtils()));
+ JGitUtils.getLastChange(r).when, getTimeZone(), getTimeUtils()));
add(new Label("repositorySize", model.size));
if (metricsTotal == null) {
diff --git a/src/main/java/com/gitblit/wicket/pages/SummaryPage.java b/src/main/java/com/gitblit/wicket/pages/SummaryPage.java
index 1afa967a..c231b2ba 100644
--- a/src/main/java/com/gitblit/wicket/pages/SummaryPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/SummaryPage.java
@@ -116,7 +116,7 @@ public class SummaryPage extends RepositoryPage {
add(ownersView);
add(WicketUtils.createTimestampLabel("repositoryLastChange",
- JGitUtils.getLastChange(r), getTimeZone(), getTimeUtils()));
+ JGitUtils.getLastChange(r).when, getTimeZone(), getTimeUtils()));
add(new Label("repositorySize", getRepositoryModel().size));
if (metricsTotal == null) {
add(new Label("branchStats", ""));
diff --git a/src/main/java/com/gitblit/wicket/panels/RepositoriesPanel.java b/src/main/java/com/gitblit/wicket/panels/RepositoriesPanel.java
index e0f93934..1b7d0e0e 100644
--- a/src/main/java/com/gitblit/wicket/panels/RepositoriesPanel.java
+++ b/src/main/java/com/gitblit/wicket/panels/RepositoriesPanel.java
@@ -322,6 +322,9 @@ public class RepositoriesPanel extends BasePanel {
Label lastChangeLabel = new Label("repositoryLastChange", lastChange);
row.add(lastChangeLabel);
WicketUtils.setCssClass(lastChangeLabel, getTimeUtils().timeAgoCss(entry.lastChange));
+ if (!StringUtils.isEmpty(entry.lastChangeAuthor)) {
+ WicketUtils.setHtmlTooltip(lastChangeLabel, getString("gb.author") + ": " + entry.lastChangeAuthor);
+ }
boolean showOwner = user != null && entry.isOwner(user.username);
boolean myPersonalRepository = showOwner && entry.isUsersPersonalRepository(user.username);
diff --git a/src/test/java/com/gitblit/tests/JGitUtilsTest.java b/src/test/java/com/gitblit/tests/JGitUtilsTest.java
index ce72a46f..375dbd5a 100644
--- a/src/test/java/com/gitblit/tests/JGitUtilsTest.java
+++ b/src/test/java/com/gitblit/tests/JGitUtilsTest.java
@@ -118,11 +118,11 @@ public class JGitUtilsTest {
@Test
public void testLastCommit() throws Exception {
- assertEquals(new Date(0), JGitUtils.getLastChange(null));
+ assertEquals(new Date(0), JGitUtils.getLastChange(null).when);
Repository repository = GitBlitSuite.getHelloworldRepository();
assertTrue(JGitUtils.getCommit(repository, null) != null);
- Date date = JGitUtils.getLastChange(repository);
+ Date date = JGitUtils.getLastChange(repository).when;
repository.close();
assertNotNull("Could not get last repository change date!", date);
}
@@ -140,7 +140,7 @@ public class JGitUtilsTest {
assertNull(JGitUtils.getFirstCommit(repository, null));
assertEquals(folder.lastModified(), JGitUtils.getFirstChange(repository, null)
.getTime());
- assertEquals(folder.lastModified(), JGitUtils.getLastChange(repository).getTime());
+ assertEquals(folder.lastModified(), JGitUtils.getLastChange(repository).when.getTime());
assertNull(JGitUtils.getCommit(repository, null));
repository.close();
RepositoryCache.close(repository);