#
# Git Servlet Settings
#

# Allow push/pull over http/https with JGit servlet
allowPushPull = true

# Base folder for repositories
# Use forward slashes on Windows!!
repositoriesFolder = c:/projects/git

# Export all repositories
# if false, each exported repository must have a .git/git-daemon-export-ok file
exportAll = true

# Search repositories folder for nested repositories
nestedRepositories = true

# The root clone url
cloneUrl = https://localhost/git/

#
# Authentication Settings
#

# Require authentication for http/https push/pull access of git repositories
authenticatePushPull = true

# Simple user realm file to authenticate users for push/pull
realmFile = users.properties

# User roles for push/pull git repository access
# (* is the wildcard for any role)
gitRoles = *

# User roles for administrative features such
# as create repository, edit repository description,
# and set repository owner. 
# (* is the wildcard for any role)
adminRoles = *

#
# Server Settings
#
debug = true
tempFolder = temp
log4jPattern = %-5p %d{MM-dd HH:mm:ss.SSS}  %-20.20c{1}  %m%n
# Aggressive heap management will run the garbage collector on every generated
# page.  This slows down page generation but improves heap consumption. 
aggressiveHeapManagement = true

#
# Git:Blit UI Settings
#
siteName = Repositories
allowAdministration = true
repositoriesMessage = Welcome to Git:Blit!<br>A quick and easy way to host your own Git repositories.<br>Built with <a href="http://eclipse.org/jgit">JGit</a>, <a href="http://wicket.apache.org">Wicket</a>, <a href="http://code.google.com/p/google-code-prettify/">google-code-prettify</a>, <a href="http://eclipse.org/jetty">Jetty</a>, <a href="http://www.slf4j.org">SLF4J</a>, <a href="http://logging.apache.org/log4j">Log4j</a>, and <a href="http://jcommander.org">JCommander</a>.

# Date and Time formats
timestampFormat = h:mm a

datestampShortFormat = yyyy-MM-dd
datestampLongFormat = EEEE, MMMM d, yyyy

datetimestampShortFormat = yyyy-MM-dd h:mm a
datetimestampLongFormat = EEEE, MMMM d, yyyy h:mm a

# Generates a line graph of repository activity over time on the Summary page.
# This is a real-time graph so generation may be expensive. 
generateActivityGraph = true

# The number of commits to display on the summary page
# Value must exceed 0 else default of 20 is used
summaryCommitCount = 20

# The number of tags/heads to display on the summary page
# Value must exceed 0 else default of 5 is used
summaryRefsCount = 5

# Registered extensions for google-code-prettify
prettyPrintExtensions = c cpp cs css htm html java js php pl prefs properties py rb sh sql xml vb

# Image extensions
imageExtensions = bmp jpg gif png 

# Registered extensions for binary blobs
binaryExtensions = jar pdf tar.gz zip

# Example global regex substitutions
regex.global.bug = \\b(Bug:)(\\s*[#]?|-){0,1}(\\d+)\\b!!!<a href="http://somehost/bug/$3">Bug-Id: $3</a>
regex.global.changeid = \\b(Change-Id:\\s*)([A-Za-z0-9]*)\\b!!!<a href="http://somehost/changeid/$2">Change-Id: $2</a>

# Example per-repository regex substitutions overrides global
regex.myrepository.bug = \\b(Bug:)(\\s*[#]?|-){0,1}(\\d+)\\b!!!<a href="http://elsewhere/bug/$3">Bug-Id: $3</a>

#
# Jetty Settings
#

# use NIO connectors.  If false, socket connectors will be used.
useNio = true

# Standard http port to serve.  <= 0 disables this connector.
httpPort = 0

# Secure/SSL https port to serve. <= 0 disables this connector.
httpsPort = 443

# Password for SSL keystore (keystore password and certificate password must match)
storePassword = dosomegit

# Port for shutdown monitor to listen on.
shutdownPort = 8081
