Sfoglia il codice sorgente

Build infrastructure improvements. Setting to show remote branches.

The JGit team is now publishing 0.12.1 artifacts on the Eclipse Maven
site. Yeah! That was the last missing piece for a slick Git:Blit
deployment. The build has been reworked to download from Eclipse and
to also download source and javadoc jars for setting up a development
environment.

Made the log4j pattern configurable by operating system.
Moved Markdown utils to their own class since I need StringUtils for
Build and that introduced a chicken-and-egg scenario.
tags/v0.5.0
James Moger 13 anni fa
parent
commit
cf9550d8df

+ 67
- 14
.classpath Vedi File

<classpath> <classpath>
<classpathentry kind="src" path="src"/> <classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="lib" path="ext/log4j-1.2.16.jar"/>
<classpathentry kind="lib" path="ext/servlet-api-2.5.jar"/>
<classpathentry kind="lib" path="ext/slf4j-api-1.6.1.jar"/>
<classpathentry kind="lib" path="ext/slf4j-log4j12-1.6.1.jar"/>
<classpathentry kind="lib" path="ext/jetty-all-7.2.2.v20101205.jar"/>
<classpathentry kind="lib" path="ext/jcommander-1.17.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/3"/>
<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="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="lib" path="ext/log4j-1.2.16.jar" sourcepath="ext/log4j-1.2.16-sources.jar">
<attributes>
<attribute name="javadoc_location" value="jar:platform:/resource/gitblit/ext/log4j-1.2.16-javadoc.jar!/"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="ext/servlet-api-2.5.jar" sourcepath="ext/servlet-api-2.5-sources.jar"/>
<classpathentry kind="lib" path="ext/slf4j-api-1.6.1.jar" sourcepath="ext/slf4j-api-1.6.1-sources.jar">
<attributes>
<attribute name="javadoc_location" value="jar:platform:/resource/gitblit/ext/slf4j-api-1.6.1-javadoc.jar!/"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="ext/slf4j-log4j12-1.6.1.jar" sourcepath="ext/slf4j-log4j12-1.6.1-sources.jar">
<attributes>
<attribute name="javadoc_location" value="jar:platform:/resource/gitblit/ext/slf4j-log4j12-1.6.1-javadoc.jar!/"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="ext/jetty-all-7.2.2.v20101205.jar" sourcepath="ext/jetty-all-7.2.2.v20101205-sources.jar">
<attributes>
<attribute name="javadoc_location" value="jar:platform:/resource/gitblit/ext/jetty-all-7.2.2.v20101205-javadoc.jar!/"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="ext/jcommander-1.17.jar" sourcepath="ext/jcommander-1.17-sources.jar">
<attributes>
<attribute name="javadoc_location" value="jar:platform:/resource/gitblit/ext/jcommander-1.17-javadoc.jar!/"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="ext/wicket-1.4.17.jar" sourcepath="ext/wicket-1.4.17-sources.jar">
<attributes>
<attribute name="javadoc_location" value="jar:platform:/resource/gitblit/ext/wicket-1.4.17-javadoc.jar!/"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="ext/wicket-auth-roles-1.4.17.jar" sourcepath="ext/wicket-auth-roles-1.4.17-sources.jar">
<attributes>
<attribute name="javadoc_location" value="jar:platform:/resource/gitblit/ext/wicket-auth-roles-1.4.17-javadoc.jar!/"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="ext/wicket-extensions-1.4.17.jar" sourcepath="ext/wicket-extensions-1.4.17-sources.jar">
<attributes>
<attribute name="javadoc_location" value="jar:platform:/resource/gitblit/ext/wicket-extensions-1.4.17-javadoc.jar!/"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="ext/markdownpapers-core-1.0.0.jar" sourcepath="ext/markdownpapers-core-1.0.0-sources.jar">
<attributes>
<attribute name="javadoc_location" value="jar:platform:/resource/gitblit/ext/markdownpapers-core-1.0.0-javadoc.jar!/"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="ext/googlecharts-1.4.17.jar" sourcepath="ext/googlecharts-1.4.17-sources.jar">
<attributes>
<attribute name="javadoc_location" value="jar:platform:/resource/gitblit/ext/googlecharts-1.4.17-javadoc.jar!/"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="ext/junit-3.8.2.jar"/>
<classpathentry kind="lib" path="ext/org.eclipse.jgit-0.12.1.jar" sourcepath="ext/org.eclipse.jgit-0.12.1-sources.jar">
<attributes>
<attribute name="javadoc_location" value="jar:platform:/resource/gitblit/ext/org.eclipse.jgit-0.12.1-javadoc.jar!/"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="ext/org.eclipse.jgit.http.server-0.12.1.jar" sourcepath="ext/org.eclipse.jgit.http.server-0.12.1-sources.jar">
<attributes>
<attribute name="javadoc_location" value="jar:platform:/resource/gitblit/ext/org.eclipse.jgit.http.server-0.12.1-javadoc.jar!/"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="ext/bcprov-jdk16-1.46.jar" sourcepath="ext/bcprov-jdk16-1.46-sources.jar">
<attributes>
<attribute name="javadoc_location" value="jar:platform:/resource/gitblit/ext/bcprov-jdk16-1.46-javadoc.jar!/"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="bin"/> <classpathentry kind="output" path="bin"/>
</classpath> </classpath>

+ 1
- 12
build.xml Vedi File

<!-- Compile Project --> <!-- Compile Project -->
<path id="master-classpath"> <path id="master-classpath">
<fileset dir="${basedir}/lib">
<include name="*.jar" />
</fileset>
<fileset dir="${basedir}/ext"> <fileset dir="${basedir}/ext">
<include name="*.jar" /> <include name="*.jar" />
</fileset> </fileset>
<!-- Build jar --> <!-- Build jar -->
<delete file="${project.jar}" /> <delete file="${project.jar}" />
<jar index="true" jarfile="${project.jar}">
<jar jarfile="${project.jar}">
<fileset dir="${project.build.dir}"> <fileset dir="${project.build.dir}">
<include name="**/*" /> <include name="**/*" />
</fileset> </fileset>
<manifest> <manifest>
<attribute name="Main-Class" value="${project.mainclass}" /> <attribute name="Main-Class" value="${project.mainclass}" />
</manifest> </manifest>
<indexjars>
<fileset dir="${basedir}/lib" />
</indexjars>
</jar> </jar>
<!-- Delete the deploy folder --> <!-- Delete the deploy folder -->
<!-- Create deployment folder structure --> <!-- Create deployment folder structure -->
<mkdir dir="${basedir}/deploy" /> <mkdir dir="${basedir}/deploy" />
<copy todir="${basedir}/deploy" file="${project.jar}" /> <copy todir="${basedir}/deploy" file="${project.jar}" />
<copy todir="${basedir}/deploy/lib">
<fileset dir="${basedir}/lib">
<include name="**/*.jar" />
</fileset>
</copy>
<copy todir="${basedir}/deploy"> <copy todir="${basedir}/deploy">
<fileset dir="${basedir}/service"> <fileset dir="${basedir}/service">
<include name="**/*" /> <include name="**/*" />

