src/com/gitblit/GitBlit.java | ●●●●● patch | view | raw | blame | history | |
src/com/gitblit/GitBlitException.java | ●●●●● patch | view | raw | blame | history | |
src/com/gitblit/utils/JGitUtils.java | ●●●●● patch | view | raw | blame | history | |
src/com/gitblit/wicket/BasePage.html | ●●●●● patch | view | raw | blame | history | |
src/com/gitblit/wicket/pages/EditRepositoryPage.java | ●●●●● patch | view | raw | blame | history | |
src/com/gitblit/wicket/pages/RepositoriesPage.java | ●●●●● patch | view | raw | blame | history | |
src/com/gitblit/wicket/resources/bullet_error.png | patch | view | raw | blame | history | |
src/com/gitblit/wicket/resources/gitblit.css | ●●●●● patch | view | raw | blame | history |
src/com/gitblit/GitBlit.java
@@ -2,6 +2,7 @@ import java.io.File; import java.io.IOException; import java.text.MessageFormat; import java.util.ArrayList; import java.util.List; @@ -30,7 +31,7 @@ private FileResolver<Void> repositoryResolver; private File repositories; private File repositoriesFolder; private boolean exportAll; @@ -93,13 +94,63 @@ userCookie.setPath("/"); response.addCookie(userCookie); } public List<String> getRepositoryList() { return JGitUtils.getRepositoryList(repositoriesFolder, exportAll, storedSettings.getBoolean(Keys.git.nestedRepositories, true)); } public void editRepositoryModel(RepositoryModel repository, boolean isCreate) { public Repository getRepository(String repositoryName) { Repository r = null; try { r = repositoryResolver.open(null, repositoryName); } catch (RepositoryNotFoundException e) { r = null; logger.error("Failed to find repository " + repositoryName); e.printStackTrace(); } catch (ServiceNotEnabledException e) { r = null; e.printStackTrace(); } return r; } public List<RepositoryModel> getRepositoryModels() { List<String> list = getRepositoryList(); List<RepositoryModel> repositories = new ArrayList<RepositoryModel>(); for (String repo : list) { RepositoryModel model = getRepositoryModel(repo); repositories.add(model); } return repositories; } public RepositoryModel getRepositoryModel(String repositoryName) { Repository r = getRepository(repositoryName); RepositoryModel model = new RepositoryModel(); model.name = repositoryName; model.lastChange = JGitUtils.getLastChange(r); StoredConfig config = JGitUtils.readConfig(r); if (config != null) { model.description = config.getString("gitblit", null, "description"); model.owner = config.getString("gitblit", null, "owner"); model.group = config.getString("gitblit", null, "group"); model.useTickets = config.getBoolean("gitblit", "useTickets", false); model.useDocs = config.getBoolean("gitblit", "useDocs", false); model.useRestrictedAccess = config.getBoolean("gitblit", "restrictedAccess", false); } r.close(); return model; } public void editRepositoryModel(RepositoryModel repository, boolean isCreate) throws GitBlitException { Repository r = null; if (isCreate) { // create repository if (new File(repositoriesFolder, repository.name).exists()) { throw new GitBlitException(MessageFormat.format("Can not create repository {0} because it already exists.", repository.name)); } // create repository logger.info("create repository " + repository.name); r = JGitUtils.createRepository(repositories, repository.name, true); r = JGitUtils.createRepository(repositoriesFolder, repository.name, true); } else { // load repository logger.info("edit repository " + repository.name); @@ -127,59 +178,12 @@ r.close(); } public List<String> getRepositoryList() { return JGitUtils.getRepositoryList(repositories, exportAll, storedSettings.getBoolean(Keys.git.nestedRepositories, true)); } public List<RepositoryModel> getRepositories() { List<String> list = getRepositoryList(); List<RepositoryModel> repositories = new ArrayList<RepositoryModel>(); for (String repo : list) { RepositoryModel model = getRepositoryModel(repo); repositories.add(model); } return repositories; } public Repository getRepository(String repositoryName) { Repository r = null; try { r = repositoryResolver.open(null, repositoryName); } catch (RepositoryNotFoundException e) { r = null; logger.error("Failed to find repository " + repositoryName); e.printStackTrace(); } catch (ServiceNotEnabledException e) { r = null; e.printStackTrace(); } return r; } public RepositoryModel getRepositoryModel(String repositoryName) { Repository r = getRepository(repositoryName); RepositoryModel model = new RepositoryModel(); model.name = repositoryName; model.lastChange = JGitUtils.getLastChange(r); StoredConfig config = JGitUtils.readConfig(r); if (config != null) { model.description = config.getString("gitblit", null, "description"); model.owner = config.getString("gitblit", null, "owner"); model.group = config.getString("gitblit", null, "group"); model.useTickets = config.getBoolean("gitblit", "useTickets", false); model.useDocs = config.getBoolean("gitblit", "useDocs", false); model.useRestrictedAccess = config.getBoolean("gitblit", "restrictedAccess", false); } r.close(); return model; } public void setupContext(IStoredSettings settings) { logger.info("Setting up GitBlit context from " + settings.toString()); this.storedSettings = settings; repositories = new File(settings.getString(Keys.git.repositoriesFolder, "repos")); repositoriesFolder = new File(settings.getString(Keys.git.repositoriesFolder, "repos")); exportAll = settings.getBoolean(Keys.git.exportAll, true); repositoryResolver = new FileResolver(repositories, exportAll); repositoryResolver = new FileResolver<Void>(repositoriesFolder, exportAll); } @Override src/com/gitblit/GitBlitException.java
New file @@ -0,0 +1,10 @@ package com.gitblit; public class GitBlitException extends Exception { private static final long serialVersionUID = 1L; public GitBlitException(String message) { super(message); } } src/com/gitblit/utils/JGitUtils.java
@@ -94,9 +94,10 @@ File gitFolder = new File(file, Constants.DOT_GIT); boolean isGitRepository = gitFolder.exists() && gitFolder.isDirectory(); // then look for folder.git/HEAD // then look for folder.git/HEAD or folder/HEAD and folder/config if (!isGitRepository) { if (file.getName().endsWith(Constants.DOT_GIT_EXT) && new File(file, Constants.HEAD).exists()) { if ((file.getName().endsWith(Constants.DOT_GIT_EXT) && new File(file, Constants.HEAD).exists()) || (new File(file, "config").exists() && new File(file, Constants.HEAD).exists())) { gitFolder = file; isGitRepository = true; } @@ -266,13 +267,13 @@ public static String getRawContentAsString(Repository r, RevBlob blob) { byte [] content = getRawContent(r, blob); return new String(content, Charset.forName("UTF-8")); return new String(content, Charset.forName(Constants.CHARACTER_ENCODING)); } public static String getRawContentAsString(Repository r, RevCommit commit, String blobPath) { RevObject obj = getRevObject(r, commit.getTree(), blobPath); byte [] content = getRawContent(r, (RevBlob) obj); return new String(content, Charset.forName("UTF-8")); return new String(content, Charset.forName(Constants.CHARACTER_ENCODING)); } public static List<PathModel> getFilesInPath(Repository r, String basePath, String objectId) { src/com/gitblit/wicket/BasePage.html
@@ -21,8 +21,10 @@ <img src="resources/gitblt_25.png" width="79" height="25" alt="gitblit" class="logo"/> </wicket:link> </a> <a href="/"><span wicket:id="siteName">[site name]</span></a> / <span wicket:id="repositoryName">[repository name]</span> <span wicket:id="pageName">[page name]</span> <div style="float:none;" wicket:id="feedback">[Feedback Panel]</div> <span> <a href="/"><span wicket:id="siteName">[site name]</span></a> / <span wicket:id="repositoryName">[repository name]</span> <span wicket:id="pageName">[page name]</span> </span> <span wicket:id="feedback">[Feedback Panel]</span> </div> <!-- page content --> src/com/gitblit/wicket/pages/EditRepositoryPage.java
@@ -9,6 +9,7 @@ import org.apache.wicket.model.CompoundPropertyModel; import com.gitblit.GitBlit; import com.gitblit.GitBlitException; import com.gitblit.wicket.AdminPage; import com.gitblit.wicket.BasePage; import com.gitblit.wicket.WicketUtils; @@ -48,7 +49,12 @@ @Override protected void onSubmit() { GitBlit.self().editRepositoryModel(repositoryModel, isCreate); try { GitBlit.self().editRepositoryModel(repositoryModel, isCreate); } catch (GitBlitException e) { error(e.getMessage()); return; } setRedirect(true); setResponsePage(RepositoriesPage.class); } src/com/gitblit/wicket/pages/RepositoriesPage.java
@@ -89,7 +89,7 @@ } add(repositoriesMessage); List<RepositoryModel> rows = GitBlit.self().getRepositories(); List<RepositoryModel> rows = GitBlit.self().getRepositoryModels(); DataProvider dp = new DataProvider(rows); DataView<RepositoryModel> dataView = new DataView<RepositoryModel>("repository", dp) { private static final long serialVersionUID = 1L; src/com/gitblit/wicket/resources/bullet_error.png
src/com/gitblit/wicket/resources/gitblit.css
@@ -628,4 +628,23 @@ span .headRef { background-color: #ccffcc; border-color: #ccffcc #00cc33 #00cc33 #ccffcc; } .feedbackPanelERROR { color: red; list-style-image: url(bullet_error.png); font-weight: bold; text-align:left; vertical-align: top; padding:0; margin:0; } .feedbackPanelINFO { color: green; list-style: none; font-weight: bold; text-align:center; padding:0; margin:0; }