Gitblit: invalid request when navigating to a second level folder


I'm trying to gitblit , which seems like a pretty good web interface for git. Installation through a war file is quite simple and works out of the box. However, I am having a strange problem.
I am using a Maven project that has a standard folder structure

project pom.xml src src/test-file.txt (I added this file to verify the issue) src/java src/java/main src/java/main/package src/java/main/package/File.java 

While I'm trying to go to the first level (so pom.xml and src ) everything is fine, I can open and read the file correctly. However, when I try to open the java folder under src , the link appears as localhost:8080/gitblit/tree/project/commit-id/src%2Fjava , and I am presented with a white page. The request is not redirected to the server (tomcat 7.0.32, if this can help), and firebug just tells me Error 400: Bad Request .
This %2F looks weird, so I manually tried to fix the link in localhost:8080/gitblit/tree/project/commit-id/src/java , but then an internal server error is generated. Looking at the magazines, I read

 INFO Found more URL path parts then expected, these will be ignored. Url: 'http://localhost:8080/gitblit/tree/project/commit-id/src/java', mountpath: 'blob', urlPath: 'project/commit-id/src/java', expected 3 parameters was 4 

Then I added that test-file.txt . If I go to src and try to open test-file.txt , the link first tries to open localhost:8080/gitblit/blob/project/commit-id/src%2Ftest-file.txt , presenting an html page that says that file not found. If I try the same trick as before (from %2F to / ), I get this exception:

 INFO Found more URL path parts then expected, these will be ignored. Url: 'http://localhost:8080/gitblit/blob/project/commit-id/src/test-file.txt', mountpath: 'blob', urlPath: 'project/commit-id/src/test-file.txt', expected 3 parameters was 4 ERROR /path/to/project/.git cant find {1} in tree {2} org.eclipse.jgit.errors.IncorrectObjectTypeException: Object commit-id is not a blob. at org.eclipse.jgit.storage.file.WindowCursor.open(WindowCursor.java:130) at org.eclipse.jgit.lib.ObjectDatabase.open(ObjectDatabase.java:176) at org.eclipse.jgit.lib.Repository.open(Repository.java:278) at com.gitblit.utils.JGitUtils.getByteContent(JGitUtils.java:563) at com.gitblit.utils.JGitUtils.getStringContent(JGitUtils.java:596) at com.gitblit.wicket.pages.BlobPage.<init>(BlobPage.java:133) at sun.reflect.GeneratedConstructorAccessor22.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at org.apache.wicket.session.DefaultPageFactory.createPage(DefaultPageFactory.java:188) at org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:89) at org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:305) at org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:320) at org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:234) at org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:92) at org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1279) at org.apache.wicket.RequestCycle.step(RequestCycle.java:1358) at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1465) at org.apache.wicket.RequestCycle.request(RequestCycle.java:545) at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:486) at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:319) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) at java.lang.Thread.run(Thread.java:662) ERROR Can't instantiate page using constructor public com.gitblit.wicket.pages.BlobPage(org.apache.wicket.PageParameters) and argument r = "project" h = "commit-id" f = "src" org.apache.wicket.WicketRuntimeException: Can't instantiate page using constructor public com.gitblit.wicket.pages.BlobPage(org.apache.wicket.PageParameters) and argument r = "project" h = "commit-id" f = "src" at org.apache.wicket.session.DefaultPageFactory.createPage(DefaultPageFactory.java:212) at org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:89) at org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:305) at org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:320) at org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:234) at org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:92) at org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1279) at org.apache.wicket.RequestCycle.step(RequestCycle.java:1358) at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1465) at org.apache.wicket.RequestCycle.request(RequestCycle.java:545) at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:486) at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:319) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) at java.lang.Thread.run(Thread.java:662) Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.GeneratedConstructorAccessor22.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at org.apache.wicket.session.DefaultPageFactory.createPage(DefaultPageFactory.java:188) ... 27 more Caused by: java.lang.NullPointerException at com.gitblit.wicket.pages.BlobPage.generateSourceView(BlobPage.java:142) at com.gitblit.wicket.pages.BlobPage.<init>(BlobPage.java:134) ... 31 more 

I basically did not configure gitblit myself (no changes to gitblit.properties ), so my problem might be in the missing configuration, but I could figure out where. Any hint?

+4
source share
2 answers

no changes to gitblit.properties

This suggestion was the cause of the problem. And the solution was really well documented on the Gitblit.com FAQ .

Running Gitblit on Tomcat
Tomcat takes the extra precaution of disabling inline slashes by default . This violates the gitblit url. You have several options for managing this scenario:
1. Tweak Tomcat Add -Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH = true for CATALINA_OPTS or your JVM launch options
2. Modify gitblit.properties using one of:
- web.mountParameters = false and use bad parameterized URLs
- web.forwardSlashCharacter =! which tells gitblit to use! instead of /

I used web.forwardSlashCharacter = ! , rebooted gitblit webapp from the manager, and now everything works fine. It’s my fault that I didn’t read the frequently asked questions until James Morger offered me a lecture.

+3
source

An easy way to fix this stupid problem is to disable the URL Wizard in / var / lib / tomcat 7 / gitblit.properties:

Follow these simple steps:

  • nano / var / lib / tomcat7 / webapps / gitblit / WEB-INF / data / gitblit.properties
  • find web.mountParameters = true and change to false
  • restart tomcat /etc/init.d/tomcat7 restart
  • what all!

Cya!

+2
source

All Articles