#
# Git Servlet Settings
#

# Allow push/pull over http/https with JGit servlet
git.allowPushPull = true

# Base folder for repositories
# Use forward slashes on Windows!!
git.repositoriesFolder = c:/projects/git

# Export all repositories
# if false, each exported repository must have a .git/git-daemon-export-ok file
git.exportAll = true

# Search repositories folder for nested repositories
git.nestedRepositories = true

# The root clone url
git.cloneUrl = https://localhost/git/

#
# Authentication Settings
#

# Require authentication for http/https push/pull access of git repositories
git.authenticate = true

# Require authentication to see everything but the admin pages
web.authenticateViewPages = false

# Require admin authentication for the admin functions and pages
web.authenticateAdminPages = true

# Simple user realm file to authenticate users
server.realmFile = users.properties

#
# Git:Blit Web Settings
#
web.siteName =

# If web.authenticate=true, users with "admin" role can create repositories,
# create users, and edit repository metadata (owner, description, etc)
#
# If web.authenticate=false, any user can execute the aforementioned functions.  
web.allowAdministration = true

# This is the message display above the repositories table.
# This can point to a file with Markdown content.
# Specifying "gitblit" uses the internal welcome message.
web.repositoriesMessage = gitblit

# Use the client timezone when formatting dates.
# This uses AJAX to determine the browser's timezone and enables Wicket 
# session management for the connection.
web.useClientTimezone = false

# Date and Time formats
web.datestampShortFormat = yyyy-MM-dd
web.datetimestampLongFormat = EEEE, MMMM d, yyyy h:mm a z

# Choose the diff presentation style: gitblt, gitweb, or plain
web.diffStyle = gitblit

# Control if email addresses are shown in web ui
web.showEmailAddresses = true

# Shows a combobox in the page links header with commit, committer, and author
# search selection.  Default search is commit.
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. 
web.generateActivityGraph = true

# The number of commits to display on the summary page
# Value must exceed 0 else default of 20 is used
web.summaryCommitCount = 16

# The number of tags/heads to display on the summary page
# Value must exceed 0 else default of 5 is used
web.summaryRefsCount = 5

# The number of items to show on a page before showing the first, prev, next
# pagination links.  A default if 50 is used for any invalid value.
web.itemsPerPage = 50

# Registered extensions for google-code-prettify
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

# Image extensions
web.imageExtensions = bmp jpg gif png 

# Registered extensions for binary blobs
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. 
web.aggressiveHeapManagement = true

# Run the webapp in debug mode
web.debugMode = true

# Enable/disable global regex substitutions (i.e. shared across repositories)
regex.global = true

# Example global regex substitutions
# Use !!! to separate the search pattern and the replace pattern
# searchpattern!!!replacepattern
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>

#
# Server Settings
#
server.tempFolder = temp
server.log4jPattern = %-5p %d{MM-dd HH:mm:ss.SSS}  %-20.20c{1}  %m%n

#
# Jetty Settings
#

# use NIO connectors.  If false, socket connectors will be used.
server.useNio = true

# Standard http port to serve.  <= 0 disables this connector.
server.httpPort = 0

# Secure/SSL https port to serve. <= 0 disables this connector.
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. 
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.
server.httpsBindInterface = localhost

# Password for SSL keystore (keystore password and certificate password must match)
server.storePassword = dosomegit

# Port for shutdown monitor to listen on.
server.shutdownPort = 8081
