diff options
author | James Moger <james.moger@gitblit.com> | 2012-02-23 19:49:46 -0500 |
---|---|---|
committer | James Moger <james.moger@gitblit.com> | 2012-02-23 19:49:46 -0500 |
commit | 4fea450fd3edfba6bb9e2c3c0a9231c6d227a09c (patch) | |
tree | 31a028c588124f8ba39f2e8ecdfb446d99cb6e4f | |
parent | 18d398e3ab5227fe10fe3f322798a51ce0cd10ca (diff) | |
download | gitblit-4fea450fd3edfba6bb9e2c3c0a9231c6d227a09c.tar.gz gitblit-4fea450fd3edfba6bb9e2c3c0a9231c6d227a09c.zip |
Fixed nullpointer on pushing to an empty repository (issue 69)
-rw-r--r-- | docs/04_releases.mkd | 1 | ||||
-rw-r--r-- | src/com/gitblit/GitBlit.java | 2 | ||||
-rw-r--r-- | src/com/gitblit/utils/JGitUtils.java | 36 | ||||
-rw-r--r-- | src/com/gitblit/wicket/pages/SummaryPage.java | 2 | ||||
-rw-r--r-- | tests/com/gitblit/tests/JGitUtilsTest.java | 6 |
5 files changed, 22 insertions, 25 deletions
diff --git a/docs/04_releases.mkd b/docs/04_releases.mkd index 2208b573..3f5eb39d 100644 --- a/docs/04_releases.mkd +++ b/docs/04_releases.mkd @@ -30,6 +30,7 @@ Push requests to these repositories will be rejected. #### fixes
+- Fixed (harmless) nullpointer on pushing to an empty repository (issue 69)
- Fixed possible nullpointer from the servlet container on startup (issue 67)
- Fixed UTF-8 encoding bug on diff page (issue 66)
- Fixed timezone bug on the activity page (issue 54)
diff --git a/src/com/gitblit/GitBlit.java b/src/com/gitblit/GitBlit.java index 7fb325c6..a57e6055 100644 --- a/src/com/gitblit/GitBlit.java +++ b/src/com/gitblit/GitBlit.java @@ -780,7 +780,7 @@ public class GitBlit implements ServletContextListener { RepositoryModel model = new RepositoryModel();
model.name = repositoryName;
model.hasCommits = JGitUtils.hasCommits(r);
- model.lastChange = JGitUtils.getLastChange(r, null);
+ model.lastChange = JGitUtils.getLastChange(r);
model.isBare = r.isBare();
StoredConfig config = JGitUtils.readConfig(r);
if (config != null) {
diff --git a/src/com/gitblit/utils/JGitUtils.java b/src/com/gitblit/utils/JGitUtils.java index a9b99a93..5f193d02 100644 --- a/src/com/gitblit/utils/JGitUtils.java +++ b/src/com/gitblit/utils/JGitUtils.java @@ -423,11 +423,9 @@ public class JGitUtils { * last modified date of the repository folder is returned.
*
* @param repository
- * @param branch
- * if unspecified, all branches are checked.
* @return
*/
- public static Date getLastChange(Repository repository, String branch) {
+ public static Date getLastChange(Repository repository) {
if (!hasCommits(repository)) {
// null repository
if (repository == null) {
@@ -436,26 +434,21 @@ public class JGitUtils { // fresh repository
return new Date(repository.getDirectory().lastModified());
}
- if (StringUtils.isEmpty(branch)) {
- List<RefModel> branchModels = getLocalBranches(repository, true, -1);
- if (branchModels.size() > 0) {
- // find most recent branch update
- Date lastChange = new Date(0);
- for (RefModel branchModel : branchModels) {
- if (branchModel.getDate().after(lastChange)) {
- lastChange = branchModel.getDate();
- }
+
+ List<RefModel> branchModels = getLocalBranches(repository, true, -1);
+ if (branchModels.size() > 0) {
+ // find most recent branch update
+ Date lastChange = new Date(0);
+ for (RefModel branchModel : branchModels) {
+ if (branchModel.getDate().after(lastChange)) {
+ lastChange = branchModel.getDate();
}
- return lastChange;
- } else {
- // try to find head
- branch = Constants.HEAD;
}
+ return lastChange;
}
-
- // lookup specified branch
- RevCommit commit = getCommit(repository, branch);
- return getCommitDate(commit);
+
+ // default to the repository folder modification date
+ return new Date(repository.getDirectory().lastModified());
}
/**
@@ -962,6 +955,9 @@ public class JGitUtils { } else {
branchObject = repository.resolve(objectId);
}
+ if (branchObject == null) {
+ return list;
+ }
RevWalk rw = new RevWalk(repository);
rw.markStart(rw.parseCommit(branchObject));
diff --git a/src/com/gitblit/wicket/pages/SummaryPage.java b/src/com/gitblit/wicket/pages/SummaryPage.java index acb41808..12371f77 100644 --- a/src/com/gitblit/wicket/pages/SummaryPage.java +++ b/src/com/gitblit/wicket/pages/SummaryPage.java @@ -84,7 +84,7 @@ public class SummaryPage extends RepositoryPage { add(new Label("repositoryOwner", getRepositoryModel().owner));
add(WicketUtils.createTimestampLabel("repositoryLastChange",
- JGitUtils.getLastChange(r, null), getTimeZone()));
+ JGitUtils.getLastChange(r), getTimeZone()));
if (metricsTotal == null) {
add(new Label("branchStats", ""));
} else {
diff --git a/tests/com/gitblit/tests/JGitUtilsTest.java b/tests/com/gitblit/tests/JGitUtilsTest.java index e649769e..74531fa4 100644 --- a/tests/com/gitblit/tests/JGitUtilsTest.java +++ b/tests/com/gitblit/tests/JGitUtilsTest.java @@ -97,11 +97,11 @@ public class JGitUtilsTest { @Test
public void testLastCommit() throws Exception {
- assertEquals(new Date(0), JGitUtils.getLastChange(null, null));
+ assertEquals(new Date(0), JGitUtils.getLastChange(null));
Repository repository = GitBlitSuite.getHelloworldRepository();
assertTrue(JGitUtils.getCommit(repository, null) != null);
- Date date = JGitUtils.getLastChange(repository, null);
+ Date date = JGitUtils.getLastChange(repository);
repository.close();
assertNotNull("Could not get last repository change date!", date);
}
@@ -119,7 +119,7 @@ public class JGitUtilsTest { assertNull(JGitUtils.getFirstCommit(repository, null));
assertEquals(folder.lastModified(), JGitUtils.getFirstChange(repository, null)
.getTime());
- assertEquals(folder.lastModified(), JGitUtils.getLastChange(repository, null).getTime());
+ assertEquals(folder.lastModified(), JGitUtils.getLastChange(repository).getTime());
assertNull(JGitUtils.getCommit(repository, null));
repository.close();
assertTrue(GitBlit.self().deleteRepository(repositoryName));
|