summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Moger <james.moger@gitblit.com>2011-04-23 19:16:53 -0400
committerJames Moger <james.moger@gitblit.com>2011-04-23 19:16:53 -0400
commitf5d0ad7e706f1743b01dcc71f42112d533de89c2 (patch)
treeca9e8ea117b63ae92c7dd6c5b6ab62ab10a5d527
parentc3f4f124f1b9e45d7696f3c16f958d1c81ff280a (diff)
downloadgitblit-f5d0ad7e706f1743b01dcc71f42112d533de89c2.tar.gz
gitblit-f5d0ad7e706f1743b01dcc71f42112d533de89c2.zip
Basic Create/Edit Repository. JGit 0.12-stable. Tag icon.
-rw-r--r--.classpath4
-rw-r--r--gitblit.properties5
-rw-r--r--src/com/gitblit/GitBlit.java48
-rw-r--r--src/com/gitblit/utils/JGitUtils.java125
-rw-r--r--src/com/gitblit/wicket/GitBlitWebApp.properties4
-rw-r--r--src/com/gitblit/wicket/RepositoryPage.java20
-rw-r--r--src/com/gitblit/wicket/models/RepositoryModel.java11
-rw-r--r--src/com/gitblit/wicket/pages/BlobDiffPage.java2
-rw-r--r--src/com/gitblit/wicket/pages/EditRepositoryPage.html28
-rw-r--r--src/com/gitblit/wicket/pages/EditRepositoryPage.java64
-rw-r--r--src/com/gitblit/wicket/pages/PatchPage.java9
-rw-r--r--src/com/gitblit/wicket/pages/RawPage.java9
-rw-r--r--src/com/gitblit/wicket/pages/RepositoriesPage.html2
-rw-r--r--src/com/gitblit/wicket/pages/RepositoriesPage.java10
-rw-r--r--src/com/gitblit/wicket/pages/SummaryPage.java6
-rw-r--r--src/com/gitblit/wicket/pages/TreePage.java4
-rw-r--r--src/com/gitblit/wicket/panels/HistoryPanel.html2
-rw-r--r--src/com/gitblit/wicket/panels/HistoryPanel.java4
-rw-r--r--src/com/gitblit/wicket/panels/LogPanel.html2
-rw-r--r--src/com/gitblit/wicket/panels/SearchPanel.html2
-rw-r--r--src/com/gitblit/wicket/panels/SearchPanel.java2
-rw-r--r--src/com/gitblit/wicket/panels/TagsPanel.html3
-rw-r--r--src/com/gitblit/wicket/panels/TagsPanel.java8
-rw-r--r--src/com/gitblit/wicket/resources/gitblit.css14
-rw-r--r--src/com/gitblit/wicket/resources/tag_16x16.pngbin0 -> 604 bytes
25 files changed, 296 insertions, 92 deletions
diff --git a/.classpath b/.classpath
index 70505fff..e1c4e4ae 100644
--- a/.classpath
+++ b/.classpath
@@ -12,9 +12,9 @@
<classpathentry kind="lib" path="ext/wicket-1.4.17.jar"/>
<classpathentry kind="lib" path="ext/wicket-auth-roles-1.4.17.jar"/>
<classpathentry kind="lib" path="ext/wicket-extensions-1.4.17.jar"/>
- <classpathentry kind="lib" path="lib/jgit-0.11.3.jar"/>
- <classpathentry kind="lib" path="lib/jgit-http-0.11.3.jar"/>
<classpathentry kind="lib" path="ext/markdownpapers-core-1.0.0.jar"/>
<classpathentry kind="lib" path="ext/googlecharts-1.4.17.jar"/>
+ <classpathentry kind="lib" path="lib/jgit-0.12-stable.jar"/>
+ <classpathentry kind="lib" path="lib/jgit-http-0.12-stable.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
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<Void> 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<String> getRepositoryList() {
return JGitUtils.getRepositoryList(repositories, exportAll, storedSettings.getBoolean(Keys.git.nestedRepositories, true));
}
- public List<RepositoryModel> getRepositories(Request request) {
+ public List<RepositoryModel> getRepositories() {
List<String> list = getRepositoryList();
- ServletWebRequest servletWebRequest = (ServletWebRequest) request;
- HttpServletRequest req = servletWebRequest.getHttpServletRequest();
-
List<RepositoryModel> repositories = new ArrayList<RepositoryModel>();
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<String> getRepositoryList(File repositoriesFolder, boolean exportAll, boolean readNested) {
List<String> list = new ArrayList<String>();
@@ -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<PathModel> getFilesInPath(Repository r, String basePath, RevCommit commit) {
List<PathModel> list = new ArrayList<PathModel>();
+ 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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.3-strict.dtd"
+ xml:lang="en"
+ lang="en">
+
+<body>
+<wicket:extend>
+ <!-- Push content down to preserve header image -->
+ <div style="padding-top:20px"></div>
+
+ <!-- Repository Table -->
+ <form wicket:id="editForm">
+ <table class="plain">
+ <tbody>
+ <tr><th>Name</th><td><input type="text" wicket:id="name" size="30" /></td></tr>
+ <tr><th>Description</th><td><input type="text" wicket:id="description" size="80" /></td></tr>
+ <tr><th>Owner</th><td><input type="text" wicket:id="owner" size="30" /></td></tr>
+ <tr><th>Use Git:Blit Tickets</th><td><input type="checkbox" wicket:id="useTickets"/>distributed Git:Blit ticketing</td></tr>
+ <tr><th>Use Git:Blit Docs</th><td><input type="checkbox" wicket:id="useDocs"/>distributed Git:Blit documentation</td></tr>
+ <tr><th>Named User Access</th><td><input type="checkbox" wicket:id="useNamedUsers"/>not implemented</td></tr>
+ <tr><td colspan="2"><input type="submit" value="Submit"/></td></tr>
+ </tbody>
+ </table>
+ </form>
+</wicket:extend>
+</body>
+</html> \ 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<RepositoryModel> model = new CompoundPropertyModel<RepositoryModel>(repository);
+ Form<RepositoryModel> form = new Form<RepositoryModel>("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<String>("name").setEnabled(isCreate));
+ form.add(new TextField<String>("description"));
+ form.add(new TextField<String>("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 @@
<th wicket:id="orderByDescription"><wicket:message key="gb.description">Description</wicket:message></th>
<th wicket:id="orderByOwner"><wicket:message key="gb.owner">Owner</wicket:message></th>
<th wicket:id="orderByDate"><wicket:message key="gb.lastChange">Last Change</wicket:message></th>
+ <th></th>
</tr>
<tbody>
<tr wicket:id="repository">
@@ -28,6 +29,7 @@
<td><div class="list" wicket:id="repositoryDescription">[repository description]</div></td>
<td class="author"><span wicket:id="repositoryOwner">[repository owner]</span></td>
<td><span wicket:id="repositoryLastChange">[last change]</span></td>
+ <td><a wicket:id="repositoryLinks"><wicket:message key="gb.edit">[edit]</wicket:message></a></td>
</tr>
</tbody>
</table>
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<Void>("newRepository", RepositoriesPage.class));
+ adminLinks.add(new BookmarkablePageLink<Void>("newRepository", EditRepositoryPage.class));
adminLinks.add(new BookmarkablePageLink<Void>("newUser", RepositoriesPage.class));
add(adminLinks.setVisible(showAdmin));
@@ -101,7 +101,7 @@ public class RepositoriesPage extends BasePage {
}
add(repositoriesMessage);
- List<RepositoryModel> rows = GitBlit.self().getRepositories(getRequest());
+ List<RepositoryModel> rows = GitBlit.self().getRepositories();
DataProvider dp = new DataProvider(rows);
DataView<RepositoryModel> dataView = new DataView<RepositoryModel>("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<Void>("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<Metric> 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<PathModel> paths = JGitUtils.getFilesInPath(r, path, commit);
// tree page links
- add(new BookmarkablePageLink<Void>("historyLink", HistoryPage.class, WicketUtils.newPathParameter(repositoryName, commit.getName(), path)));
+ add(new BookmarkablePageLink<Void>("historyLink", HistoryPage.class, WicketUtils.newPathParameter(repositoryName, objectId, path)));
add(new BookmarkablePageLink<Void>("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 @@
<tbody>
<tr wicket:id="commit">
<td class="date"><span wicket:id="commitDate">[commit date]</span></td>
- <td><img wicket:id="commitIcon" /></td>
+ <td class="icon"><img wicket:id="commitIcon" /></td>
<td class="author"><span wicket:id="commitAuthor">[commit author]</span></td>
<td><div class="references" wicket:id="commitRefs">[commit refs]</div><span wicket:id="commitShortMessage">[commit short message]</span></td>
<td class="rightAlign">
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 @@
<tr wicket:id="commit">
<td class="date"><span wicket:id="commitDate">[commit date]</span></td>
<td class="author"><span wicket:id="commitAuthor">[commit author]</span></td>
- <td><img wicket:id="commitIcon" /></td>
+ <td class="icon"><img wicket:id="commitIcon" /></td>
<td><div class="references" wicket:id="commitRefs">[commit refs]</div><span wicket:id="commitShortMessage">[commit short message]</span></td>
<td class="rightAlign">
<span class="link">
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 @@
<tr wicket:id="commit">
<td class="date"><span wicket:id="commitDate">[commit date]</span></td>
<td class="author"><span wicket:id="commitAuthor">[commit author]</span></td>
- <td><img wicket:id="commitIcon" /></td>
+ <td class="icon"><img wicket:id="commitIcon" /></td>
<td><div class="references" wicket:id="commitRefs">[commit refs]</div><span wicket:id="commitShortMessage">[commit short message]</span></td>
<td class="rightAlign">
<span class="link">
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 @@
<table class="pretty">
<tbody>
<tr wicket:id="tag">
- <td class="date"><span wicket:id="tagDate">[tag date]</span></td>
+ <td class="date"><span wicket:id="tagDate">[tag date]</span></td>
<td><b><span wicket:id="tagName">[tag name]</span></b></td>
+ <td class="icon"><img wicket:id="tagIcon" /></td>
<td><span wicket:id="tagDescription">[tag description]</span></td>
<td class="rightAlign">
<span wicket:id="tagLinks"></span>
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
--- /dev/null
+++ b/src/com/gitblit/wicket/resources/tag_16x16.png
Binary files differ