+ 3
- 0
gitblit.properties Vedi File

# #
server.tempFolder = temp server.tempFolder = temp
server.log4jPattern = %-5p %d{MM-dd HH:mm:ss.SSS} %-20.20c{1} %m%n server.log4jPattern = %-5p %d{MM-dd HH:mm:ss.SSS} %-20.20c{1} %m%n
server.log4jPattern.windows = %-5p %m%n
server.log4jPattern.linux =
# #
# Jetty Settings # Jetty Settings

+ 0
- 12
makepassword.cmd Vedi File

@if [%1]==[] goto missingparameters
@if [%2]==[] goto missingparameters
@java -cp "%CD%\ext\*" org.eclipse.jetty.http.security.Password %1 %2
@goto end
:missingparameters
@echo Usage:
@echo makepassword username password
@echo.
:end

+ 0
- 11
makerepository.cmd Vedi File

@if [%1]==[] goto missingparameters
@java -cp gitblit.jar;"%CD%\lib\*" com.gitblit.MakeRepository --create %1
@goto end
:missingparameters
@echo Usage:
@echo makerepository path_to_repository
@echo.
:end

+ 201
- 75
src/com/gitblit/Build.java Vedi File

public class Build { public class Build {
public static enum BuildType {
RUNTIME, COMPILETIME;
}
public static void main(String... args) { public static void main(String... args) {
runtime(); runtime();
compiletime(); compiletime();
} }
public static void runtime() { public static void runtime() {
downloadFromMaven(MavenObject.JCOMMANDER);
downloadFromMaven(MavenObject.JETTY);
downloadFromMaven(MavenObject.SERVLET);
downloadFromMaven(MavenObject.SLF4JAPI);
downloadFromMaven(MavenObject.SLF4LOG4J);
downloadFromMaven(MavenObject.LOG4J);
downloadFromMaven(MavenObject.WICKET);
downloadFromMaven(MavenObject.WICKET_EXT);
downloadFromMaven(MavenObject.WICKET_AUTH_ROLES);
downloadFromMaven(MavenObject.WICKET_GOOGLE_CHARTS);
downloadFromMaven(MavenObject.MARKDOWNPAPERS);
downloadFromApache(MavenObject.JCOMMANDER, BuildType.RUNTIME);
downloadFromApache(MavenObject.JETTY, BuildType.RUNTIME);
downloadFromApache(MavenObject.SERVLET, BuildType.RUNTIME);
downloadFromApache(MavenObject.SLF4JAPI, BuildType.RUNTIME);
downloadFromApache(MavenObject.SLF4LOG4J, BuildType.RUNTIME);
downloadFromApache(MavenObject.LOG4J, BuildType.RUNTIME);
downloadFromApache(MavenObject.WICKET, BuildType.RUNTIME);
downloadFromApache(MavenObject.WICKET_EXT, BuildType.RUNTIME);
downloadFromApache(MavenObject.WICKET_AUTH_ROLES, BuildType.RUNTIME);
downloadFromApache(MavenObject.WICKET_GOOGLE_CHARTS, BuildType.RUNTIME);
downloadFromApache(MavenObject.MARKDOWNPAPERS, BuildType.RUNTIME);
downloadFromApache(MavenObject.BOUNCYCASTLE, BuildType.RUNTIME);
downloadFromEclipse(MavenObject.JGIT, BuildType.RUNTIME);
downloadFromEclipse(MavenObject.JGIT_HTTP, BuildType.RUNTIME);
} }
public static void compiletime() { public static void compiletime() {
downloadFromMaven(MavenObject.JUNIT);
downloadFromApache(MavenObject.JUNIT, BuildType.RUNTIME);
downloadFromApache(MavenObject.JCOMMANDER, BuildType.COMPILETIME);
downloadFromApache(MavenObject.JETTY, BuildType.COMPILETIME);
downloadFromApache(MavenObject.SERVLET, BuildType.COMPILETIME);
downloadFromApache(MavenObject.SLF4JAPI, BuildType.COMPILETIME);
downloadFromApache(MavenObject.SLF4LOG4J, BuildType.COMPILETIME);
downloadFromApache(MavenObject.LOG4J, BuildType.COMPILETIME);
downloadFromApache(MavenObject.WICKET, BuildType.COMPILETIME);
downloadFromApache(MavenObject.WICKET_EXT, BuildType.COMPILETIME);
downloadFromApache(MavenObject.WICKET_AUTH_ROLES, BuildType.COMPILETIME);
downloadFromApache(MavenObject.WICKET_GOOGLE_CHARTS, BuildType.COMPILETIME);
downloadFromApache(MavenObject.MARKDOWNPAPERS, BuildType.COMPILETIME);
downloadFromApache(MavenObject.BOUNCYCASTLE, BuildType.COMPILETIME);
downloadFromEclipse(MavenObject.JGIT, BuildType.COMPILETIME);
downloadFromEclipse(MavenObject.JGIT_HTTP, BuildType.COMPILETIME);
} }
public static void buildSettingKeys() { public static void buildSettingKeys() {
} }
} }
/**
* Download a file from the official Apache Maven repository.
*
* @param mo
* the maven object to download.
* @return
*/
private static List<File> downloadFromApache(MavenObject mo, BuildType type) {
return downloadFromMaven("http://repo1.maven.org/maven2/", mo, type);
}
/**
* Download a file from the official Eclipse Maven repository.
*
* @param mo
* the maven object to download.
* @return
*/
private static List<File> downloadFromEclipse(MavenObject mo, BuildType type) {
return downloadFromMaven("http://download.eclipse.org/jgit/maven/", mo, type);
}
/** /**
* Download a file from a Maven repository. * Download a file from a Maven repository.
* *
* the maven object to download. * the maven object to download.
* @return * @return
*/ */
private static File downloadFromMaven(MavenObject mo) {
File targetFile = mo.getLocalFile("ext");
if (targetFile.exists()) {
return targetFile;
private static List<File> downloadFromMaven(String mavenRoot, MavenObject mo, BuildType type) {
List<File> downloads = new ArrayList<File>();
String[] jars = { "" };
if (BuildType.RUNTIME.equals(type)) {
jars = new String[] { "" };
} else if (BuildType.COMPILETIME.equals(type)) {
jars = new String[] { "-sources", "-javadoc" };
} }
String mavenURL = "http://repo1.maven.org/maven2/" + mo.getRepositoryPath();
if (!targetFile.getAbsoluteFile().getParentFile().exists()) {
boolean success = targetFile.getAbsoluteFile().getParentFile().mkdirs();
if (!success) {
throw new RuntimeException("Failed to create destination folder structure!");
for (String jar : jars) {
File targetFile = mo.getLocalFile("ext", jar);
if (targetFile.exists()) {
downloads.add(targetFile);
continue;
} }
}
ByteArrayOutputStream buff = new ByteArrayOutputStream();
try {
System.out.println("Downloading " + mavenURL);
URL url = new URL(mavenURL);
InputStream in = new BufferedInputStream(url.openStream());
long last = System.currentTimeMillis();
int len = 0;
while (true) {
long now = System.currentTimeMillis();
if (now > last + 200) {
System.out.println(" downloaded " + len + " bytes");
last = now;
String expectedSHA1 = mo.getSHA1(jar);
if (expectedSHA1 == null) {
// skip this jar
continue;
}
float approximateLength = mo.getApproximateLength(jar);
String mavenURL = mavenRoot + mo.getRepositoryPath(jar);
if (!targetFile.getAbsoluteFile().getParentFile().exists()) {
boolean success = targetFile.getAbsoluteFile().getParentFile().mkdirs();
if (!success) {
throw new RuntimeException("Failed to create destination folder structure!");
} }
int x = in.read();
len++;
if (x < 0) {
break;
}
ByteArrayOutputStream buff = new ByteArrayOutputStream();
try {
URL url = new URL(mavenURL);
InputStream in = new BufferedInputStream(url.openStream());
byte[] buffer = new byte[4096];
int downloadedLen = 0;
float lastProgress = 0f;
updateDownload(0, targetFile);
while (true) {
int len = in.read(buffer);
if (len < 0) {
break;
}
downloadedLen += len;
buff.write(buffer, 0, len);
float progress = downloadedLen / approximateLength;
if (progress - lastProgress >= 0.1f) {
lastProgress = progress;
updateDownload(progress, targetFile);
}
} }
buff.write(x);
in.close();
updateDownload(1f, targetFile);
} catch (IOException e) {
throw new RuntimeException("Error downloading " + mavenURL + " to " + targetFile, e);
} }
in.close();
} catch (IOException e) {
throw new RuntimeException("Error downloading " + mavenURL + " to " + targetFile, e);
}
byte[] data = buff.toByteArray();
String got = StringUtils.getSHA1(data);
if (mo.sha1 != null && !got.equals(mo.sha1)) {
throw new RuntimeException("SHA1 checksum mismatch; got: " + got);
byte[] data = buff.toByteArray();
String calculatedSHA1 = StringUtils.getSHA1(data);
System.out.println();
if (expectedSHA1.length() == 0) {
updateProgress(0, "sha: " + calculatedSHA1);
System.out.println();
} else {
if (!calculatedSHA1.equals(expectedSHA1)) {
throw new RuntimeException("SHA1 checksum mismatch; got: " + calculatedSHA1);
}
}
try {
RandomAccessFile ra = new RandomAccessFile(targetFile, "rw");
ra.write(data);
ra.setLength(data.length);
ra.close();
} catch (IOException e) {
throw new RuntimeException("Error writing to file " + targetFile, e);
}
downloads.add(targetFile);
} }
try {
RandomAccessFile ra = new RandomAccessFile(targetFile, "rw");
ra.write(data);
ra.setLength(data.length);
ra.close();
} catch (IOException e) {
throw new RuntimeException("Error writing to file " + targetFile, e);
return downloads;
}
private static void updateDownload(float progress, File file) {
updateProgress(progress, "d/l: " + file.getName());
}
private static void updateProgress(float progress, String url) {
String anim = "==========";
int width = Math.round(anim.length() * progress);
System.out.print("\r[");
System.out.print(anim.substring(0, width));
for (int i = 0; (i < anim.length() - width); i++) {
System.out.print(" ");
} }
return targetFile;
System.out.print("] " + url);
} }
private static class MavenObject { private static class MavenObject {
public static final MavenObject JCOMMANDER = new MavenObject("jCommander", "com/beust", "jcommander", "1.17", "219a3540f3b27d7cc3b1d91d6ea046cd8723290e");
public static final MavenObject JCOMMANDER = new MavenObject("jCommander", "com/beust", "jcommander", "1.17", 34000, 32000, 141000, "219a3540f3b27d7cc3b1d91d6ea046cd8723290e", "0bb50eec177acf0e94d58e0cf07262fe5164331d", "c7adc475ca40c288c93054e0f4fe58f3a98c0cb5");
public static final MavenObject JETTY = new MavenObject("Jetty", "org/eclipse/jetty/aggregate", "jetty-all", "7.2.2.v20101205", 1430000, 965000, 3871000, "b9b7c812a732721c427e208c54fbb71ca17a2ee1", "cbc4fc72c4a646d8822bf7369c2101d4d5d1ff98", "34c87e11bba426fe97bfe23ccff12eda477c8f57");
public static final MavenObject JETTY = new MavenObject("Jetty", "org/eclipse/jetty/aggregate", "jetty-all", "7.2.2.v20101205", "b9b7c812a732721c427e208c54fbb71ca17a2ee1");
public static final MavenObject SERVLET = new MavenObject("Servlet 2.5", "javax/servlet", "servlet-api", "2.5", 105000, 158000, 0, "5959582d97d8b61f4d154ca9e495aafd16726e34", "021599814ad9a605b86f3e6381571beccd861a32", null);
public static final MavenObject SERVLET = new MavenObject("Servlet 2.5", "javax/servlet", "servlet-api", "2.5", "5959582d97d8b61f4d154ca9e495aafd16726e34");
public static final MavenObject SLF4JAPI = new MavenObject("SLF4J API", "org/slf4j", "slf4j-api", "1.6.1", 25500, 45000, 182000, "6f3b8a24bf970f17289b234284c94f43eb42f0e4", "46a386136c901748e6a3af67ebde6c22bc6b4524", "e223571d77769cdafde59040da235842f3326453");
public static final MavenObject SLF4JAPI = new MavenObject("SLF4J API", "org/slf4j", "slf4j-api", "1.6.1", "6f3b8a24bf970f17289b234284c94f43eb42f0e4");
public static final MavenObject SLF4LOG4J = new MavenObject("SLF4J LOG4J", "org/slf4j", "slf4j-log4j12", "1.6.1", 9800, 9500, 52400, "bd245d6746cdd4e6203e976e21d597a46f115802", "7a26b08b265f55622fa1fed3bda68bbd37a465ba", "6e4b16bce7994e3692e82002f322a0dd2f32741e");
public static final MavenObject SLF4LOG4J = new MavenObject("SLF4J LOG4J", "org/slf4j", "slf4j-log4j12", "1.6.1", "bd245d6746cdd4e6203e976e21d597a46f115802");
public static final MavenObject LOG4J = new MavenObject("Apache LOG4J", "log4j", "log4j", "1.2.16", 481000, 471000, 1455000, "7999a63bfccbc7c247a9aea10d83d4272bd492c6", "bf945d1dc995be7fe64923625f842fbb6bf443be", "78aa1cbf0fa3b259abdc7d87f9f6788d785aac2a");
public static final MavenObject LOG4J = new MavenObject("Apache LOG4J", "log4j", "log4j", "1.2.16", "7999a63bfccbc7c247a9aea10d83d4272bd492c6");
public static final MavenObject WICKET = new MavenObject("Apache Wicket", "org/apache/wicket", "wicket", "1.4.17", 1960000, 1906000, 6818000, "39815e37a6f56465b2d2c3d3017c4f3bf17db50a", "a792ebae4123253ffd039c3be49e773f8622f94e", "f2f244ca72d10081529b017e89d6276eab62c621");
public static final MavenObject WICKET = new MavenObject("Apache Wicket", "org/apache/wicket", "wicket", "1.4.17", "39815e37a6f56465b2d2c3d3017c4f3bf17db50a");
public static final MavenObject WICKET_EXT = new MavenObject("Apache Wicket Extensions", "org/apache/wicket", "wicket-extensions", "1.4.17", 1180000, 1118000, 1458000, "01111d0dbffdc425581b006a43864c22797ce72a", "f194f40ea6e361bb745dfa22e2f9171eb63a9355", "bd42e5ba9444a426bb2d7cacce91c6033b663b57");
public static final MavenObject WICKET_EXT = new MavenObject("Apache Wicket Extensions", "org/apache/wicket", "wicket-extensions", "1.4.17", "01111d0dbffdc425581b006a43864c22797ce72a");
public static final MavenObject WICKET_AUTH_ROLES = new MavenObject("Apache Wicket Auth Roles", "org/apache/wicket", "wicket-auth-roles", "1.4.17", 44000, 45000, 166000, "86d20ff32f62d3026213ff11a78555da643bc676", "37e815350a2d6b97734b250a8a03d8bf3712bba7", "ac3896368bfb372d178041a4ac3ee2c44f62e21c");
public static final MavenObject WICKET_AUTH_ROLES = new MavenObject("Apache Wicket Auth Roles", "org/apache/wicket", "wicket-auth-roles", "1.4.17", "86d20ff32f62d3026213ff11a78555da643bc676");
public static final MavenObject WICKET_GOOGLE_CHARTS = new MavenObject("Apache Wicket Google Charts Add-On", "org/wicketstuff", "googlecharts", "1.4.17", 34000, 18750, 161000, "c567b98b0c5efe4147e77ef2d0d3c2d45c49dea5", "3d32d958b2f7aa58388af5701ea3aafc433e573f", "c37518b67ea85af485dd61fe854137eeacc50318");
public static final MavenObject WICKET_GOOGLE_CHARTS = new MavenObject("Apache Wicket Google Charts Add-On", "org/wicketstuff", "googlecharts", "1.4.17", "c567b98b0c5efe4147e77ef2d0d3c2d45c49dea5");
public static final MavenObject JUNIT = new MavenObject("JUnit", "junit", "junit", "3.8.2", 120000, 0, 0, "07e4cde26b53a9a0e3fe5b00d1dbbc7cc1d46060", "", "");
public static final MavenObject JUNIT = new MavenObject("JUnit", "junit", "junit", "3.8.2", "07e4cde26b53a9a0e3fe5b00d1dbbc7cc1d46060");
public static final MavenObject MARKDOWNPAPERS = new MavenObject("MarkdownPapers", "org/tautua/markdownpapers", "markdownpapers-core", "1.0.0", 87000, 58000, 278000, "feda63bd149f3315da210e397d45d02277038ad5", "a9a6c4d163af81e265a15138fcaeafa9829c6054", "f932656266a7f9593488d3f89e815d0af44d0853");
public static final MavenObject BOUNCYCASTLE = new MavenObject("BouncyCastle", "org/bouncycastle", "bcprov-jdk16", "1.46", 1900000, 1400000, 4670000, "ce091790943599535cbb4de8ede84535b0c1260c", "d2b70567594225923450d7e3f80cd022c852725e", "873a6fe765f33fc27df498a5d1f5bf077e503b2f");
public static final MavenObject MARKDOWNPAPERS = new MavenObject("MarkdownPapers", "org/tautua/markdownpapers", "markdownpapers-core", "1.0.0", "feda63bd149f3315da210e397d45d02277038ad5");
public static final MavenObject JGIT = new MavenObject("JGit", "org/eclipse/jgit", "org.eclipse.jgit", "0.12.1", 1318000, 1354000, 2993000, "fd77699699b9651d2fc31c7ed63af98b14fc1975", "c8b3d84922c7802cfe6a661e13a002641a78583d", "5609aa3ce3ac3d52030befd27ddd2941f6c07570");
public static final MavenObject JGIT_HTTP = new MavenObject("JGit", "org/eclipse/jgit", "org.eclipse.jgit.http.server", "0.12.1", 68000, 62000, 99000, "384058ca906dffb8b8708c2db8849c9754359b28", "7b026658ed8de2eccc2d11d647d43d7c84a56911", "6c19e37b3caafd70c1b7b024ae1858c725181688");
public final String name; public final String name;
public final String group; public final String group;
public final String artifact; public final String artifact;
public final String version; public final String version;
public final String sha1;
public final int len_library;
public final int len_sources;
public final int len_javadoc;
public final String sha1_library;
public final String sha1_sources;
public final String sha1_javadoc;
private MavenObject(String name, String group, String artifact, String version, String sha1) {
private MavenObject(String name, String group, String artifact, String version, int len_library, int len_sources, int len_javadoc, String sha1_library, String sha1_sources, String sha1_javadoc) {
this.name = name; this.name = name;
this.group = group; this.group = group;
this.artifact = artifact; this.artifact = artifact;
this.version = version; this.version = version;
this.sha1 = sha1;
this.len_library = len_library;
this.len_sources = len_sources;
this.len_javadoc = len_javadoc;
this.sha1_library = sha1_library;
this.sha1_sources = sha1_sources;
this.sha1_javadoc = sha1_javadoc;
}
private String getRepositoryPath(String jar) {
return group + "/" + artifact + "/" + version + "/" + artifact + "-" + version + jar + ".jar";
} }
private String getRepositoryPath() {
return group + "/" + artifact + "/" + version + "/" + artifact + "-" + version + ".jar";
private File getLocalFile(String basePath, String jar) {
return new File(basePath, artifact + "-" + version + jar + ".jar");
} }
private File getLocalFile(String basePath) {
return new File(basePath, artifact + "-" + version + ".jar");
private String getSHA1(String jar) {
if (jar.equals("")) {
return sha1_library;
} else if (jar.equals("-sources")) {
return sha1_sources;
} else if (jar.equals("-javadoc")) {
return sha1_javadoc;
}
return sha1_library;
}
private int getApproximateLength(String jar) {
if (jar.equals("")) {
return len_library;
} else if (jar.equals("-sources")) {
return len_sources;
} else if (jar.equals("-javadoc")) {
return len_javadoc;
}
return len_library;
} }
@Override @Override

+ 1
- 1
src/com/gitblit/Constants.java Vedi File

} }
public static String getJGitVersion() { public static String getJGitVersion() {
return "JGit 0.12-stable";
return "JGit 0.12.1";
} }
public static String getRunningVersion() { public static String getRunningVersion() {

+ 1
- 1
src/com/gitblit/FileSettings.java Vedi File

@Override @Override
public String toString() { public String toString() {
return getClass().getSimpleName() + ": " + new File(Constants.PROPERTIES_FILE).getAbsolutePath();
return new File(Constants.PROPERTIES_FILE).getAbsolutePath();
} }
} }

