James Moger
2012-02-23 4fea450fd3edfba6bb9e2c3c0a9231c6d227a09c
Fixed nullpointer on pushing to an empty repository (issue-69)
5 files modified
29 ■■■■■ changed files
docs/04_releases.mkd 1 ●●●● patch | view | raw | blame | history
src/com/gitblit/GitBlit.java 2 ●●● patch | view | raw | blame | history
src/com/gitblit/utils/JGitUtils.java 18 ●●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/pages/SummaryPage.java 2 ●●● patch | view | raw | blame | history
tests/com/gitblit/tests/JGitUtilsTest.java 6 ●●●● patch | view | raw | blame | history
docs/04_releases.mkd
@@ -30,6 +30,7 @@
#### 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)
src/com/gitblit/GitBlit.java
@@ -780,7 +780,7 @@
        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) {
src/com/gitblit/utils/JGitUtils.java
@@ -423,11 +423,9 @@
     * 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,7 +434,7 @@
            // 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
@@ -447,15 +445,10 @@
                    }
                }
                return lastChange;
            } else {
                // try to find head
                branch = Constants.HEAD;
            }
        }
        // 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 @@
            } else {
                branchObject = repository.resolve(objectId);
            }
            if (branchObject == null) {
                return list;
            }
            RevWalk rw = new RevWalk(repository);
            rw.markStart(rw.parseCommit(branchObject));
src/com/gitblit/wicket/pages/SummaryPage.java
@@ -84,7 +84,7 @@
        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 {
tests/com/gitblit/tests/JGitUtilsTest.java
@@ -97,11 +97,11 @@
    @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 @@
            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));