Browse Source

Codepro analyze dependencies. Documentation.

tags/v0.5.0
James Moger 13 years ago
parent
commit
1f9daef870
75 changed files with 468 additions and 391 deletions
  1. 7
    18
      README.MKD
  2. 17
    2
      build.xml
  3. 40
    12
      distrib/gitblit.properties
  4. 7
    4
      docs/00_index.mkd
  5. 21
    2
      docs/00_setup.mkd
  6. 0
    18
      docs/01_eclipse.mkd
  7. 34
    9
      docs/01_faq.mkd
  8. 4
    0
      docs/02_properties.mkd
  9. 5
    1
      docs/page_header.html
  10. BIN
      docs/sslverify.png
  11. BIN
      docs/sslverify2.png
  12. 4
    5
      src/com/gitblit/Build.java
  13. 18
    4
      src/com/gitblit/BuildSite.java
  14. 2
    0
      src/com/gitblit/Constants.java
  15. 1
    1
      src/com/gitblit/DownloadZipServlet.java
  16. 8
    5
      src/com/gitblit/GitBlit.java
  17. 21
    18
      src/com/gitblit/GitBlitServer.java
  18. 1
    1
      src/com/gitblit/GitBlitServlet.java
  19. 1
    1
      src/com/gitblit/ILoginService.java
  20. 1
    1
      src/com/gitblit/JettyLoginService.java
  21. 3
    3
      src/com/gitblit/MakeCertificate.java
  22. 1
    1
      src/com/gitblit/models/Metric.java
  23. 3
    4
      src/com/gitblit/models/PathModel.java
  24. 2
    4
      src/com/gitblit/models/RefModel.java
  25. 2
    2
      src/com/gitblit/models/RepositoryModel.java
  26. 1
    7
      src/com/gitblit/models/TicketModel.java
  27. 1
    1
      src/com/gitblit/models/UserModel.java
  28. 149
    0
      src/com/gitblit/utils/DiffUtils.java
  29. 14
    133
      src/com/gitblit/utils/JGitUtils.java
  30. 4
    2
      src/com/gitblit/wicket/AuthorizationStrategy.java
  31. 2
    0
      src/com/gitblit/wicket/GitBlitWebApp.java
  32. 1
    1
      src/com/gitblit/wicket/GitBlitWebSession.java
  33. 1
    1
      src/com/gitblit/wicket/RequiresAdminRole.java
  34. 3
    3
      src/com/gitblit/wicket/pages/BasePage.html
  35. 4
    2
      src/com/gitblit/wicket/pages/BasePage.java
  36. 3
    3
      src/com/gitblit/wicket/pages/BlobDiffPage.java
  37. 0
    1
      src/com/gitblit/wicket/pages/BlobPage.java
  38. 0
    1
      src/com/gitblit/wicket/pages/BranchesPage.java
  39. 4
    4
      src/com/gitblit/wicket/pages/CommitDiffPage.java
  40. 2
    3
      src/com/gitblit/wicket/pages/CommitPage.java
  41. 2
    3
      src/com/gitblit/wicket/pages/DocsPage.java
  42. 3
    4
      src/com/gitblit/wicket/pages/EditRepositoryPage.java
  43. 4
    5
      src/com/gitblit/wicket/pages/EditUserPage.java
  44. 0
    1
      src/com/gitblit/wicket/pages/HistoryPage.java
  45. 0
    1
      src/com/gitblit/wicket/pages/LogPage.java
  46. 3
    3
      src/com/gitblit/wicket/pages/LoginPage.html
  47. 27
    32
      src/com/gitblit/wicket/pages/LoginPage.java
  48. 1
    1
      src/com/gitblit/wicket/pages/LogoutPage.java
  49. 0
    1
      src/com/gitblit/wicket/pages/MarkdownPage.java
  50. 2
    1
      src/com/gitblit/wicket/pages/PatchPage.java
  51. 0
    1
      src/com/gitblit/wicket/pages/RepositoriesPage.java
  52. 0
    0
      src/com/gitblit/wicket/pages/RepositoryPage.html
  53. 5
    11
      src/com/gitblit/wicket/pages/RepositoryPage.java
  54. 0
    1
      src/com/gitblit/wicket/pages/SearchPage.java
  55. 1
    2
      src/com/gitblit/wicket/pages/SummaryPage.java
  56. 2
    3
      src/com/gitblit/wicket/pages/TagPage.java
  57. 0
    1
      src/com/gitblit/wicket/pages/TagsPage.java
  58. 2
    3
      src/com/gitblit/wicket/pages/TicketPage.java
  59. 2
    3
      src/com/gitblit/wicket/pages/TicketsPage.java
  60. 2
    3
      src/com/gitblit/wicket/pages/TreePage.java
  61. 2
    3
      src/com/gitblit/wicket/panels/BranchesPanel.java
  62. 0
    1
      src/com/gitblit/wicket/panels/CommitHeaderPanel.java
  63. 1
    1
      src/com/gitblit/wicket/panels/CommitLegendPanel.java
  64. 2
    3
      src/com/gitblit/wicket/panels/HistoryPanel.java
  65. 0
    0
      src/com/gitblit/wicket/panels/LinkPanel.html
  66. 1
    1
      src/com/gitblit/wicket/panels/LinkPanel.java
  67. 0
    1
      src/com/gitblit/wicket/panels/LogPanel.java
  68. 5
    10
      src/com/gitblit/wicket/panels/PathBreadcrumbsPanel.java
  69. 0
    1
      src/com/gitblit/wicket/panels/RefsPanel.java
  70. 2
    3
      src/com/gitblit/wicket/panels/RepositoriesPanel.java
  71. 0
    1
      src/com/gitblit/wicket/panels/SearchPanel.java
  72. 1
    2
      src/com/gitblit/wicket/panels/TagsPanel.java
  73. 0
    1
      src/com/gitblit/wicket/panels/UsersPanel.java
  74. 1
    1
      tests/com/gitblit/tests/GitBlitSuite.java
  75. 5
    4
      tests/com/gitblit/tests/JGitUtilsTest.java

+ 7
- 18
README.MKD View File