+ 5
- 6
src/com/gitblit/GitBlit.java Vedi File

model.useTickets = config.getBoolean("gitblit", "useTickets", false); model.useTickets = config.getBoolean("gitblit", "useTickets", false);
model.useDocs = config.getBoolean("gitblit", "useDocs", false); model.useDocs = config.getBoolean("gitblit", "useDocs", false);
model.useRestrictedAccess = config.getBoolean("gitblit", "restrictedAccess", false); model.useRestrictedAccess = config.getBoolean("gitblit", "restrictedAccess", false);
model.showRemoteBranches = config.getBoolean("gitblit", "showRemoteBranches", false);
} }
r.close(); r.close();
return model; return model;
config.setBoolean("gitblit", null, "useTickets", repository.useTickets); config.setBoolean("gitblit", null, "useTickets", repository.useTickets);
config.setBoolean("gitblit", null, "useDocs", repository.useDocs); config.setBoolean("gitblit", null, "useDocs", repository.useDocs);
config.setBoolean("gitblit", null, "restrictedAccess", repository.useRestrictedAccess); config.setBoolean("gitblit", null, "restrictedAccess", repository.useRestrictedAccess);
config.setBoolean("gitblit", null, "showRemoteBranches", repository.showRemoteBranches);
try { try {
config.save(); config.save();
} catch (IOException e) { } catch (IOException e) {
r.close(); r.close();
} }
public void setupContext(IStoredSettings settings) {
logger.info("Setting up GitBlit context from " + settings.toString());
public void configureContext(IStoredSettings settings) {
logger.info("Configure GitBlit from " + settings.toString());
this.storedSettings = settings; this.storedSettings = settings;
repositoriesFolder = new File(settings.getString(Keys.git.repositoriesFolder, "repos")); repositoriesFolder = new File(settings.getString(Keys.git.repositoriesFolder, "repos"));
exportAll = settings.getBoolean(Keys.git.exportAll, true); exportAll = settings.getBoolean(Keys.git.exportAll, true);
@Override @Override
public void contextInitialized(ServletContextEvent contextEvent) { public void contextInitialized(ServletContextEvent contextEvent) {
logger.info("GitBlit context initialization by servlet container...");
if (storedSettings == null) { if (storedSettings == null) {
WebXmlSettings webxmlSettings = new WebXmlSettings(contextEvent.getServletContext()); WebXmlSettings webxmlSettings = new WebXmlSettings(contextEvent.getServletContext());
setupContext(webxmlSettings);
} else {
logger.info("GitBlit context already setup by " + storedSettings.toString());
configureContext(webxmlSettings);
} }
} }

+ 18
- 2
src/com/gitblit/GitBlitServer.java Vedi File

* Start Server. * Start Server.
*/ */
private static void start(Params params) { private static void start(Params params) {
PatternLayout layout = new PatternLayout(fileSettings.getString(Keys.server.log4jPattern, "%-5p %d{MM-dd HH:mm:ss.SSS} %-20.20c{1} %m%n"));
String pattern = fileSettings.getString(Keys.server.log4jPattern, "%-5p %d{MM-dd HH:mm:ss.SSS} %-20.20c{1} %m%n");
// allow os override of logging pattern
String os = System.getProperty("os.name").toLowerCase();
if (os.indexOf("windows") > -1) {
String winPattern = fileSettings.getString(Keys.server.log4jPattern_windows, pattern);
if (!StringUtils.isEmpty(winPattern)) {
pattern = winPattern;
}
} else if (os.indexOf("linux") > -1) {
String linuxPattern = fileSettings.getString(Keys.server.log4jPattern_linux, pattern);
if (!StringUtils.isEmpty(linuxPattern)) {
pattern = linuxPattern;
}
}
PatternLayout layout = new PatternLayout(pattern);
org.apache.log4j.Logger rootLogger = org.apache.log4j.Logger.getRootLogger(); org.apache.log4j.Logger rootLogger = org.apache.log4j.Logger.getRootLogger();
rootLogger.addAppender(new ConsoleAppender(layout)); rootLogger.addAppender(new ConsoleAppender(layout));
// Setup the GitBlit context // Setup the GitBlit context
GitBlit gitblit = GitBlit.self(); GitBlit gitblit = GitBlit.self();
gitblit.setupContext(fileSettings);
gitblit.configureContext(fileSettings);
rootContext.addEventListener(gitblit); rootContext.addEventListener(gitblit);
// Start the Server // Start the Server

+ 4
- 0
src/com/gitblit/Launcher.java Vedi File

* @throws IOException * @throws IOException
*/ */
public static void addJarFile(File f) throws IOException { public static void addJarFile(File f) throws IOException {
if (f.getName().indexOf("-sources") > -1 || f.getName().indexOf("-javadoc") > -1) {
// don't add source or javadoc jars to runtime classpath
return;
}
URL u = f.toURI().toURL(); URL u = f.toURI().toURL();
if (debug) if (debug)
System.out.println("load=" + u.toExternalForm()); System.out.println("load=" + u.toExternalForm());

+ 1
- 1
src/com/gitblit/WebXmlSettings.java Vedi File

@Override @Override
public String toString() { public String toString() {
return getClass().getSimpleName() + ": web.xml";
return "WEB.XML";
} }
} }

+ 0
- 6
src/com/gitblit/utils/JGitUtils.java Vedi File

public class JGitUtils { public class JGitUtils {
/** Prefix for notes refs */
public static final String R_NOTES = "refs/notes/";
/** Standard notes ref */
public static final String R_NOTES_COMMITS = R_NOTES + "commits";
private final static Logger LOGGER = LoggerFactory.getLogger(JGitUtils.class); private final static Logger LOGGER = LoggerFactory.getLogger(JGitUtils.class);
public static Repository createRepository(File repositoriesFolder, String name, boolean bare) { public static Repository createRepository(File repositoriesFolder, String name, boolean bare) {

+ 53
- 0
src/com/gitblit/utils/MarkdownUtils.java Vedi File

package com.gitblit.utils;
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
import java.io.StringWriter;
import org.tautua.markdownpapers.Markdown;
import org.tautua.markdownpapers.parser.ParseException;
public class MarkdownUtils {
public static String transformMarkdown(String markdown) throws java.text.ParseException {
// Read raw markdown content and transform it to html
StringReader reader = new StringReader(markdown);
StringWriter writer = new StringWriter();
try {
Markdown md = new Markdown();
md.transform(reader, writer);
return writer.toString();
} catch (ParseException p) {
throw new java.text.ParseException(p.getMessage(), 0);
} finally {
reader.close();
try {
writer.close();
} catch (IOException e) {
}
}
}
public static String transformMarkdown(Reader markdownReader) throws java.text.ParseException {
// Read raw markdown content and transform it to html
StringWriter writer = new StringWriter();
try {
Markdown md = new Markdown();
md.transform(markdownReader, writer);
return writer.toString();
} catch (ParseException p) {
throw new java.text.ParseException(p.getMessage(), 0);
} finally {
try {
markdownReader.close();
} catch (IOException e) {
}
try {
writer.close();
} catch (IOException e) {
}
}
}
}

+ 0
- 46
src/com/gitblit/utils/StringUtils.java Vedi File

package com.gitblit.utils; package com.gitblit.utils;
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.security.MessageDigest; import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException; import java.security.NoSuchAlgorithmException;
import java.util.List; import java.util.List;
import org.tautua.markdownpapers.Markdown;
import org.tautua.markdownpapers.parser.ParseException;
public class StringUtils { public class StringUtils {
throw new RuntimeException(t); throw new RuntimeException(t);
} }
} }
public static String transformMarkdown(String markdown) throws java.text.ParseException {
// Read raw markdown content and transform it to html
StringReader reader = new StringReader(markdown);
StringWriter writer = new StringWriter();
try {
Markdown md = new Markdown();
md.transform(reader, writer);
return writer.toString();
} catch (ParseException p) {
throw new java.text.ParseException(p.getMessage(), 0);
} finally {
reader.close();
try {
writer.close();
} catch (IOException e) {
}
}
}
public static String transformMarkdown(Reader markdownReader) throws java.text.ParseException {
// Read raw markdown content and transform it to html
StringWriter writer = new StringWriter();
try {
Markdown md = new Markdown();
md.transform(markdownReader, writer);
return writer.toString();
} catch (ParseException p) {
throw new java.text.ParseException(p.getMessage(), 0);
} finally {
try {
markdownReader.close();
} catch (IOException e) {
}
try {
writer.close();
} catch (IOException e) {
}
}
}
} }

+ 2
- 1
src/com/gitblit/wicket/GitBlitWebApp.properties Vedi File

gb.description = description gb.description = description
gb.enableTickets = enable tickets gb.enableTickets = enable tickets
gb.enableDocs = enable docs gb.enableDocs = enable docs
gb.save = save
gb.save = save
gb.showRemoteBranches = show remote branches

+ 1
- 0
src/com/gitblit/wicket/models/RepositoryModel.java Vedi File

public String group; public String group;
public Date lastChange; public Date lastChange;
public boolean hasCommits; public boolean hasCommits;
public boolean showRemoteBranches;
public boolean useTickets; public boolean useTickets;
public boolean useDocs; public boolean useDocs;
public boolean useRestrictedAccess; public boolean useRestrictedAccess;

+ 1
- 1
src/com/gitblit/wicket/pages/BranchesPage.java Vedi File

public BranchesPage(PageParameters params) { public BranchesPage(PageParameters params) {
super(params); super(params);
add(new BranchesPanel("branchesPanel", repositoryName, getRepository(), -1));
add(new BranchesPanel("branchesPanel", getRepositoryModel(), getRepository(), -1));
} }
@Override @Override

+ 2
- 1
src/com/gitblit/wicket/pages/EditRepositoryPage.html Vedi File

<tr><th><wicket:message key="gb.group"></wicket:message></th><td class="edit"><input type="text" wicket:id="group" size="30" tabindex="4" /></td></tr> <tr><th><wicket:message key="gb.group"></wicket:message></th><td class="edit"><input type="text" wicket:id="group" size="30" tabindex="4" /></td></tr>
<tr><th><wicket:message key="gb.enableTickets"></wicket:message></th><td class="edit"><input type="checkbox" wicket:id="useTickets" tabindex="5" /> &nbsp;<i>distributed Ticgit issues</i></td></tr> <tr><th><wicket:message key="gb.enableTickets"></wicket:message></th><td class="edit"><input type="checkbox" wicket:id="useTickets" tabindex="5" /> &nbsp;<i>distributed Ticgit issues</i></td></tr>
<tr><th><wicket:message key="gb.enableDocs"></wicket:message></th><td class="edit"><input type="checkbox" wicket:id="useDocs" tabindex="6" /> &nbsp;<i>enumerates repository Markdown documentation</i></td></tr> <tr><th><wicket:message key="gb.enableDocs"></wicket:message></th><td class="edit"><input type="checkbox" wicket:id="useDocs" tabindex="6" /> &nbsp;<i>enumerates repository Markdown documentation</i></td></tr>
<tr><td class="edit" colspan="2"><input type="submit" value="Save" wicket:message="value:gb.save" tabindex="7" /></td></tr>
<tr><th><wicket:message key="gb.showRemoteBranches"></wicket:message></th><td class="edit"><input type="checkbox" wicket:id="showRemoteBranches" tabindex="7" /> &nbsp;<i>show remote branches</i></td></tr>
<tr><td class="edit" colspan="2"><input type="submit" value="Save" wicket:message="value:gb.save" tabindex="8" /></td></tr>
</tbody> </tbody>
</table> </table>
</form> </form>

+ 1
- 0
src/com/gitblit/wicket/pages/EditRepositoryPage.java Vedi File

form.add(new TextField<String>("group")); form.add(new TextField<String>("group"));
form.add(new CheckBox("useTickets")); form.add(new CheckBox("useTickets"));
form.add(new CheckBox("useDocs")); form.add(new CheckBox("useDocs"));
form.add(new CheckBox("showRemoteBranches"));
add(form); add(form);
} }

+ 2
- 2
src/com/gitblit/wicket/pages/MarkdownPage.java Vedi File

import org.eclipse.jgit.revwalk.RevCommit; import org.eclipse.jgit.revwalk.RevCommit;
import com.gitblit.utils.JGitUtils; import com.gitblit.utils.JGitUtils;
import com.gitblit.utils.StringUtils;
import com.gitblit.utils.MarkdownUtils;
import com.gitblit.wicket.RepositoryPage; import com.gitblit.wicket.RepositoryPage;
import com.gitblit.wicket.WicketUtils; import com.gitblit.wicket.WicketUtils;
String markdownText = JGitUtils.getRawContentAsString(r, commit, markdownPath); String markdownText = JGitUtils.getRawContentAsString(r, commit, markdownPath);
String htmlText; String htmlText;
try { try {
htmlText = StringUtils.transformMarkdown(markdownText);
htmlText = MarkdownUtils.transformMarkdown(markdownText);
} catch (ParseException p) { } catch (ParseException p) {
error(p.getMessage()); error(p.getMessage());
htmlText = markdownText; htmlText = markdownText;

+ 3
- 2
src/com/gitblit/wicket/pages/RepositoriesPage.java Vedi File

import com.gitblit.GitBlit; import com.gitblit.GitBlit;
import com.gitblit.Keys; import com.gitblit.Keys;
import com.gitblit.utils.MarkdownUtils;
import com.gitblit.utils.StringUtils; import com.gitblit.utils.StringUtils;
import com.gitblit.utils.TimeUtils; import com.gitblit.utils.TimeUtils;
import com.gitblit.wicket.BasePage; import com.gitblit.wicket.BasePage;
ContextRelativeResource res = WicketUtils.getResource("welcome.mkd"); ContextRelativeResource res = WicketUtils.getResource("welcome.mkd");
InputStream is = res.getResourceStream().getInputStream(); InputStream is = res.getResourceStream().getInputStream();
InputStreamReader reader = new InputStreamReader(is); InputStreamReader reader = new InputStreamReader(is);
message = StringUtils.transformMarkdown(reader);
message = MarkdownUtils.transformMarkdown(reader);
} catch (Throwable t) { } catch (Throwable t) {
message = "Failed to read default welcome message!"; message = "Failed to read default welcome message!";
error(message, t, false); error(message, t, false);
if (file.exists()) { if (file.exists()) {
try { try {
FileReader reader = new FileReader(file); FileReader reader = new FileReader(file);
message = StringUtils.transformMarkdown(reader);
message = MarkdownUtils.transformMarkdown(reader);
} catch (Throwable t) { } catch (Throwable t) {
message = "Failed to read " + file; message = "Failed to read " + file;
error(message, t, false); error(message, t, false);

+ 1
- 1
src/com/gitblit/wicket/pages/SummaryPage.java Vedi File

add(new LogPanel("commitsPanel", repositoryName, null, r, numberCommits, 0)); add(new LogPanel("commitsPanel", repositoryName, null, r, numberCommits, 0));
add(new TagsPanel("tagsPanel", repositoryName, r, numberRefs)); add(new TagsPanel("tagsPanel", repositoryName, r, numberRefs));
add(new BranchesPanel("branchesPanel", repositoryName, r, numberRefs));
add(new BranchesPanel("branchesPanel", getRepositoryModel(), r, numberRefs));
// Display an activity line graph // Display an activity line graph
insertActivityGraph(metrics); insertActivityGraph(metrics);

+ 11
- 8
src/com/gitblit/wicket/panels/BranchesPanel.java Vedi File

import com.gitblit.wicket.LinkPanel; import com.gitblit.wicket.LinkPanel;
import com.gitblit.wicket.WicketUtils; import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.models.RefModel; import com.gitblit.wicket.models.RefModel;
import com.gitblit.wicket.models.RepositoryModel;
import com.gitblit.wicket.pages.BranchesPage; import com.gitblit.wicket.pages.BranchesPage;
import com.gitblit.wicket.pages.LogPage; import com.gitblit.wicket.pages.LogPage;
import com.gitblit.wicket.pages.SummaryPage; import com.gitblit.wicket.pages.SummaryPage;
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public BranchesPanel(String wicketId, final String repositoryName, Repository r, final int maxCount) {
public BranchesPanel(String wicketId, final RepositoryModel model, Repository r, final int maxCount) {
super(wicketId); super(wicketId);
// branches // branches
List<RefModel> branches = new ArrayList<RefModel>(); List<RefModel> branches = new ArrayList<RefModel>();
branches.addAll(JGitUtils.getLocalBranches(r, maxCount)); branches.addAll(JGitUtils.getLocalBranches(r, maxCount));
branches.addAll(JGitUtils.getRemoteBranches(r, maxCount));
if (model.showRemoteBranches) {
branches.addAll(JGitUtils.getRemoteBranches(r, maxCount));
}
Collections.sort(branches); Collections.sort(branches);
Collections.reverse(branches); Collections.reverse(branches);
if (maxCount > 0 && branches.size() > maxCount) { if (maxCount > 0 && branches.size() > maxCount) {
if (maxCount > 0) { if (maxCount > 0) {
// summary page // summary page
// show branches page link // show branches page link
add(new LinkPanel("branches", "title", new StringResourceModel("gb.branches", this, null), BranchesPage.class, WicketUtils.newRepositoryParameter(repositoryName)));
add(new LinkPanel("branches", "title", new StringResourceModel("gb.branches", this, null), BranchesPage.class, WicketUtils.newRepositoryParameter(model.name)));
} else { } else {
// branches page // branches page
// show repository summary page link // show repository summary page link
add(new LinkPanel("branches", "title", repositoryName, SummaryPage.class, WicketUtils.newRepositoryParameter(repositoryName)));
add(new LinkPanel("branches", "title", model.name, SummaryPage.class, WicketUtils.newRepositoryParameter(model.name)));
} }
ListDataProvider<RefModel> branchesDp = new ListDataProvider<RefModel>(branches); ListDataProvider<RefModel> branchesDp = new ListDataProvider<RefModel>(branches);
item.add(WicketUtils.createDateLabel("branchDate", entry.getDate(), getTimeZone())); item.add(WicketUtils.createDateLabel("branchDate", entry.getDate(), getTimeZone()));
item.add(new LinkPanel("branchName", "list name", StringUtils.trimString(entry.getDisplayName(), 28), LogPage.class, WicketUtils.newObjectParameter(repositoryName, entry.getName())));
item.add(new LinkPanel("branchName", "list name", StringUtils.trimString(entry.getDisplayName(), 28), LogPage.class, WicketUtils.newObjectParameter(model.name, entry.getName())));
// only show branch type on the branches page // only show branch type on the branches page
boolean remote = entry.getName().startsWith(Constants.R_REMOTES); boolean remote = entry.getName().startsWith(Constants.R_REMOTES);
item.add(new Label("branchType", remote ? getString("gb.remote") : getString("gb.local")).setVisible(maxCount <= 0)); item.add(new Label("branchType", remote ? getString("gb.remote") : getString("gb.local")).setVisible(maxCount <= 0));
item.add(new BookmarkablePageLink<Void>("log", LogPage.class, WicketUtils.newObjectParameter(repositoryName, entry.getName())));
item.add(new BookmarkablePageLink<Void>("tree", TreePage.class, WicketUtils.newObjectParameter(repositoryName, entry.getName())));
item.add(new BookmarkablePageLink<Void>("log", LogPage.class, WicketUtils.newObjectParameter(model.name, entry.getName())));
item.add(new BookmarkablePageLink<Void>("tree", TreePage.class, WicketUtils.newObjectParameter(model.name, entry.getName())));
WicketUtils.setAlternatingBackground(item, counter); WicketUtils.setAlternatingBackground(item, counter);
counter++; counter++;
if (branches.size() < maxCount || maxCount <= 0) { if (branches.size() < maxCount || maxCount <= 0) {
add(new Label("allBranches", "").setVisible(false)); add(new Label("allBranches", "").setVisible(false));
} else { } else {
add(new LinkPanel("allBranches", "link", new StringResourceModel("gb.allBranches", this, null), BranchesPage.class, WicketUtils.newRepositoryParameter(repositoryName)));
add(new LinkPanel("allBranches", "link", new StringResourceModel("gb.allBranches", this, null), BranchesPage.class, WicketUtils.newRepositoryParameter(model.name)));
} }
} }
} }

+ 3
- 3
src/com/gitblit/wicket/resources/welcome.mkd Vedi File

## Welcome to Git:Blit ##
## Welcome to Git:Blit
A quick and easy way to host your own Git repositories.
A quick and easy way to host or view your own Git repositories.
Built with [JGit](http://eclipse.org/jgit), [Wicket](http://wicket.apache.org), [WicketStuff GoogleCharts](https://github.com/wicketstuff/core/wiki/GoogleCharts), [markitup](http://markitup.jaysalvat.com), [MarkdownPapers](http://markdown.tautua.org), [Jetty](http://eclipse.org/jetty), [SLF4J](http://www.slf4j.org), [Log4j](http://logging.apache.org/log4j), [google-code-prettify](http://code.google.com/p/google-code-prettify), [JCommander](http://jcommander.org), Most icons courtesy of [FatCow Hosting](http://www.fatcow.com/free-icons)
Built with [JGit](http://eclipse.org/jgit), [Wicket](http://wicket.apache.org), [WicketStuff GoogleCharts](https://github.com/wicketstuff/core/wiki/GoogleCharts), [MarkdownPapers](http://markdown.tautua.org), [Jetty](http://eclipse.org/jetty), [SLF4J](http://www.slf4j.org), [Log4j](http://logging.apache.org/log4j), [google-code-prettify](http://code.google.com/p/google-code-prettify), [JCommander](http://jcommander.org), [BouncyCastle](http://www.bouncycastle.org), [JavaService](http://forge.ow2.org/projects/javaservice), and most icons courtesy of [FatCow Hosting](http://www.fatcow.com/free-icons)

Loading…
Annulla
Salva