From: James Moger Date: Sat, 23 Apr 2011 23:16:53 +0000 (-0400) Subject: Basic Create/Edit Repository. JGit 0.12-stable. Tag icon. X-Git-Tag: v0.5.0~67 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=f5d0ad7e706f1743b01dcc71f42112d533de89c2;p=gitblit.git Basic Create/Edit Repository. JGit 0.12-stable. Tag icon. --- diff --git a/.classpath b/.classpath index 70505fff..e1c4e4ae 100644 --- a/.classpath +++ b/.classpath @@ -12,9 +12,9 @@ - - + + diff --git a/gitblit.properties b/gitblit.properties index 427a9d52..4b081358 100644 --- a/gitblit.properties +++ b/gitblit.properties @@ -48,7 +48,7 @@ web.allowAdministration = true # This is the message display above the repositories table. # This can point to a file with Markdown content. -# specifying "gitblit" uses the internal welcome message. +# Specifying "gitblit" uses the internal welcome message. web.repositoriesMessage = gitblit # Use the client timezone when formatting dates. @@ -63,6 +63,9 @@ web.datetimestampLongFormat = EEEE, MMMM d, yyyy h:mm a z # Choose the diff presentation style: gitblt, gitweb, or plain web.diffStyle = gitblit +# Control if email addresses are shown in web ui +web.showEmailAddresses = true + # Generates a line graph of repository activity over time on the Summary page. # This is a real-time graph so generation may be expensive. web.generateActivityGraph = true diff --git a/src/com/gitblit/GitBlit.java b/src/com/gitblit/GitBlit.java index f285daf4..c412b18a 100644 --- a/src/com/gitblit/GitBlit.java +++ b/src/com/gitblit/GitBlit.java @@ -8,15 +8,12 @@ import java.util.List; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServletRequest; -import org.apache.wicket.Request; import org.apache.wicket.protocol.http.WebResponse; -import org.apache.wicket.protocol.http.servlet.ServletWebRequest; import org.eclipse.jgit.errors.RepositoryNotFoundException; -import org.eclipse.jgit.http.server.resolver.FileResolver; -import org.eclipse.jgit.http.server.resolver.ServiceNotEnabledException; import org.eclipse.jgit.lib.Repository; +import org.eclipse.jgit.transport.resolver.FileResolver; +import org.eclipse.jgit.transport.resolver.ServiceNotEnabledException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -30,7 +27,7 @@ public class GitBlit implements ServletContextListener { private final Logger logger = LoggerFactory.getLogger(GitBlit.class); - private FileResolver repositoryResolver; + private FileResolver repositoryResolver; private File repositories; @@ -96,18 +93,41 @@ public class GitBlit implements ServletContextListener { response.addCookie(userCookie); } + public void editRepository(RepositoryModel repository, boolean isCreate) { + Repository r = null; + if (isCreate) { + // create repository + logger.info("create repository " + repository.name); + r = JGitUtils.createRepository(repositories, repository.name, true); + } else { + // load repository + logger.info("edit repository " + repository.name); + try { + r = repositoryResolver.open(null, repository.name); + } catch (RepositoryNotFoundException e) { + logger.error("Repository not found", e); + } catch (ServiceNotEnabledException e) { + logger.error("Service not enabled", e); + } + } + + // update settings + JGitUtils.setRepositoryDescription(r, repository.description); + JGitUtils.setRepositoryOwner(r, repository.owner); + JGitUtils.setRepositoryUseTickets(r, repository.useTickets); + JGitUtils.setRepositoryUseDocs(r, repository.useDocs); + JGitUtils.setRepositoryUseNamedUsers(r, repository.useNamedUsers); + } + public List getRepositoryList() { return JGitUtils.getRepositoryList(repositories, exportAll, storedSettings.getBoolean(Keys.git.nestedRepositories, true)); } - public List getRepositories(Request request) { + public List getRepositories() { List list = getRepositoryList(); - ServletWebRequest servletWebRequest = (ServletWebRequest) request; - HttpServletRequest req = servletWebRequest.getHttpServletRequest(); - List repositories = new ArrayList(); for (String repo : list) { - Repository r = getRepository(req, repo); + Repository r = getRepository(repo); String description = JGitUtils.getRepositoryDescription(r); String owner = JGitUtils.getRepositoryOwner(r); Date lastchange = JGitUtils.getLastChange(r); @@ -117,10 +137,10 @@ public class GitBlit implements ServletContextListener { return repositories; } - public Repository getRepository(HttpServletRequest req, String repositoryName) { + public Repository getRepository(String repositoryName) { Repository r = null; try { - r = repositoryResolver.open(req, repositoryName); + r = repositoryResolver.open(null, repositoryName); } catch (RepositoryNotFoundException e) { r = null; logger.error("Failed to find repository " + repositoryName); @@ -147,7 +167,7 @@ public class GitBlit implements ServletContextListener { WebXmlSettings webxmlSettings = new WebXmlSettings(contextEvent.getServletContext()); setupContext(webxmlSettings); } else { - logger.info("GitBlit context already setup by " + storedSettings.toString()); + logger.info("GitBlit context already setup by " + storedSettings.toString()); } } diff --git a/src/com/gitblit/utils/JGitUtils.java b/src/com/gitblit/utils/JGitUtils.java index cd3e6efe..df7be6bf 100644 --- a/src/com/gitblit/utils/JGitUtils.java +++ b/src/com/gitblit/utils/JGitUtils.java @@ -4,7 +4,6 @@ import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; -import java.io.RandomAccessFile; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -17,10 +16,11 @@ import java.util.Map; import java.util.Set; import java.util.concurrent.atomic.AtomicInteger; +import org.eclipse.jgit.api.Git; import org.eclipse.jgit.diff.DiffEntry; +import org.eclipse.jgit.diff.DiffEntry.ChangeType; import org.eclipse.jgit.diff.DiffFormatter; import org.eclipse.jgit.diff.RawTextComparator; -import org.eclipse.jgit.diff.DiffEntry.ChangeType; import org.eclipse.jgit.errors.ConfigInvalidException; import org.eclipse.jgit.errors.IncorrectObjectTypeException; import org.eclipse.jgit.errors.MissingObjectException; @@ -66,6 +66,11 @@ public class JGitUtils { public static final String R_NOTES_COMMITS = R_NOTES + "commits"; private final static Logger LOGGER = LoggerFactory.getLogger(JGitUtils.class); + + public static Repository createRepository(File repositoriesFolder, String name, boolean bare) { + Git git = Git.init().setDirectory(new File(repositoriesFolder, name)).setBare(bare).call(); + return git.getRepository(); + } public static List getRepositoryList(File repositoriesFolder, boolean exportAll, boolean readNested) { List list = new ArrayList(); @@ -80,8 +85,18 @@ public class JGitUtils { for (File file : folder.listFiles()) { if (file.isDirectory() && !file.getName().equalsIgnoreCase(Constants.DOT_GIT)) { // if this is a git repository add it to the list + // + // first look for standard folder/.git structure File gitFolder = new File(file, Constants.DOT_GIT); boolean isGitRepository = gitFolder.exists() && gitFolder.isDirectory(); + + // then look for folder.git/HEAD + if (!isGitRepository) { + if (file.getName().endsWith(Constants.DOT_GIT_EXT) && new File(file, Constants.HEAD).exists()) { + gitFolder = file; + isGitRepository = true; + } + } boolean exportRepository = isGitRepository && (exportAll || new File(gitFolder, "git-daemon-export-ok").exists()); if (exportRepository) { @@ -124,6 +139,10 @@ public class JGitUtils { public static Date getFirstChange(Repository r, String branch) { try { RevCommit commit = getFirstCommit(r, branch); + if (commit == null) { + // fresh repository + return new Date(r.getDirectory().lastModified()); + } return getCommitDate(commit); } catch (Throwable t) { LOGGER.error("Failed to determine first change", t); @@ -131,8 +150,12 @@ public class JGitUtils { return null; } - public static Date getLastChange(Repository r) { + public static Date getLastChange(Repository r) { RevCommit commit = getCommit(r, Constants.HEAD); + if (commit == null) { + // fresh repository + return new Date(r.getDirectory().lastModified()); + } return getCommitDate(commit); } @@ -253,6 +276,9 @@ public class JGitUtils { public static List getFilesInPath(Repository r, String basePath, RevCommit commit) { List list = new ArrayList(); + if (commit == null) { + return list; + } final TreeWalk walk = new TreeWalk(r); try { walk.addTree(commit.getTree()); @@ -708,36 +734,87 @@ public class JGitUtils { } public static String getRepositoryDescription(Repository r) { - File dir = r.getDirectory(); - if (dir.exists()) { - File description = new File(dir, "description"); - if (description.exists() && description.length() > 0) { - RandomAccessFile raf = null; - try { - raf = new RandomAccessFile(description, "r"); - byte[] buffer = new byte[(int) description.length()]; - raf.readFully(buffer); - return new String(buffer); - } catch (Throwable t) { - } finally { - try { - raf.close(); - } catch (Throwable t) { - } - } - } - } - return ""; + return getRepositoryConfigString(r, "description"); + } + + public static void setRepositoryDescription(Repository r, String value) { + setRepositoryConfigString(r, "description", value); } public static String getRepositoryOwner(Repository r) { + return getRepositoryConfigString(r, "owner"); + } + + public static void setRepositoryOwner(Repository r, String owner) { + setRepositoryConfigString(r, "owner", owner); + } + + public static boolean getRepositoryUseTickets(Repository r) { + return getRepositoryConfigBoolean(r, "useTickets", false); + } + + public static void setRepositoryUseTickets(Repository r, boolean value) { + setRepositoryConfigBoolean(r, "useTickets", value); + } + + public static boolean getRepositoryUseDocs(Repository r) { + return getRepositoryConfigBoolean(r, "useDocs", false); + } + + public static void setRepositoryUseDocs(Repository r, boolean value) { + setRepositoryConfigBoolean(r, "useDocs", value); + } + + public static boolean getRepositoryUseNamedUsers(Repository r) { + return getRepositoryConfigBoolean(r, "useNamedUsers", false); + } + + public static void setRepositoryUseNamedUsers(Repository r, boolean value) { + setRepositoryConfigBoolean(r, "useNamedUsers", value); + } + + public static String getRepositoryConfigString(Repository r, String field) { StoredConfig c = readConfig(r); if (c == null) { return ""; } - String o = c.getString("gitweb", null, "owner"); + String o = c.getString("gitblit", null, field); return o == null ? "" : o; } + + public static void setRepositoryConfigString(Repository r, String field, String value) { + StoredConfig c = readConfig(r); + if (c == null) { + throw new RuntimeException("Can't find stored config for " + r); + } + c.setString("gitblit", null, field, value); + try { + c.save(); + } catch (IOException e) { + LOGGER.error("Failed to save repository config field " + field, e); + } + } + + public static boolean getRepositoryConfigBoolean(Repository r, String field, boolean defaultValue) { + StoredConfig c = readConfig(r); + if (c == null) { + return defaultValue; + } + return c.getBoolean("gitblit", null, field, defaultValue); + } + + public static void setRepositoryConfigBoolean(Repository r, String field, boolean value) { + StoredConfig c = readConfig(r); + if (c == null) { + throw new RuntimeException("Can't find stored config for " + r); + } + c.setBoolean("gitblit", null, field, value); + try { + c.save(); + } catch (IOException e) { + LOGGER.error("Failed to save repository config field " + field, e); + } + } private static StoredConfig readConfig(Repository r) { StoredConfig c = r.getConfig(); diff --git a/src/com/gitblit/wicket/GitBlitWebApp.properties b/src/com/gitblit/wicket/GitBlitWebApp.properties index cb8953ae..d1094bff 100644 --- a/src/com/gitblit/wicket/GitBlitWebApp.properties +++ b/src/com/gitblit/wicket/GitBlitWebApp.properties @@ -62,4 +62,6 @@ gb.filesAdded = {0} files added gb.filesModified = {0} files modified gb.filesDeleted = {0} files deleted gb.filesCopied = {0} files copied -gb.filesRenamed = {0} files renamed \ No newline at end of file +gb.filesRenamed = {0} files renamed +gb.missingUsername = Missing Username +gb.edit = edit \ No newline at end of file diff --git a/src/com/gitblit/wicket/RepositoryPage.java b/src/com/gitblit/wicket/RepositoryPage.java index 979debda..6e034799 100644 --- a/src/com/gitblit/wicket/RepositoryPage.java +++ b/src/com/gitblit/wicket/RepositoryPage.java @@ -4,13 +4,10 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import javax.servlet.http.HttpServletRequest; - import org.apache.wicket.Component; import org.apache.wicket.PageParameters; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.panel.Fragment; -import org.apache.wicket.protocol.http.servlet.ServletWebRequest; import org.eclipse.jgit.diff.DiffEntry.ChangeType; import org.eclipse.jgit.lib.PersonIdent; import org.eclipse.jgit.lib.Repository; @@ -21,8 +18,8 @@ import org.slf4j.LoggerFactory; import com.gitblit.GitBlit; import com.gitblit.Keys; import com.gitblit.utils.JGitUtils; -import com.gitblit.utils.StringUtils; import com.gitblit.utils.JGitUtils.SearchType; +import com.gitblit.utils.StringUtils; import com.gitblit.wicket.pages.RepositoriesPage; import com.gitblit.wicket.pages.SearchPage; import com.gitblit.wicket.panels.PageLinksPanel; @@ -59,11 +56,7 @@ public abstract class RepositoryPage extends BasePage { protected Repository getRepository() { if (r == null) { - ServletWebRequest servletWebRequest = (ServletWebRequest) getRequest(); - HttpServletRequest req = servletWebRequest.getHttpServletRequest(); - req.getServerName(); - - Repository r = GitBlit.self().getRepository(req, repositoryName); + Repository r = GitBlit.self().getRepository(repositoryName); if (r == null) { error("Can not load repository " + repositoryName); redirectToInterceptPage(new RepositoriesPage()); @@ -117,10 +110,15 @@ public abstract class RepositoryPage extends BasePage { protected Component createPersonPanel(String wicketId, PersonIdent identity, SearchType searchType) { - if (StringUtils.isEmpty(identity.getName()) || StringUtils.isEmpty(identity.getEmailAddress())) { + boolean showEmail = GitBlit.self().settings().getBoolean(Keys.web.showEmailAddresses, false); + if (!showEmail || StringUtils.isEmpty(identity.getName()) || StringUtils.isEmpty(identity.getEmailAddress())) { String value = identity.getName(); if (StringUtils.isEmpty(value)) { - value = identity.getEmailAddress(); + if (showEmail) { + value = identity.getEmailAddress(); + } else { + value = getString("gb.missingUsername"); + } } Fragment partial = new Fragment(wicketId, "partialPersonIdent", this); LinkPanel link = new LinkPanel("personName", "list", value, SearchPage.class, WicketUtils.newSearchParameter(repositoryName, objectId, value, searchType)); diff --git a/src/com/gitblit/wicket/models/RepositoryModel.java b/src/com/gitblit/wicket/models/RepositoryModel.java index 7ce98e0c..a9410b51 100644 --- a/src/com/gitblit/wicket/models/RepositoryModel.java +++ b/src/com/gitblit/wicket/models/RepositoryModel.java @@ -6,10 +6,13 @@ import java.util.Date; public class RepositoryModel implements Serializable { private static final long serialVersionUID = 1L; - public final String name; - public final String description; - public final String owner; - public final Date lastChange; + public String name; + public String description; + public String owner; + public Date lastChange; + public boolean useTickets; + public boolean useDocs; + public boolean useNamedUsers; public RepositoryModel(String name, String description, String owner, Date lastchange) { this.name = name; diff --git a/src/com/gitblit/wicket/pages/BlobDiffPage.java b/src/com/gitblit/wicket/pages/BlobDiffPage.java index 99f44db6..4bb281c9 100644 --- a/src/com/gitblit/wicket/pages/BlobDiffPage.java +++ b/src/com/gitblit/wicket/pages/BlobDiffPage.java @@ -9,8 +9,8 @@ import org.eclipse.jgit.revwalk.RevCommit; import com.gitblit.GitBlit; import com.gitblit.Keys; import com.gitblit.utils.JGitUtils; -import com.gitblit.utils.StringUtils; import com.gitblit.utils.JGitUtils.DiffOutputType; +import com.gitblit.utils.StringUtils; import com.gitblit.wicket.LinkPanel; import com.gitblit.wicket.RepositoryPage; import com.gitblit.wicket.WicketUtils; diff --git a/src/com/gitblit/wicket/pages/EditRepositoryPage.html b/src/com/gitblit/wicket/pages/EditRepositoryPage.html new file mode 100644 index 00000000..1e04ed05 --- /dev/null +++ b/src/com/gitblit/wicket/pages/EditRepositoryPage.html @@ -0,0 +1,28 @@ + + + + + + +
+ + +
+ + + + + + + + + + +
Name
Description
Owner
Use Git:Blit Ticketsdistributed Git:Blit ticketing
Use Git:Blit Docsdistributed Git:Blit documentation
Named User Accessnot implemented
+
+
+ + \ No newline at end of file diff --git a/src/com/gitblit/wicket/pages/EditRepositoryPage.java b/src/com/gitblit/wicket/pages/EditRepositoryPage.java new file mode 100644 index 00000000..fab3203e --- /dev/null +++ b/src/com/gitblit/wicket/pages/EditRepositoryPage.java @@ -0,0 +1,64 @@ +package com.gitblit.wicket.pages; + +import java.util.Date; + +import org.apache.wicket.PageParameters; +import org.apache.wicket.markup.html.form.CheckBox; +import org.apache.wicket.markup.html.form.Form; +import org.apache.wicket.markup.html.form.TextField; +import org.apache.wicket.model.CompoundPropertyModel; + +import com.gitblit.GitBlit; +import com.gitblit.wicket.AdminPage; +import com.gitblit.wicket.BasePage; +import com.gitblit.wicket.WicketUtils; +import com.gitblit.wicket.models.RepositoryModel; + +@AdminPage +public class EditRepositoryPage extends BasePage { + + private final boolean isCreate; + + public EditRepositoryPage() { + // create constructor + super(); + isCreate = true; + setupPage(new RepositoryModel("", "", "", new Date())); + } + + public EditRepositoryPage(PageParameters params) { + // edit constructor + super(params); + isCreate = false; + String repositoryName = WicketUtils.getRepositoryName(params); + setupPage(new RepositoryModel(repositoryName, "", "", new Date())); + } + + protected void setupPage(final RepositoryModel repository) { + if (isCreate) { + super.setupPage("", getString("gb.newRepository")); + } else { + super.setupPage("", getString("gb.edit")); + } + CompoundPropertyModel model = new CompoundPropertyModel(repository); + Form form = new Form("editForm", model) { + + private static final long serialVersionUID = 1L; + + @Override + protected void onSubmit() { + GitBlit.self().editRepository(repository, isCreate); + setRedirect(true); + setResponsePage(RepositoriesPage.class); + } + }; + form.add(new TextField("name").setEnabled(isCreate)); + form.add(new TextField("description")); + form.add(new TextField("owner")); + form.add(new CheckBox("useTickets")); + form.add(new CheckBox("useDocs")); + form.add(new CheckBox("useNamedUsers")); + + add(form); + } +} diff --git a/src/com/gitblit/wicket/pages/PatchPage.java b/src/com/gitblit/wicket/pages/PatchPage.java index 45c1bf55..b7dd1a3c 100644 --- a/src/com/gitblit/wicket/pages/PatchPage.java +++ b/src/com/gitblit/wicket/pages/PatchPage.java @@ -1,11 +1,8 @@ package com.gitblit.wicket.pages; -import javax.servlet.http.HttpServletRequest; - import org.apache.wicket.PageParameters; import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.protocol.http.servlet.ServletWebRequest; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.revwalk.RevCommit; @@ -28,11 +25,7 @@ public class PatchPage extends WebPage { final String objectId = WicketUtils.getObject(params); final String blobPath = WicketUtils.getPath(params); - ServletWebRequest servletWebRequest = (ServletWebRequest) getRequest(); - HttpServletRequest req = servletWebRequest.getHttpServletRequest(); - req.getServerName(); - - Repository r = GitBlit.self().getRepository(req, repositoryName); + Repository r = GitBlit.self().getRepository(repositoryName); if (r == null) { error("Can not load repository " + repositoryName); redirectToInterceptPage(new RepositoriesPage()); diff --git a/src/com/gitblit/wicket/pages/RawPage.java b/src/com/gitblit/wicket/pages/RawPage.java index 4cbf96ca..7dd25738 100644 --- a/src/com/gitblit/wicket/pages/RawPage.java +++ b/src/com/gitblit/wicket/pages/RawPage.java @@ -3,13 +3,10 @@ package com.gitblit.wicket.pages; import java.util.HashMap; import java.util.Map; -import javax.servlet.http.HttpServletRequest; - import org.apache.wicket.Component; import org.apache.wicket.PageParameters; import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.protocol.http.servlet.ServletWebRequest; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.revwalk.RevCommit; @@ -31,11 +28,7 @@ public class RawPage extends WebPage { final String objectId = WicketUtils.getObject(params); final String blobPath = WicketUtils.getPath(params); - ServletWebRequest servletWebRequest = (ServletWebRequest) getRequest(); - HttpServletRequest req = servletWebRequest.getHttpServletRequest(); - req.getServerName(); - - Repository r = GitBlit.self().getRepository(req, repositoryName); + Repository r = GitBlit.self().getRepository(repositoryName); if (r == null) { error("Can not load repository " + repositoryName); redirectToInterceptPage(new RepositoriesPage()); diff --git a/src/com/gitblit/wicket/pages/RepositoriesPage.html b/src/com/gitblit/wicket/pages/RepositoriesPage.html index 798836e0..24a34464 100644 --- a/src/com/gitblit/wicket/pages/RepositoriesPage.html +++ b/src/com/gitblit/wicket/pages/RepositoriesPage.html @@ -21,6 +21,7 @@ Description Owner Last Change + @@ -28,6 +29,7 @@
[repository description]
[repository owner] [last change] + [edit] diff --git a/src/com/gitblit/wicket/pages/RepositoriesPage.java b/src/com/gitblit/wicket/pages/RepositoriesPage.java index 3ab63667..4aba988f 100644 --- a/src/com/gitblit/wicket/pages/RepositoriesPage.java +++ b/src/com/gitblit/wicket/pages/RepositoriesPage.java @@ -41,16 +41,16 @@ public class RepositoriesPage extends BasePage { super(); setupPage("", ""); - boolean showAdmin = false; + final boolean showAdmin; if (GitBlit.self().settings().getBoolean(Keys.web.authenticateAdminPages, true)) { boolean allowAdmin = GitBlit.self().settings().getBoolean(Keys.web.allowAdministration, false); showAdmin = allowAdmin && GitBlitWebSession.get().canAdmin(); } else { showAdmin = GitBlit.self().settings().getBoolean(Keys.web.allowAdministration, false); } - + Fragment adminLinks = new Fragment("adminPanel", "adminLinks", this); - adminLinks.add(new BookmarkablePageLink("newRepository", RepositoriesPage.class)); + adminLinks.add(new BookmarkablePageLink("newRepository", EditRepositoryPage.class)); adminLinks.add(new BookmarkablePageLink("newUser", RepositoriesPage.class)); add(adminLinks.setVisible(showAdmin)); @@ -101,7 +101,7 @@ public class RepositoriesPage extends BasePage { } add(repositoriesMessage); - List rows = GitBlit.self().getRepositories(getRequest()); + List rows = GitBlit.self().getRepositories(); DataProvider dp = new DataProvider(rows); DataView dataView = new DataView("repository", dp) { private static final long serialVersionUID = 1L; @@ -119,6 +119,8 @@ public class RepositoriesPage extends BasePage { item.add(lastChangeLabel); WicketUtils.setCssClass(lastChangeLabel, TimeUtils.timeAgoCss(entry.lastChange)); + item.add(new BookmarkablePageLink("repositoryLinks", EditRepositoryPage.class, WicketUtils.newRepositoryParameter(entry.name)).setVisible(showAdmin)); + WicketUtils.setAlternatingBackground(item, counter); counter++; } diff --git a/src/com/gitblit/wicket/pages/SummaryPage.java b/src/com/gitblit/wicket/pages/SummaryPage.java index b20dc643..3d4a6ef8 100644 --- a/src/com/gitblit/wicket/pages/SummaryPage.java +++ b/src/com/gitblit/wicket/pages/SummaryPage.java @@ -9,7 +9,6 @@ import org.apache.wicket.PageParameters; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.image.ContextImage; import org.eclipse.jgit.lib.Repository; - import org.wicketstuff.googlecharts.AbstractChartData; import org.wicketstuff.googlecharts.Chart; import org.wicketstuff.googlecharts.ChartAxis; @@ -20,6 +19,7 @@ import org.wicketstuff.googlecharts.IChartData; import org.wicketstuff.googlecharts.LineStyle; import org.wicketstuff.googlecharts.MarkerType; import org.wicketstuff.googlecharts.ShapeMarker; + import com.gitblit.GitBlit; import com.gitblit.Keys; import com.gitblit.utils.JGitUtils; @@ -83,7 +83,7 @@ public class SummaryPage extends RepositoryPage { } private void insertActivityGraph(List metrics) { - if (GitBlit.self().settings().getBoolean(Keys.web.generateActivityGraph, true)) { + if (metrics.size() > 0 && GitBlit.self().settings().getBoolean(Keys.web.generateActivityGraph, true)) { IChartData data = getChartData(metrics); ChartProvider provider = new ChartProvider(new Dimension(400, 100), ChartType.LINE, data); @@ -96,7 +96,7 @@ public class SummaryPage extends RepositoryPage { provider.addAxis(commitAxis); provider.setLineStyles(new LineStyle[] {new LineStyle(2, 4, 0), new LineStyle(0, 4, 1)}); - provider.addShapeMarker(new ShapeMarker(MarkerType.DIAMOND, Color.BLUE, 1, -1, 5)); + provider.addShapeMarker(new ShapeMarker(MarkerType.CIRCLE, Color.BLUE, 1, -1, 5)); add(new Chart("commitsChart", provider)); } else { diff --git a/src/com/gitblit/wicket/pages/TreePage.java b/src/com/gitblit/wicket/pages/TreePage.java index 2177761e..e29ba421 100644 --- a/src/com/gitblit/wicket/pages/TreePage.java +++ b/src/com/gitblit/wicket/pages/TreePage.java @@ -33,10 +33,10 @@ public class TreePage extends RepositoryPage { List paths = JGitUtils.getFilesInPath(r, path, commit); // tree page links - add(new BookmarkablePageLink("historyLink", HistoryPage.class, WicketUtils.newPathParameter(repositoryName, commit.getName(), path))); + add(new BookmarkablePageLink("historyLink", HistoryPage.class, WicketUtils.newPathParameter(repositoryName, objectId, path))); add(new BookmarkablePageLink("headLink", TreePage.class, WicketUtils.newPathParameter(repositoryName, Constants.HEAD, path))); - add(new LinkPanel("shortlog", "title", commit.getShortMessage(), CommitPage.class, newCommitParameter())); + add(new LinkPanel("shortlog", "title", commit == null ? "" : commit.getShortMessage(), CommitPage.class, newCommitParameter())); // breadcrumbs add(new PathBreadcrumbsPanel("breadcrumbs", repositoryName, path, objectId)); diff --git a/src/com/gitblit/wicket/panels/HistoryPanel.html b/src/com/gitblit/wicket/panels/HistoryPanel.html index 1ed1b583..3fa2262e 100644 --- a/src/com/gitblit/wicket/panels/HistoryPanel.html +++ b/src/com/gitblit/wicket/panels/HistoryPanel.html @@ -17,7 +17,7 @@ [commit date] - + [commit author]
[commit refs]
[commit short message] diff --git a/src/com/gitblit/wicket/panels/HistoryPanel.java b/src/com/gitblit/wicket/panels/HistoryPanel.java index da269989..f8592133 100644 --- a/src/com/gitblit/wicket/panels/HistoryPanel.java +++ b/src/com/gitblit/wicket/panels/HistoryPanel.java @@ -78,7 +78,7 @@ public class HistoryPanel extends BasePanel { if (pageResults) { // history page // show commit page link - add(new LinkPanel("header", "title", commit.getShortMessage(), CommitPage.class, WicketUtils.newObjectParameter(repositoryName, commit.getName()))); + add(new LinkPanel("header", "title", commit == null ? "" : commit.getShortMessage(), CommitPage.class, WicketUtils.newObjectParameter(repositoryName, objectId))); } else { // summary page // show history page link @@ -104,7 +104,7 @@ public class HistoryPanel extends BasePanel { LinkPanel authorLink = new LinkPanel("commitAuthor", "list", author, SearchPage.class, WicketUtils.newSearchParameter(repositoryName, objectId, author, SearchType.AUTHOR)); setPersonSearchTooltip(authorLink, author, SearchType.AUTHOR); item.add(authorLink); - + // merge icon if (entry.getParentCount() > 1) { item.add(new ContextImage("commitIcon", "/com/gitblit/wicket/resources/commit_merge_16x16.png")); diff --git a/src/com/gitblit/wicket/panels/LogPanel.html b/src/com/gitblit/wicket/panels/LogPanel.html index 1a6f6f43..1ca92851 100644 --- a/src/com/gitblit/wicket/panels/LogPanel.html +++ b/src/com/gitblit/wicket/panels/LogPanel.html @@ -15,7 +15,7 @@ [commit date] [commit author] - +
[commit refs]
[commit short message] diff --git a/src/com/gitblit/wicket/panels/SearchPanel.html b/src/com/gitblit/wicket/panels/SearchPanel.html index f8994b9d..7c8f96f2 100644 --- a/src/com/gitblit/wicket/panels/SearchPanel.html +++ b/src/com/gitblit/wicket/panels/SearchPanel.html @@ -15,7 +15,7 @@ [commit date] [commit author] - +
[commit refs]
[commit short message] diff --git a/src/com/gitblit/wicket/panels/SearchPanel.java b/src/com/gitblit/wicket/panels/SearchPanel.java index 315d4760..c7e038d3 100644 --- a/src/com/gitblit/wicket/panels/SearchPanel.java +++ b/src/com/gitblit/wicket/panels/SearchPanel.java @@ -16,8 +16,8 @@ import org.eclipse.jgit.revwalk.RevCommit; import com.gitblit.GitBlit; import com.gitblit.Keys; import com.gitblit.utils.JGitUtils; -import com.gitblit.utils.StringUtils; import com.gitblit.utils.JGitUtils.SearchType; +import com.gitblit.utils.StringUtils; import com.gitblit.wicket.LinkPanel; import com.gitblit.wicket.WicketUtils; import com.gitblit.wicket.pages.CommitDiffPage; diff --git a/src/com/gitblit/wicket/panels/TagsPanel.html b/src/com/gitblit/wicket/panels/TagsPanel.html index 09019cf8..9f98504d 100644 --- a/src/com/gitblit/wicket/panels/TagsPanel.html +++ b/src/com/gitblit/wicket/panels/TagsPanel.html @@ -12,8 +12,9 @@ - + +
[tag date][tag date] [tag name] [tag description] diff --git a/src/com/gitblit/wicket/panels/TagsPanel.java b/src/com/gitblit/wicket/panels/TagsPanel.java index 01616689..40871b1f 100644 --- a/src/com/gitblit/wicket/panels/TagsPanel.java +++ b/src/com/gitblit/wicket/panels/TagsPanel.java @@ -3,6 +3,7 @@ package com.gitblit.wicket.panels; import java.util.List; import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.image.ContextImage; import org.apache.wicket.markup.html.link.BookmarkablePageLink; import org.apache.wicket.markup.html.panel.Fragment; import org.apache.wicket.markup.repeater.Item; @@ -51,6 +52,13 @@ public class TagsPanel extends BasePanel { item.add(WicketUtils.createDateLabel("tagDate", entry.getDate(), getTimeZone())); + // tag icon + if (entry.isAnnotatedTag()) { + item.add(new ContextImage("tagIcon", "/com/gitblit/wicket/resources/tag_16x16.png")); + } else { + item.add(new ContextImage("tagIcon", "/com/gitblit/wicket/resources/blank.png")); + } + item.add(new LinkPanel("tagName", "list name", entry.getDisplayName(), CommitPage.class, WicketUtils.newObjectParameter(repositoryName, entry.getCommitId().getName()))); String message; if (maxCount > 0) { diff --git a/src/com/gitblit/wicket/resources/gitblit.css b/src/com/gitblit/wicket/resources/gitblit.css index fa78cec8..451915a9 100644 --- a/src/com/gitblit/wicket/resources/gitblit.css +++ b/src/com/gitblit/wicket/resources/gitblit.css @@ -196,14 +196,14 @@ div.commit_message { div.bug_open, span.bug_open { padding: 2px; - background-color: #800000; + background-color: #803333; color: white; text-align: center; } div.bug_resolved, span.bug_resolved { padding: 2px; - background-color: #008000; + background-color: #408040; color: white; text-align: center; } @@ -426,6 +426,16 @@ table.pretty, table.repositories, table.comments { table.pretty, table.comments, table.repositories { width:100%; } + +table.pretty td.icon { + padding: 0px; + width: 20px; +} + +table.pretty td.icon img { + vertical-align: top; +} + table.pretty td { padding: 2px 4px; } diff --git a/src/com/gitblit/wicket/resources/tag_16x16.png b/src/com/gitblit/wicket/resources/tag_16x16.png new file mode 100644 index 00000000..7e75cba0 Binary files /dev/null and b/src/com/gitblit/wicket/resources/tag_16x16.png differ