@@ -1,18 +1,9 @@
Gitblit
=================
Gitblit is an open source, pure Java Git solution.
Gitblit can be found at: http://gitblit.com and is licensed under
the Apache Software Foundation license, version 2.0.
Contents
--------
- License
- Java/Application server requirements
- Getting help
- Building Gitblit
Gitblit is an open source, pure Java Git solution for creating, viewing, and serving [Git](http://git-scm.com) repositories.<br/>
More information about Gitblit can be found [here](http://gitblit.com).
License
-------
@@ -28,8 +19,7 @@ Gitblit requires at least Java 1.6.
Getting help
------------
- Read the online documentation available on the Gitblit website
(http://gitblit.com)
Read the online documentation available at the [Gitblit website](http://gitblit.com)
Building Gitblit
----------------
@@ -40,7 +30,6 @@ Building Gitblit
2. Using Ant, execute the `build.xml` script in the project root.<br/>
*This will download all necessary build dependencies and will also generate the Keys class for accessing settings.*
3. Select your gitblit project root and **Refresh** the project, this should correct all build problems.
4. Review the settings in `gitblit.properties` in your project root.<br/>
Make sure you set an appropriate value for *git.repositoriesFolder*.
5. Execute the *com.gitblit.Launcher* class to start Gitblit.
4. Using JUnit, execute the `com.gitblit.tests.GitBlitSuite` test suite.<br/>
*This will clone some repositories from the web and run through the unit tests.*
5. Execute the *com.gitblit.Launcher* class to start Gitblit.

+ 17
- 2
build.xml View File

@@ -25,7 +25,7 @@
<replacestring from="&quot;;" to="" />
<trim />
</tokenfilter>
</filterchain>
</filterchain>
</loadfile>
<!-- extract JGit version number from source code -->
@@ -154,6 +154,14 @@
</fileset>
</copy>
<!-- Copy google-code-prettify -->
<mkdir dir="${basedir}/src/com/gitblit/wicket/pages/prettify" />
<copy todir="${basedir}/site/prettify">
<fileset dir="${basedir}/src/com/gitblit/wicket/pages/prettify">
<exclude name="thumbs.db" />
</fileset>
</copy>
<!-- Copy screenshot thumbnails -->
<mkdir dir="${basedir}/site/thumbs" />
<copy todir="${basedir}/site/thumbs">
@@ -187,6 +195,9 @@
<arg value="--alias" />
<arg value="index=overview" />
<arg value="--alias" />
<arg value="properties=gitblit.properties" />
<arg value="--substitute" />
<arg value="%VERSION%=${gb.version}" />
@@ -199,9 +210,13 @@
<arg value="--substitute" />
<arg value="%JGIT%=${jgit.version}" />
<arg value="--load" />
<arg value="%PROPERTIES%=${basedir}/distrib/gitblit.properties" />
</java>
<!-- Cleanup -->
<!-- Cleanup -->
<delete dir="${project.build.dir}" />
</target>
</project>

+ 40
- 12
distrib/gitblit.properties View File

@@ -3,18 +3,22 @@
#
# Allow push/pull over http/https with JGit servlet
# Changing this value requires a server restart.
git.enableGitServlet = true
# Base folder for repositories
# Changing this value requires a server restart.
# Use forward slashes even on Windows!!
# e.g. c:/gitrepos
git.repositoriesFolder = git
# Export all repositories
# Changing this value requires a server restart.
# if false, each exported repository must have a .git/git-daemon-export-ok file
git.exportAll = true
# Search repositories folder for nested repositories
# e.g. /libraries/mylibrary.git
# e.g. c:/gitrepos/libraries/mylibrary.git
git.nestedRepositories = true
#
@@ -22,12 +26,15 @@ git.nestedRepositories = true
#
# Require authentication to see everything but the admin pages
# Changing this value requires a server restart.
web.authenticateViewPages = false
# Require admin authentication for the admin functions and pages
# Changing this value requires a server restart.
web.authenticateAdminPages = true
# Simple user realm file to authenticate users
# Changing this value requires a server restart.
realm.realmFile = users.properties
# How to store passwords.
@@ -44,10 +51,11 @@ realm.minPasswordLength = 5
# If blank Gitblit is displayed.
web.siteName =
# If web.authenticate=true, users with "admin" role can create repositories,
# create users, and edit repository metadata (owner, description, etc)
# If web.authenticateAdminPages=true, users with "admin" role can create
# repositories, create users, and edit repository metadata.
#
# If web.authenticate=false, any user can execute the aforementioned functions.
# If web.authenticateAdminPages=false, any user can execute the aforementioned
# functions.
web.allowAdministration = true
# Allow dyanamic zip downloads.
@@ -60,20 +68,23 @@ web.repositoriesMessage = gitblit
# Use the client timezone when formatting dates.
# This uses AJAX to determine the browser's timezone.
# Changing this value requires a server restart.
web.useClientTimezone = false
# Date and Time formats
# http://download.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html
web.datestampShortFormat = yyyy-MM-dd
web.datetimestampLongFormat = EEEE, MMMM d, yyyy h:mm a z
# Show other URLs on the summary page for accessing your git repositories
# Use spaces to separate urls. {0} is the token for the repository name.
# e.g.
# web.otherUrls = ssh://localhost/git/{0} git://localhost/git/{0}
web.otherUrls =
# Choose how to present the repositories list.
# grouped = group nested/subfolder repositories together (no sorting)
# flat = flat list of repositories (sorting allowed)
# grouped = group nested/subfolder repositories together (no sorting)
# flat = flat list of repositories (sorting allowed)
web.repositoryListType = grouped
# If using a grouped repository list and there are repositories at the
@@ -92,7 +103,7 @@ web.showEmailAddresses = true
web.showSearchTypeSelection = false
# Generates a line graph of repository activity over time on the Summary page.
# This is a real-time graph so generation may be expensive.
# This uses the Google Charts API.
web.generateActivityGraph = true
# The number of commits to display on the summary page
@@ -108,22 +119,27 @@ web.summaryRefsCount = 5
web.itemsPerPage = 50
# Registered extensions for google-code-prettify
# (case-insensitive)
web.prettyPrintExtensions = c cpp cs css htm html java js php pl prefs properties py rb sh sql xml vb
# Registered extensions for markdown transformation
web.markdownExtensions = md mkd markdown
# (CASE-SENSITIVE)
web.markdownExtensions = md mkd markdown MD MKD
# Image extensions
# (case-insensitive)
web.imageExtensions = bmp jpg gif png
# Registered extensions for binary blobs
# (case-insensitive)
web.binaryExtensions = jar pdf tar.gz zip
# Aggressive heap management will run the garbage collector on every generated
# page. This slows down page generation but improves heap consumption.
# page. This slows down page generation a little but improves heap consumption.
web.aggressiveHeapManagement = true
# Run the webapp in debug mode
# Changing this value requires a server restart.
web.debugMode = false
# Enable/disable global regex substitutions (i.e. shared across repositories)
@@ -141,9 +157,21 @@ regex.global = true
#
# Server Settings
#
# Changing any of these values requires a server restart.
# The temporary folder to decompress the gitblit webapp.
server.tempFolder = temp
# The common log4j logging pattern
# http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html
server.log4jPattern = %-5p %d{MM-dd HH:mm:ss.SSS} %-20.20c{1} %m%n
# Alternatively, you may specify a logging pattern for your OS.
# If the os pattern is blank, the common pattern is used.
# This windows pattern fits (mostly) within the fixed bounds of a command prompt.
server.log4jPattern.windows = %-5p %m%n
server.log4jPattern.linux =
@@ -162,13 +190,13 @@ server.httpsPort = 443
# Specify the interface for Jetty to bind the standard connector.
# You may specify an ip or an empty value to bind to all interfaces.
# Specifying localhost will result in Git:Blit ONLY listening to requests to
# Specifying localhost will result in Gitblit ONLY listening to requests to
# localhost.
server.httpBindInterface = localhost
# Specify the interface for Jetty to bind the secure connector.
# You may specify an ip or an empty value to bind to all interfaces.
# Specifying localhost will result in Git:Blit ONLY listening to requests to
# Specifying localhost will result in Gitblit ONLY listening to requests to
# localhost.
server.httpsBindInterface = localhost
@@ -176,7 +204,7 @@ server.httpsBindInterface = localhost
# Keystore password and certificate password must match.
# This is provided for convenience, its probably more secure to set this value
# using the --storePassword command line parameter.
server.storePassword = dosomegit
server.storePassword = gitblit
# Port for shutdown monitor to listen on.
server.shutdownPort = 8081

+ 7
- 4
docs/00_index.mkd View File

@@ -107,10 +107,10 @@ The following dependencies are automatically downloaded from the Apache Maven re
- [JSch - Java Secure Channel](http://www.jcraft.com/jsch) (BSD)
- [JUnit](http://junit.org) (Common Public License)
## Building
## Building from Source
[Eclipse](http://eclipse.org) is recommended for development as the project settings are preconfigured.
Additionally, [Google CodePro AnalytiX](http://code.google.com/javadevtools), [eclipse-cs](http://eclipse-cs.sourceforge.net), and [FindBugs](http://findbugs.sourceforge.net) are recommended development tools.
Additionally, [Google CodePro AnalytiX](http://code.google.com/javadevtools), [eclipse-cs](http://eclipse-cs.sourceforge.net), [FindBugs](http://findbugs.sourceforge.net), and [EclEmma](http://www.eclemma.org) are recommended development tools.
1. Clone the git repository from [Github][gitbltsrc].
2. Import the gitblit project into your Eclipse workspace.<br/>
@@ -118,8 +118,11 @@ Additionally, [Google CodePro AnalytiX](http://code.google.com/javadevtools), [e
3. Using Ant, execute the `build.xml` script in the project root.<br/>
*This will download all necessary build dependencies and will also generate the Keys class for accessing settings.*
4. Select your gitblit project root and **Refresh** the project, this should correct all build problems.
5. Review the settings in `gitblit.properties` in your project root.<br/>
Make sure you set an appropriate value for *git.repositoriesFolder*.
5. Using JUnit, execute the `com.gitblit.tests.GitBlitSuite` test suite.<br/>
*This will clone some repositories from the web and run through the unit tests.*
5. Review the settings in `gitblit.properties` in your project root.
- By default, the *git.repositoriesFolder* points to the repositories cloned by the test suite.<br/>
- If running on Linux you may have to change the served port(s) to > 1024 unless you are developing as the root user.
6. Execute the *com.gitblit.Launcher* class to start Gitblit.
[jgit]: http://eclipse.org/jgit "Eclipse JGit Site"

+ 21
- 2
docs/00_setup.mkd View File

@@ -1,4 +1,4 @@
## Setup and Configuration
## Server Setup and Configuration
1. Download and unzip [Gitblit %VERSION%](http://gitblit.com/%DISTRIBUTION%).<br/>
*Its best to eliminate spaces in the path name as that can cause troubleshooting headaches.*
@@ -74,4 +74,23 @@ Set the *JVM* variable in the script to the location of your Java Virtual Machin
**Example**
java -jar gitblit.jar --realmFile c:\myrealm.txt --storePassword something
java -jar gitblit.jar --realmFile c:\myrealm.txt --storePassword something
## Client Setup and Configuration
### Https with Self-Signed Certificates
You must tell Git not to verify the self-signed certificate in order to perform any remote Git operations.
- Eclipse/EGit
1. Window->Preferences->Team->Git->Configuration
2. Click the *New Entry* button
3. <pre>Key = *http.sslVerify*
Value = *false*</pre>
- Command-line Git ([Git-Config Manual Page](http://www.kernel.org/pub/software/scm/git/docs/git-config.html))
<pre>git-config --global --bool --add http.sslVerify false</pre>
### Cloning an Access Restricted Repository
- Eclipse/Egit<br/>Nothing special to configure, EGit figures out everything.
<pre>https://yourserver/git/your/repository</pre>
- Command-line Git<br/>*My testing indicates that your username must be embedded in the url. YMMV.*
<pre>https://username@yourserver/git/your/repository</pre>

+ 0
- 18
docs/01_eclipse.mkd View File

@@ -1,18 +0,0 @@
## Eclipse Tips
### Do Not Verify Self-Signed Certificates
If you are using a self-signed certificate, like the one that is automatically generated by Gitblit, you have to tell Eclipse/EGit to ignore certificate verification errors.
![sslverify](sslverify.png "http.sslVerify setting")
![sslverify2](sslverify2.png "Adding http.sslVerify setting")
### Pushing a New Project to a New Gitblit Repository
1. Project Root->Team->Share->Git
Create a Git repository inside the project
### Pushing a Git-Controlled Project to another Gitblit Repository
1. Project Root->Team->Remote->Push
2. Enter the URL information of the repository
3. In the Refspec dialog click the buttons named "All all branches spec" and "All all tags spec"

+ 34
- 9
docs/01_faq.mkd View File

@@ -1,10 +1,31 @@
## Frequently Asked Questions
## Troubleshooting
### Eclipse/Egit/Git complains that it "can't open upload pack"?
There are a few ways this can occur:
1. You are using https with a self-signed certificate and you **did not** configure *http.sslVerify=false*
1. Window->Preferences->Team->Git->Configuration
2. Click the *New Entry* button
3. <pre>Key = *http.sslVerify*
Value = *false*</pre>
2. The repository is clone-restricted and you don't have access.
3. The repository is clone-restricted and your password changed.
4. A regression in Gitblit. :(
### Why can't I access Gitblit from another machine?
Please check *server.httpBindInterface* and *server.httpsBindInterface* in `gitblit.properties`.
### How do I run Gitblit on port 80 or 443 in Linux?
Linux requires root permissions to serve on ports < 1024.<br/>
Run the server as *root* (security concern) or change the ports you are serving to 8080 (http) and/or 8443 (https).
## General Interest Questions
### Gitblit? What kind of name is that?
Its a phonetic play on [bitblt][bitblt] which is an image processing operation meaning *bit-block transfer*.
It's a phonetic play on [bitblt][bitblt] which is an image processing operation meaning *bit-block transfer*.
### Why use Gitblit?
Its small. Its portable. Its easy to manage.
It's a small tool that allows you to easily manage shared repositories and doesn't require alot of setup or git kung-foo.
### Do I need real Git?
No. Gitblit is based on [JGit][jgit] which is a pure Java implementation of the [Git version control system][git].<br/>
@@ -13,11 +34,16 @@ Everything you need for Gitblit is either in the zip distribution file or automa
### Do I need a JDK or can I use a JRE?
Gitblit will run just fine with a JRE. Gitblit can optionally use `keytool` from the JDK to generate self-signed certificates, but normally Gitblit uses [BouncyCastle][bouncycastle] for that need.
### I want to deploy Gitblit into my own servlet container. Where is the WAR?
At this time there is no WAR build available.
### Does Gitblit use a database to store its data?
No. Gitblit stores its repository configuration information within the `.git/config` file and its user information in `users.properties` or whatever filename is configured in `gitblit.properties`.
### I want to deploy Gitblit into my own servlet container. Where is the WAR?
At this time there is no WAR build available.
### Can I manually edit users.properties, gitblit.properties, or .git/config?
Yes. You can manually manipulate all of them and (most) changes will be immediately available to Gitblit.<br/>Exceptions to this are noted in `gitblit.properties`.
*NOTE:* Care must be taken to preserve the relationship between user roles and repository names.<br/>Please see the [setup](/setup.html) page for details.
### Can I restrict access to paths within a repository?
No. Access restrictions apply to the repository as a whole.
@@ -26,7 +52,7 @@ Gitblit's simple authentication and authorization mechanism can be used to facil
### Why doesn't Gitblit support SSH?
Gitblit could integrate [Apache Mina][mina] to provide SSH access. However, doing so violates Gitblit's first design principle: [KISS](http://en.wikipedia.org/wiki/KISS_principle).<br/>
SSH support requires creating, exchanging, and managing SSH keys. While this is possible, JGit's SmartHTTP implementation is a simpler and cleaner transport mechanism.
SSH support requires creating, exchanging, and managing SSH keys. While this is possible, JGit's SmartHTTP implementation is a simpler and universal transport mechanism.
You might consider running [Gerrit](http://gerrit.googlecode.org) which does integrate [Apache Mina][mina] and supports SSH or you might consider serving [Git][git] on Linux which would offer real SSH support and also allow use of [many other compelling Git solutions](https://git.wiki.kernel.org/index.php/InterfacesFrontendsAndTools).
@@ -40,9 +66,8 @@ To search by *author* or *committer* use the following syntax in the search box:
Alternatively, you could enable the search type dropdown list in your `gitblit.properties` file.
### How do I run Gitblit on port 80 or 443 in Linux?
Linux requires root permissions to serve on ports < 1024.<br/>
Run the server as *root* (security concern) or change the ports you are serving to 8080 (http) and/or 8443 (https).
### I see a disabled "blame" link. How do I enable it?
Currently blame is not implemented. Those links are placeholders to remind me where Gitweb offers blame.
[bitblt]: http://en.wikipedia.org/wiki/Bit_blit "Wikipedia Bitblt"
[jgit]: http://eclipse.org/jgit "Eclipse JGit Site"

+ 4
- 0
docs/02_properties.mkd View File

@@ -0,0 +1,4 @@
## gitblit.properties
<pre class='prettyprint'>
%PROPERTIES%
</pre>

+ 5
- 1
docs/page_header.html View File

@@ -8,6 +8,7 @@
<meta name="ROBOTS" content="INDEX, NOFOLLOW">
<meta http-equiv="imagetoolbar" content="no" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="keywords" content="java git server" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script>
@@ -23,8 +24,11 @@
list-style: none;
'}'
</style>
<script type="text/javascript" src="prettify/prettify.js"></script>
<link href="prettify/prettify.css" type="text/css" rel="stylesheet" />
</head>
<body>
<body onload="prettyPrint()">
<div class="page_header">
<a title="gitblit homepage" href="http://gitblit.com/">
<img src="./gitblt_25.png" width="79" height="25" alt="gitblit" class="logo"/>

BIN
docs/sslverify.png View File


BIN
docs/sslverify2.png View File


+ 4
- 5
src/com/gitblit/Build.java View File

@@ -80,7 +80,7 @@ public class Build {
downloadFromApache(MavenObject.MARKDOWNPAPERS, BuildType.COMPILETIME);
downloadFromApache(MavenObject.BOUNCYCASTLE, BuildType.COMPILETIME);
downloadFromApache(MavenObject.BOUNCYCASTLE_MAIL, BuildType.COMPILETIME);
downloadFromApache(MavenObject.JSCH, BuildType.RUNTIME);
downloadFromApache(MavenObject.JSCH, BuildType.COMPILETIME);
@@ -389,10 +389,9 @@ public class Build {
"384058ca906dffb8b8708c2db8849c9754359b28",
"7b026658ed8de2eccc2d11d647d43d7c84a56911",
"6c19e37b3caafd70c1b7b024ae1858c725181688");
public static final MavenObject JSCH = new MavenObject("JSch", "com/jcraft",
"jsch", "0.1.44-1", 214000, 211000, 413000,
"2e9ae08de5a71bd0e0d3ba2558598181bfa71d4e",
public static final MavenObject JSCH = new MavenObject("JSch", "com/jcraft", "jsch",
"0.1.44-1", 214000, 211000, 413000, "2e9ae08de5a71bd0e0d3ba2558598181bfa71d4e",
"e528f593b19b04d500992606f58b87fcfded8883",
"d0ffadd0a4ab909d94a577b5aad43c13b617ddcb");

+ 18
- 4
src/com/gitblit/BuildSite.java View File

@@ -37,6 +37,7 @@ import com.beust.jcommander.Parameter;
import com.beust.jcommander.ParameterException;
import com.beust.jcommander.Parameters;
import com.gitblit.utils.MarkdownUtils;
import com.gitblit.utils.StringUtils;
public class BuildSite {
@@ -83,8 +84,8 @@ public class BuildSite {
sb.setLength(sb.length() - 3);
sb.trimToSize();
String htmlHeader = readContent(new File(params.pageHeader));
String htmlFooter = readContent(new File(params.pageFooter));
String htmlHeader = readContent(new File(params.pageHeader), "\n");
String htmlFooter = readContent(new File(params.pageFooter), "\n");
final String links = sb.toString();
final String header = MessageFormat.format(htmlHeader, Constants.FULL_NAME, links);
final String date = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
@@ -101,6 +102,13 @@ public class BuildSite {
String[] kv = token.split("=");
content = content.replace(kv[0], kv[1]);
}
for (String alias : params.loads) {
String[] kv = alias.split("=");
String loadedContent = readContent(new File(kv[1]), "\n");
loadedContent = StringUtils.escapeForHtml(loadedContent, false);
loadedContent = StringUtils.breakLinesForHtml(loadedContent);
content = content.replace(kv[0], loadedContent);
}
OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(new File(
destinationFolder, fileName)), Charset.forName("UTF-8"));
writer.write(header);
@@ -115,7 +123,7 @@ public class BuildSite {
}
}
private static String readContent(File file) {
private static String readContent(File file, String lineEnding) {
StringBuilder sb = new StringBuilder();
try {
InputStreamReader is = new InputStreamReader(new FileInputStream(file),
@@ -124,6 +132,9 @@ public class BuildSite {
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line);
if (lineEnding != null) {
sb.append(lineEnding);
}
}
reader.close();
} catch (Throwable t) {
@@ -171,8 +182,11 @@ public class BuildSite {
@Parameter(names = { "--alias" }, description = "Filename=Linkname aliases", required = false)
public List<String> aliases = new ArrayList<String>();
@Parameter(names = { "--substitute" }, description = "@TOKEN@=value", required = false)
@Parameter(names = { "--substitute" }, description = "%TOKEN%=value", required = false)
public List<String> substitutions = new ArrayList<String>();
@Parameter(names = { "--load" }, description = "%TOKEN%=filename", required = false)
public List<String> loads = new ArrayList<String>();
}
}

+ 2
- 0
src/com/gitblit/Constants.java View File

@@ -37,6 +37,8 @@ public class Constants {
public static final String ZIP_SERVLET_PATH = "/zip/";
public static final String BORDER = "***********************************************************";
public static enum AccessRestrictionType {
NONE, PUSH, CLONE, VIEW;

+ 1
- 1
src/com/gitblit/DownloadZipServlet.java View File

@@ -26,9 +26,9 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.gitblit.Constants.AccessRestrictionType;
import com.gitblit.models.RepositoryModel;
import com.gitblit.utils.JGitUtils;
import com.gitblit.utils.StringUtils;
import com.gitblit.wicket.models.RepositoryModel;
public class DownloadZipServlet extends HttpServlet {

+ 8
- 5
src/com/gitblit/GitBlit.java View File

@@ -35,10 +35,10 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.gitblit.Constants.AccessRestrictionType;
import com.gitblit.models.RepositoryModel;
import com.gitblit.models.UserModel;
import com.gitblit.utils.JGitUtils;
import com.gitblit.utils.StringUtils;
import com.gitblit.wicket.models.RepositoryModel;
import com.gitblit.wicket.models.UserModel;
public class GitBlit implements ServletContextListener {
@@ -151,8 +151,8 @@ public class GitBlit implements ServletContextListener {
r = repositoryResolver.open(null, repositoryName);
} catch (RepositoryNotFoundException e) {
r = null;
logger.error("GitBlit.getRepository(String) failed to find repository "
+ repositoryName);
logger.error("GitBlit.getRepository(String) failed to find "
+ new File(repositoriesFolder, repositoryName).getAbsolutePath());
} catch (ServiceNotEnabledException e) {
r = null;
e.printStackTrace();
@@ -186,6 +186,9 @@ public class GitBlit implements ServletContextListener {
public RepositoryModel getRepositoryModel(String repositoryName) {
Repository r = getRepository(repositoryName);
if (r == null) {
return null;
}
RepositoryModel model = new RepositoryModel();
model.name = repositoryName;
model.hasCommits = JGitUtils.hasCommits(r);
@@ -315,7 +318,7 @@ public class GitBlit implements ServletContextListener {
}
public void configureContext(IStoredSettings settings) {
logger.info("Using configuration from " + settings.toString());
logger.info("Reading configuration from " + settings.toString());
this.storedSettings = settings;
repositoriesFolder = new File(settings.getString(Keys.git.repositoriesFolder, "repos"));
exportAll = settings.getBoolean(Keys.git.exportAll, true);

+ 21
- 18
src/com/gitblit/GitBlitServer.java View File

@@ -65,12 +65,8 @@ import com.gitblit.wicket.GitBlitWebApp;
public class GitBlitServer {
private static final String BORDER = "***********************************************************";
private static Logger logger;
private static final FileSettings FILESETTINGS = new FileSettings();
public static void main(String[] args) {
Params params = new Params();
JCommander jc = new JCommander(params);
@@ -91,9 +87,9 @@ public class GitBlitServer {
}
private static void usage(JCommander jc, ParameterException t) {
System.out.println(BORDER);
System.out.println(Constants.BORDER);
System.out.println(Constants.getGitBlitVersion());
System.out.println(BORDER);
System.out.println(Constants.BORDER);
System.out.println();
if (t != null) {
System.out.println(t.getMessage());
@@ -129,18 +125,19 @@ public class GitBlitServer {
* Start Server.
*/
private static void start(Params params) {
String pattern = FILESETTINGS.getString(Keys.server.log4jPattern,
FileSettings settings = params.FILESETTINGS;
String pattern = settings.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);
String winPattern = settings.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);
String linuxPattern = settings.getString(Keys.server.log4jPattern_linux, pattern);
if (!StringUtils.isEmpty(linuxPattern)) {
pattern = linuxPattern;
}
@@ -151,9 +148,9 @@ public class GitBlitServer {
rootLogger.addAppender(new ConsoleAppender(layout));
logger = LoggerFactory.getLogger(GitBlitServer.class);
logger.info(BORDER);
logger.info(Constants.BORDER);
logger.info(Constants.getGitBlitVersion());
logger.info(BORDER);
logger.info(Constants.BORDER);
String osname = System.getProperty("os.name");
String osversion = System.getProperty("os.version");
@@ -163,7 +160,7 @@ public class GitBlitServer {
List<Connector> connectors = new ArrayList<Connector>();
if (params.port > 0) {
Connector httpConnector = createConnector(params.useNIO, params.port);
String bindInterface = FILESETTINGS.getString(Keys.server.httpBindInterface, null);
String bindInterface = settings.getString(Keys.server.httpBindInterface, null);
if (!StringUtils.isEmpty(bindInterface)) {
logger.warn(MessageFormat.format("Binding connector on port {0} to {1}",
params.port, bindInterface));
@@ -182,7 +179,7 @@ public class GitBlitServer {
if (keystore.exists()) {
Connector secureConnector = createSSLConnector(keystore, params.storePassword,
params.useNIO, params.securePort);
String bindInterface = FILESETTINGS.getString(Keys.server.httpsBindInterface, null);
String bindInterface = settings.getString(Keys.server.httpsBindInterface, null);
if (!StringUtils.isEmpty(bindInterface)) {
logger.warn(MessageFormat.format("Binding ssl connector on port {0} to {1}",
params.securePort, bindInterface));
@@ -246,11 +243,11 @@ public class GitBlitServer {
// Git Servlet
ServletHolder gitServlet = null;
String gitServletPathSpec = Constants.GIT_SERVLET_PATH + "*";
if (FILESETTINGS.getBoolean(Keys.git.enableGitServlet, true)) {
if (settings.getBoolean(Keys.git.enableGitServlet, true)) {
gitServlet = rootContext.addServlet(GitBlitServlet.class, gitServletPathSpec);
gitServlet.setInitParameter("base-path", params.repositoriesFolder);
gitServlet.setInitParameter("export-all",
FILESETTINGS.getBoolean(Keys.git.exportAll, true) ? "1" : "0");
settings.getBoolean(Keys.git.exportAll, true) ? "1" : "0");
}
// Login Service
@@ -300,12 +297,14 @@ public class GitBlitServer {
handler = rootContext;
}
logger.info("Git repositories folder " + new File(params.repositoriesFolder).getAbsolutePath());
// Set the server's contexts
server.setHandler(handler);
// Setup the GitBlit context
GitBlit gitblit = GitBlit.self();
gitblit.configureContext(FILESETTINGS);
gitblit.configureContext(settings);
rootContext.addEventListener(gitblit);
// Start the Server
@@ -385,6 +384,8 @@ public class GitBlitServer {
private final ServerSocket socket;
private final Server server;
private final Logger logger = LoggerFactory.getLogger(ShutdownMonitorThread.class);
public ShutdownMonitorThread(Server server, Params params) {
this.server = server;
@@ -408,9 +409,9 @@ public class GitBlitServer {
BufferedReader reader = new BufferedReader(new InputStreamReader(
accept.getInputStream()));
reader.readLine();
logger.info(BORDER);
logger.info(Constants.BORDER);
logger.info("Stopping " + Constants.NAME);
logger.info(BORDER);
logger.info(Constants.BORDER);
server.stop();
server.setStopAtShutdown(false);
accept.close();
@@ -423,6 +424,8 @@ public class GitBlitServer {
@Parameters(separators = " ")
private static class Params {
private static final FileSettings FILESETTINGS = new FileSettings();
/*
* Server parameters

+ 1
- 1
src/com/gitblit/GitBlitServlet.java View File

@@ -27,7 +27,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.gitblit.Constants.AccessRestrictionType;
import com.gitblit.wicket.models.RepositoryModel;
import com.gitblit.models.RepositoryModel;
public class GitBlitServlet extends GitServlet {

+ 1
- 1
src/com/gitblit/ILoginService.java View File

@@ -17,7 +17,7 @@ package com.gitblit;
import java.util.List;
import com.gitblit.wicket.models.UserModel;
import com.gitblit.models.UserModel;
public interface ILoginService {

+ 1
- 1
src/com/gitblit/JettyLoginService.java View File

@@ -38,7 +38,7 @@ import org.eclipse.jetty.util.log.Log;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.gitblit.wicket.models.UserModel;
import com.gitblit.models.UserModel;
public class JettyLoginService extends MappedLoginService implements ILoginService {

+ 3
- 3
src/com/gitblit/MakeCertificate.java View File

@@ -44,9 +44,7 @@ import com.beust.jcommander.Parameters;
import com.gitblit.utils.TimeUtils;
public class MakeCertificate {
private static final FileSettings FILESETTINGS = new FileSettings();
private static final String BC = org.bouncycastle.jce.provider.BouncyCastleProvider.PROVIDER_NAME;
public static void main(String... args) {
@@ -158,6 +156,8 @@ public class MakeCertificate {
@Parameters(separators = " ")
private static class Params {
private static final FileSettings FILESETTINGS = new FileSettings();
@Parameter(names = { "--alias" }, description = "Server alias", required = true)
public String alias;

src/com/gitblit/wicket/models/Metric.java → src/com/gitblit/models/Metric.java View File

@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.gitblit.wicket.models;
package com.gitblit.models;
import java.io.Serializable;

src/com/gitblit/wicket/models/PathModel.java → src/com/gitblit/models/PathModel.java View File

@@ -13,13 +13,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.gitblit.wicket.models;
package com.gitblit.models;
import java.io.Serializable;
import org.eclipse.jgit.diff.DiffEntry.ChangeType;
import com.gitblit.utils.JGitUtils;
import org.eclipse.jgit.lib.FileMode;
public class PathModel implements Serializable, Comparable<PathModel> {
@@ -41,7 +40,7 @@ public class PathModel implements Serializable, Comparable<PathModel> {
}
public boolean isTree() {
return JGitUtils.isTreeFromMode(mode);
return FileMode.TREE.equals(mode);
}
public static PathModel getParentPath(String basePath, String commitId) {

src/com/gitblit/wicket/models/RefModel.java → src/com/gitblit/models/RefModel.java View File

@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.gitblit.wicket.models;
package com.gitblit.models;
import java.io.Serializable;
import java.util.Date;
@@ -22,8 +22,6 @@ import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.revwalk.RevCommit;
import com.gitblit.utils.JGitUtils;
public class RefModel implements Serializable, Comparable<RefModel> {
private static final long serialVersionUID = 1L;
@@ -38,7 +36,7 @@ public class RefModel implements Serializable, Comparable<RefModel> {
}
public Date getDate() {
return JGitUtils.getCommitDate(commit);
return new Date(commit.getCommitTime() * 1000L);
}
public String getName() {

src/com/gitblit/wicket/models/RepositoryModel.java → src/com/gitblit/models/RepositoryModel.java View File

@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.gitblit.wicket.models;
package com.gitblit.models;
import java.io.Serializable;
import java.util.Date;
@@ -23,7 +23,7 @@ import com.gitblit.Constants.AccessRestrictionType;
public class RepositoryModel implements Serializable {
private static final long serialVersionUID = 1L;
// field names are reflectively mapped in EditRepository page
public String name;
public String description;

src/com/gitblit/wicket/models/TicketModel.java → src/com/gitblit/models/TicketModel.java View File

@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.gitblit.wicket.models;
package com.gitblit.models;
import java.io.Serializable;
import java.text.ParseException;
@@ -37,12 +37,6 @@ public class TicketModel implements Serializable, Comparable<TicketModel> {
public List<Comment> comments;
public List<String> tags;
public TicketModel() {
state = "open";
comments = new ArrayList<Comment>();
tags = new ArrayList<String>();
}
public TicketModel(String ticketName) throws ParseException {
state = "";
name = ticketName;

src/com/gitblit/wicket/models/UserModel.java → src/com/gitblit/models/UserModel.java View File

@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.gitblit.wicket.models;
package com.gitblit.models;
import java.io.Serializable;
import java.util.ArrayList;

+ 149
- 0
src/com/gitblit/utils/DiffUtils.java View File

@@ -0,0 +1,149 @@
package com.gitblit.utils;
import java.io.ByteArrayOutputStream;
import java.util.List;
import org.eclipse.jgit.diff.DiffEntry;
import org.eclipse.jgit.diff.DiffFormatter;
import org.eclipse.jgit.diff.RawTextComparator;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevTree;
import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.treewalk.TreeWalk;
import org.eclipse.jgit.treewalk.filter.TreeFilter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.gitblit.utils.JGitUtils.DiffOutputType;
public class DiffUtils {
private static final Logger LOGGER = LoggerFactory.getLogger(DiffUtils.class);
public static String getCommitDiff(Repository r, RevCommit commit, DiffOutputType outputType) {
return getCommitDiff(r, null, commit, null, outputType);
}
public static String getCommitDiff(Repository r, RevCommit commit, String path,
DiffOutputType outputType) {
return getCommitDiff(r, null, commit, path, outputType);
}
public static String getCommitDiff(Repository r, RevCommit baseCommit, RevCommit commit,
DiffOutputType outputType) {
return getCommitDiff(r, baseCommit, commit, null, outputType);
}
public static String getCommitDiff(Repository r, RevCommit baseCommit, RevCommit commit,
String path, DiffOutputType outputType) {
try {
RevTree baseTree;
if (baseCommit == null) {
final RevWalk rw = new RevWalk(r);
RevCommit parent = rw.parseCommit(commit.getParent(0).getId());
rw.dispose();
baseTree = parent.getTree();
} else {
baseTree = baseCommit.getTree();
}
RevTree commitTree = commit.getTree();
final TreeWalk walk = new TreeWalk(r);
walk.reset();
walk.setRecursive(true);
walk.addTree(baseTree);
walk.addTree(commitTree);
walk.setFilter(TreeFilter.ANY_DIFF);
final ByteArrayOutputStream os = new ByteArrayOutputStream();
RawTextComparator cmp = RawTextComparator.DEFAULT;
DiffFormatter df;
switch (outputType) {
case GITWEB:
df = new GitWebDiffFormatter(os);
break;
case GITBLIT:
df = new GitBlitDiffFormatter(os);
break;
case PLAIN:
default:
df = new DiffFormatter(os);
break;
}
df.setRepository(r);
df.setDiffComparator(cmp);
df.setDetectRenames(true);
List<DiffEntry> diffs = df.scan(baseTree, commitTree);
if (path != null && path.length() > 0) {
for (DiffEntry diff : diffs) {
if (diff.getNewPath().equalsIgnoreCase(path)) {
df.format(diff);
break;
}
}
} else {
df.format(diffs);
}
String diff;
if (df instanceof GitWebDiffFormatter) {
// workaround for complex private methods in DiffFormatter
diff = ((GitWebDiffFormatter) df).getHtml();
} else {
diff = os.toString();
}
df.flush();
return diff;
} catch (Throwable t) {
LOGGER.error("failed to generate commit diff!", t);
}
return null;
}
public static String getCommitPatch(Repository r, RevCommit baseCommit, RevCommit commit,
String path) {
try {
RevTree baseTree;
if (baseCommit == null) {
final RevWalk rw = new RevWalk(r);
RevCommit parent = rw.parseCommit(commit.getParent(0).getId());
baseTree = parent.getTree();
} else {
baseTree = baseCommit.getTree();
}
RevTree commitTree = commit.getTree();
final TreeWalk walk = new TreeWalk(r);
walk.reset();
walk.setRecursive(true);
walk.addTree(baseTree);
walk.addTree(commitTree);
walk.setFilter(TreeFilter.ANY_DIFF);
final ByteArrayOutputStream os = new ByteArrayOutputStream();
RawTextComparator cmp = RawTextComparator.DEFAULT;
PatchFormatter df = new PatchFormatter(os);
df.setRepository(r);
df.setDiffComparator(cmp);
df.setDetectRenames(true);
List<DiffEntry> diffs = df.scan(baseTree, commitTree);
if (path != null && path.length() > 0) {
for (DiffEntry diff : diffs) {
if (diff.getNewPath().equalsIgnoreCase(path)) {
df.format(diff);
break;
}
}
} else {
df.format(diffs);
}
String diff = df.getPatch(commit);
df.flush();
return diff;
} catch (Throwable t) {
LOGGER.error("failed to generate commit diff!", t);
}
return null;
}
}

+ 14
- 133
src/com/gitblit/utils/JGitUtils.java View File

@@ -73,12 +73,12 @@ import org.eclipse.jgit.util.io.DisabledOutputStream;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.gitblit.wicket.models.Metric;
import com.gitblit.wicket.models.PathModel;
import com.gitblit.wicket.models.PathModel.PathChangeModel;
import com.gitblit.wicket.models.RefModel;
import com.gitblit.wicket.models.TicketModel;
import com.gitblit.wicket.models.TicketModel.Comment;
import com.gitblit.models.Metric;
import com.gitblit.models.PathModel;
import com.gitblit.models.RefModel;
import com.gitblit.models.TicketModel;
import com.gitblit.models.PathModel.PathChangeModel;
import com.gitblit.models.TicketModel.Comment;
public class JGitUtils {
@@ -183,11 +183,18 @@ public class JGitUtils {
}
public static boolean hasCommits(Repository r) {
return new File(r.getDirectory(), Constants.R_HEADS).list().length > 0;
if (r != null && r.getDirectory().exists()) {
return new File(r.getDirectory(), Constants.R_HEADS).list().length > 0;
}
return false;
}
public static Date getLastChange(Repository r) {
if (!hasCommits(r)) {
// null repository
if (r == null) {
return new Date(0);
}
// fresh repository
return new Date(r.getDirectory().lastModified());
}
@@ -460,132 +467,6 @@ public class JGitUtils {
}
}
public static String getCommitDiff(Repository r, RevCommit commit, DiffOutputType outputType) {
return getCommitDiff(r, null, commit, null, outputType);
}
public static String getCommitDiff(Repository r, RevCommit commit, String path,
DiffOutputType outputType) {
return getCommitDiff(r, null, commit, path, outputType);
}
public static String getCommitDiff(Repository r, RevCommit baseCommit, RevCommit commit,
DiffOutputType outputType) {
return getCommitDiff(r, baseCommit, commit, null, outputType);
}
public static String getCommitDiff(Repository r, RevCommit baseCommit, RevCommit commit,
String path, DiffOutputType outputType) {
try {
RevTree baseTree;
if (baseCommit == null) {
final RevWalk rw = new RevWalk(r);
RevCommit parent = rw.parseCommit(commit.getParent(0).getId());
rw.dispose();
baseTree = parent.getTree();
} else {
baseTree = baseCommit.getTree();
}
RevTree commitTree = commit.getTree();
final TreeWalk walk = new TreeWalk(r);
walk.reset();
walk.setRecursive(true);
walk.addTree(baseTree);
walk.addTree(commitTree);
walk.setFilter(TreeFilter.ANY_DIFF);
final ByteArrayOutputStream os = new ByteArrayOutputStream();
RawTextComparator cmp = RawTextComparator.DEFAULT;
DiffFormatter df;
switch (outputType) {
case GITWEB:
df = new GitWebDiffFormatter(os);
break;
case GITBLIT:
df = new GitBlitDiffFormatter(os);
break;
case PLAIN:
default:
df = new DiffFormatter(os);
break;
}
df.setRepository(r);
df.setDiffComparator(cmp);
df.setDetectRenames(true);
List<DiffEntry> diffs = df.scan(baseTree, commitTree);
if (path != null && path.length() > 0) {
for (DiffEntry diff : diffs) {
if (diff.getNewPath().equalsIgnoreCase(path)) {
df.format(diff);
break;
}
}
} else {
df.format(diffs);
}
String diff;
if (df instanceof GitWebDiffFormatter) {
// workaround for complex private methods in DiffFormatter
diff = ((GitWebDiffFormatter) df).getHtml();
} else {
diff = os.toString();
}
df.flush();
return diff;
} catch (Throwable t) {
LOGGER.error("failed to generate commit diff!", t);
}
return null;
}
public static String getCommitPatch(Repository r, RevCommit baseCommit, RevCommit commit,
String path) {
try {
RevTree baseTree;
if (baseCommit == null) {
final RevWalk rw = new RevWalk(r);
RevCommit parent = rw.parseCommit(commit.getParent(0).getId());
baseTree = parent.getTree();
} else {
baseTree = baseCommit.getTree();
}
RevTree commitTree = commit.getTree();
final TreeWalk walk = new TreeWalk(r);
walk.reset();
walk.setRecursive(true);
walk.addTree(baseTree);
walk.addTree(commitTree);
walk.setFilter(TreeFilter.ANY_DIFF);
final ByteArrayOutputStream os = new ByteArrayOutputStream();
RawTextComparator cmp = RawTextComparator.DEFAULT;
PatchFormatter df = new PatchFormatter(os);
df.setRepository(r);
df.setDiffComparator(cmp);
df.setDetectRenames(true);
List<DiffEntry> diffs = df.scan(baseTree, commitTree);
if (path != null && path.length() > 0) {
for (DiffEntry diff : diffs) {
if (diff.getNewPath().equalsIgnoreCase(path)) {
df.format(diff);
break;
}
}
} else {
df.format(diffs);
}
String diff = df.getPatch(commit);
df.flush();
return diff;
} catch (Throwable t) {
LOGGER.error("failed to generate commit diff!", t);
}
return null;
}
private static PathModel getPathModel(TreeWalk walk, String basePath, RevCommit commit) {
String name;
long size = 0;

+ 4
- 2
src/com/gitblit/wicket/AuthorizationStrategy.java View File

@@ -22,7 +22,9 @@ import org.apache.wicket.authorization.strategies.page.AbstractPageAuthorization
import com.gitblit.GitBlit;
import com.gitblit.Keys;
import com.gitblit.wicket.models.UserModel;
import com.gitblit.models.UserModel;
import com.gitblit.wicket.pages.BasePage;
import com.gitblit.wicket.pages.LoginPage;
import com.gitblit.wicket.pages.RepositoriesPage;
public class AuthorizationStrategy extends AbstractPageAuthorizationStrategy implements
@@ -46,7 +48,7 @@ public class AuthorizationStrategy extends AbstractPageAuthorizationStrategy imp
}
UserModel user = session.getUser();
if (pageClass.isAnnotationPresent(AdminPage.class)) {
if (pageClass.isAnnotationPresent(RequiresAdminRole.class)) {
// admin page
if (allowAdmin) {
if (authenticateAdmin) {

+ 2
- 0
src/com/gitblit/wicket/GitBlitWebApp.java View File

@@ -34,6 +34,8 @@ import com.gitblit.wicket.pages.CommitPage;
import com.gitblit.wicket.pages.DocsPage;
import com.gitblit.wicket.pages.HistoryPage;
import com.gitblit.wicket.pages.LogPage;
import com.gitblit.wicket.pages.LoginPage;
import com.gitblit.wicket.pages.LogoutPage;
import com.gitblit.wicket.pages.MarkdownPage;
import com.gitblit.wicket.pages.PatchPage;
import com.gitblit.wicket.pages.RawPage;

+ 1
- 1
src/com/gitblit/wicket/GitBlitWebSession.java View File

@@ -22,7 +22,7 @@ import org.apache.wicket.Session;
import org.apache.wicket.protocol.http.WebSession;
import org.apache.wicket.protocol.http.request.WebClientInfo;
import com.gitblit.wicket.models.UserModel;
import com.gitblit.models.UserModel;
public final class GitBlitWebSession extends WebSession {

src/com/gitblit/wicket/AdminPage.java → src/com/gitblit/wicket/RequiresAdminRole.java View File

@@ -22,5 +22,5 @@ import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface AdminPage {
public @interface RequiresAdminRole {
}

src/com/gitblit/wicket/BasePage.html → src/com/gitblit/wicket/pages/BasePage.html View File

@@ -8,8 +8,8 @@
<wicket:head>
<title wicket:id="title">[page title]</title>
<wicket:link>
<link rel="stylesheet" type="text/css" href="resources/gitblit.css"/>
<link rel="shortcut icon" href="resources/gitblt-favicon.png" type="image/png" />
<link rel="stylesheet" type="text/css" href="/com/gitblit/wicket/resources/gitblit.css"/>
<link rel="shortcut icon" href="/com/gitblit/wicket/resources/gitblt-favicon.png" type="image/png" />
</wicket:link>
</wicket:head>
@@ -18,7 +18,7 @@
<div class="page_header">
<a title="gitblit homepage" href="http://gitblit.com/">
<wicket:link>
<img src="resources/gitblt_25.png" width="79" height="25" alt="gitblit" class="logo"/>
<img src="/com/gitblit/wicket/resources/gitblt_25.png" width="79" height="25" alt="gitblit" class="logo"/>
</wicket:link>
</a>
<span>

src/com/gitblit/wicket/BasePage.java → src/com/gitblit/wicket/pages/BasePage.java View File

@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.gitblit.wicket;
package com.gitblit.wicket.pages;
import java.util.LinkedHashMap;
import java.util.Map;
@@ -34,7 +34,9 @@ import com.gitblit.Constants;
import com.gitblit.Constants.AccessRestrictionType;
import com.gitblit.GitBlit;
import com.gitblit.Keys;
import com.gitblit.wicket.pages.SummaryPage;
import com.gitblit.wicket.GitBlitWebSession;
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.panels.LinkPanel;
public abstract class BasePage extends WebPage {

+ 3
- 3
src/com/gitblit/wicket/pages/BlobDiffPage.java View File

@@ -23,10 +23,10 @@ import org.eclipse.jgit.revwalk.RevCommit;
import com.gitblit.GitBlit;
import com.gitblit.Keys;
import com.gitblit.utils.DiffUtils;
import com.gitblit.utils.JGitUtils;
import com.gitblit.utils.JGitUtils.DiffOutputType;
import com.gitblit.utils.StringUtils;
import com.gitblit.wicket.RepositoryPage;
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.panels.CommitHeaderPanel;
import com.gitblit.wicket.panels.PathBreadcrumbsPanel;
@@ -48,13 +48,13 @@ public class BlobDiffPage extends RepositoryPage {
String diff;
if (StringUtils.isEmpty(baseObjectId)) {
// use first parent
diff = JGitUtils.getCommitDiff(r, commit, blobPath, diffType);
diff = DiffUtils.getCommitDiff(r, commit, blobPath, diffType);
add(new BookmarkablePageLink<Void>("patchLink", PatchPage.class,
WicketUtils.newPathParameter(repositoryName, objectId, blobPath)));
} else {
// base commit specified
RevCommit baseCommit = JGitUtils.getCommit(r, baseObjectId);
diff = JGitUtils.getCommitDiff(r, baseCommit, commit, blobPath, diffType);
diff = DiffUtils.getCommitDiff(r, baseCommit, commit, blobPath, diffType);
add(new BookmarkablePageLink<Void>("patchLink", PatchPage.class,
WicketUtils.newBlobDiffParameter(repositoryName, baseObjectId, objectId,
blobPath)));

+ 0
- 1
src/com/gitblit/wicket/pages/BlobPage.java View File

@@ -29,7 +29,6 @@ import org.eclipse.jgit.revwalk.RevCommit;
import com.gitblit.GitBlit;
import com.gitblit.Keys;
import com.gitblit.utils.JGitUtils;
import com.gitblit.wicket.RepositoryPage;
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.panels.CommitHeaderPanel;
import com.gitblit.wicket.panels.PathBreadcrumbsPanel;

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

@@ -17,7 +17,6 @@ package com.gitblit.wicket.pages;
import org.apache.wicket.PageParameters;
import com.gitblit.wicket.RepositoryPage;
import com.gitblit.wicket.panels.BranchesPanel;
public class BranchesPage extends RepositoryPage {

+ 4
- 4
src/com/gitblit/wicket/pages/CommitDiffPage.java View File

@@ -29,14 +29,14 @@ import org.eclipse.jgit.revwalk.RevCommit;
import com.gitblit.GitBlit;
import com.gitblit.Keys;
import com.gitblit.models.PathModel.PathChangeModel;
import com.gitblit.utils.DiffUtils;
import com.gitblit.utils.JGitUtils;
import com.gitblit.utils.JGitUtils.DiffOutputType;
import com.gitblit.wicket.LinkPanel;
import com.gitblit.wicket.RepositoryPage;
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.models.PathModel.PathChangeModel;
import com.gitblit.wicket.panels.CommitHeaderPanel;
import com.gitblit.wicket.panels.CommitLegendPanel;
import com.gitblit.wicket.panels.LinkPanel;
public class CommitDiffPage extends RepositoryPage {
@@ -47,7 +47,7 @@ public class CommitDiffPage extends RepositoryPage {
RevCommit commit = getCommit();
DiffOutputType diffType = DiffOutputType.forName(GitBlit.getString(Keys.web.diffStyle,
DiffOutputType.GITBLIT.name()));
String diff = JGitUtils.getCommitDiff(r, commit, diffType);
String diff = DiffUtils.getCommitDiff(r, commit, diffType);
List<String> parents = new ArrayList<String>();
if (commit.getParentCount() > 0) {

+ 2
- 3
src/com/gitblit/wicket/pages/CommitPage.java View File

@@ -32,14 +32,13 @@ import org.eclipse.jgit.revwalk.RevCommit;
import com.gitblit.DownloadZipServlet;
import com.gitblit.GitBlit;
import com.gitblit.Keys;
import com.gitblit.models.PathModel.PathChangeModel;
import com.gitblit.utils.JGitUtils;
import com.gitblit.utils.JGitUtils.SearchType;
import com.gitblit.wicket.LinkPanel;
import com.gitblit.wicket.RepositoryPage;
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.models.PathModel.PathChangeModel;
import com.gitblit.wicket.panels.CommitHeaderPanel;
import com.gitblit.wicket.panels.CommitLegendPanel;
import com.gitblit.wicket.panels.LinkPanel;
public class CommitPage extends RepositoryPage {

+ 2
- 3
src/com/gitblit/wicket/pages/DocsPage.java View File

@@ -27,12 +27,11 @@ import org.eclipse.jgit.lib.Repository;
import com.gitblit.GitBlit;
import com.gitblit.Keys;
import com.gitblit.models.PathModel;
import com.gitblit.utils.ByteFormat;
import com.gitblit.utils.JGitUtils;
import com.gitblit.wicket.LinkPanel;
import com.gitblit.wicket.RepositoryPage;
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.models.PathModel;
import com.gitblit.wicket.panels.LinkPanel;
public class DocsPage extends RepositoryPage {

+ 3
- 4
src/com/gitblit/wicket/pages/EditRepositoryPage.java View File

@@ -40,12 +40,11 @@ import com.gitblit.Constants.AccessRestrictionType;
import com.gitblit.GitBlit;
import com.gitblit.GitBlitException;
import com.gitblit.Keys;
import com.gitblit.models.RepositoryModel;
import com.gitblit.models.UserModel;
import com.gitblit.utils.StringUtils;
import com.gitblit.wicket.BasePage;
import com.gitblit.wicket.GitBlitWebSession;
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.models.RepositoryModel;
import com.gitblit.wicket.models.UserModel;
public class EditRepositoryPage extends BasePage {
@@ -57,7 +56,7 @@ public class EditRepositoryPage extends BasePage {
// create constructor
super();
isCreate = true;
setupPage(new RepositoryModel("", "", "", new Date()));
setupPage(new RepositoryModel());
}
public EditRepositoryPage(PageParameters params) {

+ 4
- 5
src/com/gitblit/wicket/pages/EditUserPage.java View File

@@ -38,14 +38,13 @@ import com.gitblit.Constants.AccessRestrictionType;
import com.gitblit.GitBlit;
import com.gitblit.GitBlitException;
import com.gitblit.Keys;
import com.gitblit.models.RepositoryModel;
import com.gitblit.models.UserModel;
import com.gitblit.utils.StringUtils;
import com.gitblit.wicket.AdminPage;
import com.gitblit.wicket.BasePage;
import com.gitblit.wicket.RequiresAdminRole;
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.models.RepositoryModel;
import com.gitblit.wicket.models.UserModel;
@AdminPage
@RequiresAdminRole
public class EditUserPage extends BasePage {
private final boolean isCreate;

+ 0
- 1
src/com/gitblit/wicket/pages/HistoryPage.java View File

@@ -18,7 +18,6 @@ package com.gitblit.wicket.pages;
import org.apache.wicket.PageParameters;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import com.gitblit.wicket.RepositoryPage;
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.panels.HistoryPanel;

+ 0
- 1
src/com/gitblit/wicket/pages/LogPage.java View File

@@ -18,7 +18,6 @@ package com.gitblit.wicket.pages;
import org.apache.wicket.PageParameters;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import com.gitblit.wicket.RepositoryPage;
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.panels.LogPanel;

src/com/gitblit/wicket/LoginPage.html → src/com/gitblit/wicket/pages/LoginPage.html View File

@@ -8,8 +8,8 @@
<wicket:head>
<title wicket:id="title">[page title]</title>
<wicket:link>
<link rel="stylesheet" type="text/css" href="resources/gitblit.css"/>
<link rel="shortcut icon" href="resources/gitblt-favicon.png" type="image/png" />
<link rel="stylesheet" type="text/css" href="/com/gitblit/wicket/resources/gitblit.css"/>
<link rel="shortcut icon" href="/com/gitblit/wicket/resources/gitblt-favicon.png" type="image/png" />
</wicket:link>
</wicket:head>
@@ -17,7 +17,7 @@
<div>
<div style="padding-top: 10px;text-align:center;">
<wicket:link>
<img src="resources/gitblt_25.png" alt="Git:Blit"/><br/>
<img src="/com/gitblit/wicket/resources/gitblt_25.png" alt="Git:Blit"/><br/>
</wicket:link>
<div style="padding-top:30px;font-weight:bold;" wicket:id="name">[name]</div>
</div>

src/com/gitblit/wicket/LoginPage.java → src/com/gitblit/wicket/pages/LoginPage.java View File

@@ -13,12 +13,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.gitblit.wicket;
package com.gitblit.wicket.pages;
import org.apache.wicket.PageParameters;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.PasswordTextField;
import org.apache.wicket.markup.html.form.StatelessForm;
import org.apache.wicket.markup.html.form.TextField;
@@ -29,7 +28,8 @@ import org.apache.wicket.model.Model;
import com.gitblit.Constants;
import com.gitblit.GitBlit;
import com.gitblit.Keys;
import com.gitblit.wicket.models.UserModel;
import com.gitblit.models.UserModel;
import com.gitblit.wicket.GitBlitWebSession;
public class LoginPage extends WebPage {
@@ -39,44 +39,39 @@ public class LoginPage extends WebPage {
public LoginPage(PageParameters params) {
super(params);
// If we are already logged in because user directly accessed
// the login url, redirect to the home page
if (GitBlitWebSession.get().isLoggedIn()) {
setRedirect(true);
setResponsePage(getApplication().getHomePage());
}
add(new Label("title", GitBlit.getString(Keys.web.siteName, Constants.NAME)));
add(new Label("name", Constants.NAME));
Form<Void> loginForm = new LoginForm("loginForm");
StatelessForm<Void> loginForm = new StatelessForm<Void>("loginForm") {
private static final long serialVersionUID = 1L;
@Override
public void onSubmit() {
String username = LoginPage.this.username.getObject();
char[] password = LoginPage.this.password.getObject().toCharArray();
UserModel user = GitBlit.self().authenticate(username, password);
if (user == null) {
error("Invalid username or password!");
} else {
loginUser(user);
}
}
};
loginForm.add(new TextField<String>("username", username));
loginForm.add(new PasswordTextField("password", password));
loginForm.add(new FeedbackPanel("feedback"));
add(loginForm);
}
class LoginForm extends StatelessForm<Void> {
private static final long serialVersionUID = 1L;
public LoginForm(String id) {
super(id);
// If we are already logged in because user directly accessed
// the login url, redirect to the home page
if (GitBlitWebSession.get().isLoggedIn()) {
setRedirect(true);
setResponsePage(getApplication().getHomePage());
}
}
@Override
public void onSubmit() {
String username = LoginPage.this.username.getObject();
char[] password = LoginPage.this.password.getObject().toCharArray();
UserModel user = GitBlit.self().authenticate(username, password);
if (user == null) {
error("Invalid username or password!");
} else {
loginUser(user);
}
}
}
private void loginUser(UserModel user) {
if (user != null) {
// Set the user into the session

src/com/gitblit/wicket/LogoutPage.java → src/com/gitblit/wicket/pages/LogoutPage.java View File

@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.gitblit.wicket;
package com.gitblit.wicket.pages;
import org.apache.wicket.markup.html.WebPage;

+ 0
- 1
src/com/gitblit/wicket/pages/MarkdownPage.java View File

@@ -26,7 +26,6 @@ import org.eclipse.jgit.revwalk.RevCommit;
import com.gitblit.utils.JGitUtils;
import com.gitblit.utils.MarkdownUtils;
import com.gitblit.wicket.RepositoryPage;
import com.gitblit.wicket.WicketUtils;
public class MarkdownPage extends RepositoryPage {

+ 2
- 1
src/com/gitblit/wicket/pages/PatchPage.java View File

@@ -22,6 +22,7 @@ import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
import com.gitblit.GitBlit;
import com.gitblit.utils.DiffUtils;
import com.gitblit.utils.JGitUtils;
import com.gitblit.utils.StringUtils;
import com.gitblit.wicket.GitBlitWebSession;
@@ -61,7 +62,7 @@ public class PatchPage extends WebPage {
if (!StringUtils.isEmpty(baseObjectId)) {
baseCommit = JGitUtils.getCommit(r, baseObjectId);
}
String patch = JGitUtils.getCommitPatch(r, baseCommit, commit, blobPath);
String patch = DiffUtils.getCommitPatch(r, baseCommit, commit, blobPath);
add(new Label("patchText", patch));
r.close();
}

+ 0
- 1
src/com/gitblit/wicket/pages/RepositoriesPage.java View File

@@ -28,7 +28,6 @@ import com.gitblit.GitBlit;
import com.gitblit.Keys;
import com.gitblit.utils.MarkdownUtils;
import com.gitblit.utils.StringUtils;
import com.gitblit.wicket.BasePage;
import com.gitblit.wicket.GitBlitWebSession;
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.panels.RepositoriesPanel;

src/com/gitblit/wicket/RepositoryPage.html → src/com/gitblit/wicket/pages/RepositoryPage.html View File


src/com/gitblit/wicket/RepositoryPage.java → src/com/gitblit/wicket/pages/RepositoryPage.java View File

@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.gitblit.wicket;
package com.gitblit.wicket.pages;
import java.text.MessageFormat;
import java.util.ArrayList;
@@ -45,19 +45,13 @@ import org.slf4j.LoggerFactory;
import com.gitblit.GitBlit;
import com.gitblit.Keys;
import com.gitblit.models.RepositoryModel;
import com.gitblit.utils.JGitUtils;
import com.gitblit.utils.JGitUtils.SearchType;
import com.gitblit.utils.StringUtils;
import com.gitblit.wicket.models.RepositoryModel;
import com.gitblit.wicket.pages.BranchesPage;
import com.gitblit.wicket.pages.DocsPage;
import com.gitblit.wicket.pages.EditRepositoryPage;
import com.gitblit.wicket.pages.LogPage;
import com.gitblit.wicket.pages.SearchPage;
import com.gitblit.wicket.pages.SummaryPage;
import com.gitblit.wicket.pages.TagsPage;
import com.gitblit.wicket.pages.TicketsPage;
import com.gitblit.wicket.pages.TreePage;
import com.gitblit.wicket.GitBlitWebSession;
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.panels.LinkPanel;
import com.gitblit.wicket.panels.RefsPanel;
public abstract class RepositoryPage extends BasePage {

+ 0
- 1
src/com/gitblit/wicket/pages/SearchPage.java View File

@@ -19,7 +19,6 @@ import org.apache.wicket.PageParameters;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import com.gitblit.utils.JGitUtils.SearchType;
import com.gitblit.wicket.RepositoryPage;
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.panels.SearchPanel;

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

@@ -42,12 +42,11 @@ import com.gitblit.Constants;
import com.gitblit.Constants.AccessRestrictionType;
import com.gitblit.GitBlit;
import com.gitblit.Keys;
import com.gitblit.models.Metric;
import com.gitblit.utils.JGitUtils;
import com.gitblit.utils.StringUtils;
import com.gitblit.utils.TimeUtils;
import com.gitblit.wicket.RepositoryPage;
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.models.Metric;
import com.gitblit.wicket.panels.BranchesPanel;
import com.gitblit.wicket.panels.LogPanel;
import com.gitblit.wicket.panels.TagsPanel;

+ 2
- 3
src/com/gitblit/wicket/pages/TagPage.java View File

@@ -21,12 +21,11 @@ import org.apache.wicket.PageParameters;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
import com.gitblit.models.RefModel;
import com.gitblit.utils.JGitUtils;
import com.gitblit.utils.JGitUtils.SearchType;
import com.gitblit.wicket.LinkPanel;
import com.gitblit.wicket.RepositoryPage;
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.models.RefModel;
import com.gitblit.wicket.panels.LinkPanel;
public class TagPage extends RepositoryPage {

+ 0
- 1
src/com/gitblit/wicket/pages/TagsPage.java View File

@@ -17,7 +17,6 @@ package com.gitblit.wicket.pages;
import org.apache.wicket.PageParameters;
import com.gitblit.wicket.RepositoryPage;
import com.gitblit.wicket.panels.TagsPanel;
public class TagsPage extends RepositoryPage {

+ 2
- 3
src/com/gitblit/wicket/pages/TicketPage.java View File

@@ -22,13 +22,12 @@ import org.apache.wicket.markup.repeater.data.DataView;
import org.apache.wicket.markup.repeater.data.ListDataProvider;
import org.eclipse.jgit.lib.Repository;
import com.gitblit.models.TicketModel;
import com.gitblit.models.TicketModel.Comment;
import com.gitblit.utils.JGitUtils;
import com.gitblit.utils.StringUtils;
import com.gitblit.wicket.GitBlitWebSession;
import com.gitblit.wicket.RepositoryPage;
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.models.TicketModel;
import com.gitblit.wicket.models.TicketModel.Comment;
public class TicketPage extends RepositoryPage {

+ 2
- 3
src/com/gitblit/wicket/pages/TicketsPage.java View File

@@ -23,13 +23,12 @@ import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.markup.repeater.data.DataView;
import org.apache.wicket.markup.repeater.data.ListDataProvider;
import com.gitblit.models.TicketModel;
import com.gitblit.utils.JGitUtils;
import com.gitblit.utils.StringUtils;
import com.gitblit.wicket.GitBlitWebSession;
import com.gitblit.wicket.LinkPanel;
import com.gitblit.wicket.RepositoryPage;
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.models.TicketModel;
import com.gitblit.wicket.panels.LinkPanel;
public class TicketsPage extends RepositoryPage {

+ 2
- 3
src/com/gitblit/wicket/pages/TreePage.java View File

@@ -32,13 +32,12 @@ import org.eclipse.jgit.revwalk.RevCommit;
import com.gitblit.DownloadZipServlet;
import com.gitblit.GitBlit;
import com.gitblit.Keys;
import com.gitblit.models.PathModel;
import com.gitblit.utils.ByteFormat;
import com.gitblit.utils.JGitUtils;
import com.gitblit.wicket.LinkPanel;
import com.gitblit.wicket.RepositoryPage;
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.models.PathModel;
import com.gitblit.wicket.panels.CommitHeaderPanel;
import com.gitblit.wicket.panels.LinkPanel;
import com.gitblit.wicket.panels.PathBreadcrumbsPanel;
public class TreePage extends RepositoryPage {

+ 2
- 3
src/com/gitblit/wicket/panels/BranchesPanel.java View File

@@ -28,12 +28,11 @@ import org.apache.wicket.model.StringResourceModel;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.Repository;
import com.gitblit.models.RefModel;
import com.gitblit.models.RepositoryModel;
import com.gitblit.utils.JGitUtils;
import com.gitblit.utils.StringUtils;
import com.gitblit.wicket.LinkPanel;
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.models.RefModel;
import com.gitblit.wicket.models.RepositoryModel;
import com.gitblit.wicket.pages.BranchesPage;
import com.gitblit.wicket.pages.LogPage;
import com.gitblit.wicket.pages.SummaryPage;

+ 0
- 1
src/com/gitblit/wicket/panels/CommitHeaderPanel.java View File

@@ -18,7 +18,6 @@ package com.gitblit.wicket.panels;
import org.apache.wicket.markup.html.basic.Label;
import org.eclipse.jgit.revwalk.RevCommit;
import com.gitblit.wicket.LinkPanel;
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.pages.CommitPage;

+ 1
- 1
src/com/gitblit/wicket/panels/CommitLegendPanel.java View File

@@ -28,9 +28,9 @@ import org.apache.wicket.markup.repeater.data.DataView;
import org.apache.wicket.markup.repeater.data.ListDataProvider;
import org.eclipse.jgit.diff.DiffEntry.ChangeType;
import com.gitblit.models.PathModel.PathChangeModel;
import com.gitblit.utils.JGitUtils;
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.models.PathModel.PathChangeModel;
public class CommitLegendPanel extends Panel {

+ 2
- 3
src/com/gitblit/wicket/panels/HistoryPanel.java View File

@@ -32,13 +32,12 @@ import org.eclipse.jgit.revwalk.RevCommit;
import com.gitblit.GitBlit;
import com.gitblit.Keys;
import com.gitblit.models.PathModel;
import com.gitblit.models.PathModel.PathChangeModel;
import com.gitblit.utils.JGitUtils;
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.models.PathModel;
import com.gitblit.wicket.models.PathModel.PathChangeModel;
import com.gitblit.wicket.pages.BlobDiffPage;
import com.gitblit.wicket.pages.BlobPage;
import com.gitblit.wicket.pages.CommitDiffPage;

src/com/gitblit/wicket/LinkPanel.html → src/com/gitblit/wicket/panels/LinkPanel.html View File


src/com/gitblit/wicket/LinkPanel.java → src/com/gitblit/wicket/panels/LinkPanel.java View File

@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.gitblit.wicket;
package com.gitblit.wicket.panels;
import org.apache.wicket.PageParameters;
import org.apache.wicket.behavior.SimpleAttributeModifier;

+ 0
- 1
src/com/gitblit/wicket/panels/LogPanel.java View File

@@ -34,7 +34,6 @@ import com.gitblit.Keys;
import com.gitblit.utils.JGitUtils;
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;
import com.gitblit.wicket.pages.CommitPage;

+ 5
- 10
src/com/gitblit/wicket/panels/PathBreadcrumbsPanel.java View File

@@ -25,7 +25,6 @@ import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.markup.repeater.data.DataView;
import org.apache.wicket.markup.repeater.data.ListDataProvider;
import com.gitblit.wicket.LinkPanel;
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.pages.TreePage;
@@ -59,7 +58,10 @@ public class PathBreadcrumbsPanel extends Panel {
public void populateItem(final Item<BreadCrumb> item) {
final BreadCrumb entry = item.getModelObject();
String path = entry.getPath();
String path = entry.path;
if (path.equals(ROOT)) {
path = null;
}
if (entry.isLeaf) {
item.add(new Label("pathLink", entry.name));
item.add(new Label("pathSeparator", "").setVisible(false));
@@ -85,13 +87,6 @@ public class PathBreadcrumbsPanel extends Panel {
this.name = name;
this.path = path;
this.isLeaf = isLeaf;
}
String getPath() {
if (path.equals(ROOT)) {
return null;
}
return path;
}
}
}
}

+ 0
- 1
src/com/gitblit/wicket/panels/RefsPanel.java View File

@@ -29,7 +29,6 @@ import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.revwalk.RevCommit;
import com.gitblit.wicket.LinkPanel;
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.pages.CommitPage;
import com.gitblit.wicket.pages.LogPage;

+ 2
- 3
src/com/gitblit/wicket/panels/RepositoriesPanel.java View File

@@ -43,13 +43,12 @@ import org.apache.wicket.model.Model;
import com.gitblit.Constants.AccessRestrictionType;
import com.gitblit.GitBlit;
import com.gitblit.Keys;
import com.gitblit.models.RepositoryModel;
import com.gitblit.models.UserModel;
import com.gitblit.utils.StringUtils;
import com.gitblit.utils.TimeUtils;
import com.gitblit.wicket.GitBlitWebSession;
import com.gitblit.wicket.LinkPanel;
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.models.RepositoryModel;
import com.gitblit.wicket.models.UserModel;
import com.gitblit.wicket.pages.EditRepositoryPage;
import com.gitblit.wicket.pages.SummaryPage;

+ 0
- 1
src/com/gitblit/wicket/panels/SearchPanel.java View File

@@ -32,7 +32,6 @@ import com.gitblit.Keys;
import com.gitblit.utils.JGitUtils;
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;
import com.gitblit.wicket.pages.CommitPage;

+ 1
- 2
src/com/gitblit/wicket/panels/TagsPanel.java View File

@@ -26,11 +26,10 @@ import org.apache.wicket.markup.repeater.data.ListDataProvider;
import org.apache.wicket.model.StringResourceModel;
import org.eclipse.jgit.lib.Repository;
import com.gitblit.models.RefModel;
import com.gitblit.utils.JGitUtils;
import com.gitblit.utils.StringUtils;
import com.gitblit.wicket.LinkPanel;
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.models.RefModel;
import com.gitblit.wicket.pages.CommitPage;
import com.gitblit.wicket.pages.LogPage;
import com.gitblit.wicket.pages.SummaryPage;

+ 0
- 1
src/com/gitblit/wicket/panels/UsersPanel.java View File

@@ -26,7 +26,6 @@ import org.apache.wicket.markup.repeater.data.DataView;
import org.apache.wicket.markup.repeater.data.ListDataProvider;
import com.gitblit.GitBlit;
import com.gitblit.wicket.LinkPanel;
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.pages.EditUserPage;

+ 1
- 1
tests/com/gitblit/tests/GitBlitSuite.java View File

@@ -23,7 +23,7 @@ public class GitBlitSuite extends TestSetup {
suite.addTestSuite(JGitUtilsTest.class);
return new GitBlitSuite(suite);
}
public static Repository getHelloworldRepository() throws Exception {
return new FileRepository(new File(REPOSITORIES, "helloworld.git"));
}

+ 5
- 4
tests/com/gitblit/tests/JGitUtilsTest.java View File

@@ -29,11 +29,12 @@ import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevObject;
import org.eclipse.jgit.revwalk.RevTree;
import com.gitblit.models.PathModel.PathChangeModel;
import com.gitblit.models.RefModel;
import com.gitblit.models.TicketModel;
import com.gitblit.utils.DiffUtils;
import com.gitblit.utils.JGitUtils;
import com.gitblit.utils.JGitUtils.DiffOutputType;
import com.gitblit.wicket.models.PathModel.PathChangeModel;
import com.gitblit.wicket.models.RefModel;
import com.gitblit.wicket.models.TicketModel;
public class JGitUtilsTest extends TestCase {
@@ -100,7 +101,7 @@ public class JGitUtilsTest extends TestCase {
Repository repository = GitBlitSuite.getHelloworldRepository();
RevCommit commit = JGitUtils.getCommit(repository,
"1d0c2933a4ae69c362f76797d42d6bd182d05176");
String diff = JGitUtils.getCommitDiff(repository, commit, DiffOutputType.PLAIN);
String diff = DiffUtils.getCommitDiff(repository, commit, DiffOutputType.PLAIN);
repository.close();
assertTrue("Failed to generate diff!", diff != null && diff.length() > 0);
String expected = "- system.out.println(\"Hello World\");\n+ System.out.println(\"Hello World\"";

Loading…
Cancel
Save