# -*-perl-*-
# Configuration file for codestriker.pl.

# Database to use for storing codestriker data.  Examples given are
# MySQL, Oracle, SQL Server, and PostgreSQL Refer to the
# documentation on how to create the Codestriker database.

# Example of a MySQL database URL residing on the same machine as the webserver.
$db = 'DBI:mysql:dbname=codestrikerdb';

# Example of a MySQL database on host dbhost.  In this situation, you need to
# ensure that the webserver host has permission to connect to the database on
# dbhost.  Check the MySQL documentation for further details.
#$db = 'DBI:mysql:dbname=codestrikerdb;host=dbhost';

# Example of an oracle database URL.
#$db = 'DBI:Oracle:host=127.0.0.1;sid=local';

# Example of an SQL Server ODBC database URL.
#$db = 'DBI:ODBC:Codestriker';

# Example of a PostgreSQL database URL using the native Pg driver.
$db = 'DBI:Pg:dbname=codestrikerdb';

# Example of a SQLite database URL.  Not fully supported yet.
#$db = 'DBI:SQLite:dbname=/var/www/codestrikerdb';

# Database user.
#$dbuser = 'system';
$dbuser = 'codestriker';

# Database password.
#$dbpasswd = 'manager';
$dbpasswd = 'yayadust';

# Email addresses of admin users for this installation.  Admin users
# have unrestricted access to the system.  Non-admin users will not
# be able to create/edit/delete projects or download the full
# system metric reports.  If this remains commented out, then no
# authentication will be required, and users have full access to the
# system.
#$admin_users = [ 'david.sitsky@gmail.com' ];
#$admin_users = [ 'david.sitsky@gmail.com', 'sits@users.sourceforge.net' ];

# "From" email address to use when sending emails relating to
# administratative duties, such as those sent to new users, or when
# a password is reset.  For some email systems, you might need to
# specify this as a full email address including the hostname.
#$daemon_email_address = 'codestriker';

# Location of the mailing host.  This is used when sending out codestriker
# comments.
$mailhost = 'localhost';
#$mailhost = 'smtp.iinet.com.au';

# Set the user and password parameters if $mailhost requires SMTP
# authentication.  If commented out, it is assumed authentication is 
# not required.
#$mailuser = 'smtpuser';
#$mailpasswd = 'smtppasswd';

# Set the Reply-To field for all codestriker emails to this value.
# This is only useful when using the comment email gateway feature
# and can be left blank by default.
$mailreplyto = '';
#$mailreplyto = 'codestriker@myhost.com';

# Optional setting to set a List-Id header for all codestriker emails,
# which can assist in filtering.  If this is not set, the header will
# not be set.
#$listid = 'Codestriker <codestriker.sf.net>';

# Indicate whether to try and compress output if the client browser
# supports it.  This can make a tremendous difference in bandwidth,
# especially over slow links.
$use_compression = 0;

# Location of gzip.  Gzip is used only if you don't have Compress::Zlib
# installed.  Note, if running with mod_perl, you _must_ have Compress:Zlib
# installed.  If gzip is not available, this can be set to "".
$gzip = '/bin/gzip';

# Location of the cvs binary.
#$cvs = 'c:/Program Files/GNU/WinCvs 1.3/CVSNT/cvs.exe';
#$cvs = 'c:/Program Files/cvsnt/cvs.exe';
$cvs = '/usr/bin/cvs';

# Location of the svn binary.
#$svn = 'c:/Program Files/SVN/svn.exe';
#$svn = 'c:/Program Files/svn-win32-1.4.4/bin/svn.exe';
#$svn = 'c:/Program Files/CollabNet Subversion/svn.exe';
$svn = '/usr/bin/svn';

# Location of the ssh binary.  This is only required if a CVS :ext
# type repository is used.
#$ssh='c:/Program Files/OpenSSH/bin/ssh.exe';
$ssh = '/usr/local/bin/ssh';

# Location of the p4 (Perforce client) binary.  This is only required if
# you are using a Perforce repository.
$p4 = '/usr/local/bin/p4';

# Location of the cleartool binary.  This is only required if you are using
# a ClearCase repository.
$cleartool = '/usr/local/bin/cleartool';

# Location of the vss binary.  This can be ignored for deployments which don't
# use VSS (Visual Source Safe).
#$vss = 'C:/Program Files/Microsoft Visual Studio/VSS/win32/ss.exe';

# Location of the highlight binary, which is used for highlighting source code.
# Available from  http://www.andre-simon.de/.  If this is not set, no syntax
# highlighting will be performed.
$highlighter = '';
#$highlighter = 'C:/Program Files/WinHighlight/highlight.exe'; 

# Temporary directory Codestriker can use.  For *NIX platforms, this will
# /tmp by default, for Windows 2000 c:\winnt\temp and for XP, c:\windows\temp.
# For Win32 deployments, these temp directories may not be accessible to
# the user running IIS or Apache, so explicitly specify an apprioriate
# directory here that exists on the system.  For *NIX platforms, there is
# usually no need to do anything here.
#$tmpdir = '/tmp/codestriker';
#$tmpdir = 'c:/temp';

# If codestriker is installed differently to that described in the README file
# (for example on the sourceforge servers), it may be necessary to explicitly
# specify the location of the codestriker_css as a URL.  This can also be
# used for specifying a different CSS file to use in the html directory.
#$codestriker_css = 'codestriker.css';
#$codestriker_css = 'codestriker-alternative.css';

# Valid repositories which may be selected at the create topic screen.
# The order shown here is the order presented in the option list.  Most
# deployments will only require a single repository to be specified.
# Comment out / modify entries appropriate for your deployment.
#
# If this list is empty it won't be possible to view the entire contents of a
# file before the proposed change and/or after. All of the places 
# in the application that ask for, or display repository information will
# be hidden and lastly, it will be impossible to make a diff review topic
# on files that already checked in.
#
# You also need to make sure that the user running your webserver has
# permission to run the client SCM program (eg, cvs, p4, svn), and to
# connect to the repository.
@valid_repositories =
    (
     #'https://svn.cerebrohq.com/main/trunk',
     # Example CVSROOT of a CVS repository on the same machine as the
     # codestriker server.
     #'/home/sits/cvs',

     # Example of a CVS repository which contains the URL to a viewcvs
     # installation (CVS web is also supported), followed by the
     # CVSROOT of the repository.
     #'http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi /cvsroot',

     # Codestriker pserver repository.
     #':pserver:anonymous:@codestriker.cvs.sourceforge.net:/cvsroot/codestriker',

     # The next example is the syntax used for specifying a Subversion
     # repository, which is simply the subversion repository URL
     # prefixed # by svn:
     'svn:https://svn.cerebrohq.com/main/trunk;ehtemka;Zoldren.',

     # Subversion server with authentication.  The user name and
     # password should be added to the end and separated by
     # semicolons.
     #'svn:http://svn.collab.net/repos/svn/trunk;username;password',

     # Subversion server that uses the Subversion protocol.
     #'svn://my.subversion.server/repos/product/trunk',

     # Example CVS pserver config with username and password
     # specified.
     #':pserver:sits:password@cvs.sourceforge.net:/cvsroot',

     # Example CVS pserver config with proxy options.
     #':pserver;proxy=abc.com;proxyport=8080:sits:pwd@cvs.dev.net',

     # Example CVS pserver with empty password.
     #':pserver:anonymous:@cvs.sourceforge.net:/cvsroot',

     # Example CVS server which will be connected to with SSH.  This
     # assumes the appropriate ssh keys have been created so that the
     # process running the Codestriker application can connect to the
     # CVS server without requiring a password to be entered.
     #':ext:sits@localhost:/home/sits/cvs',

     # Visual SourceSafe repository on same machine at default
     # location.  Username "admin", password "password".
     #'vss:admin;password',

     # Visual SourceSafe repository on same machine, but with specific
     # repository location specified.
     #'vss:c:\\Program Files\\Microsoft Visual Studio\\VSS;admin;password',

     # Visual SourceSafe repository located on a network fileshare.
     #'vss:\\\\VisualSourceSafeMachineName\\SharedRepositoryPath;admin;password',
     # Example Win32 CVS repository on the same machine.
     #':local:c:\\cvsrep',

     # Another Win32 CVS repository on the same machine.
     #'c:/cvsrep2',

     # The next example is a GIT repository that is accessed from a local
     # directory.
     #'git:/path/to/git/directory',

     # The next example is for a Perforce repository.  After the
     # leading :perforce identifier, the next two components are the
     # Perforce user and password parameters.  The last two parameters
     # after the '@' symbol represent the host and port number of
     # the Perforce server.
     #'perforce:sits:password@localhost:1666',

     # Same as previous example, but with no password specified.
     #'perforce:sits@localhost:1666',

     # The next example is a ClearCase repository, where the path is
     # the location of a shared snapshot view.  From this view, it
     # should be  possible to a file of any version can be 
     # retrieved from the vob using the "cleartool get" command.  It
     # is important that this snapshot view is accessible with the
     # same path specification for all developers.  This is because
     # a diff file created by a developer will refer to the snapshot
     # view, and will allow Codestriker to retrieve specific files
     # and versions mentioned in the review text, when necessary.
     # It is also important that the user account running the
     # webserver process has permission to access to the snapshot
     # view.
     #'clearcase:c:\\stuff\\view_name\\vob_name'

     # The next example is a repository based off a ClearCase dynamic view.
     # The clearcase identifier is followed by the dyn indicator,
     # followed by the view name, followed by the location where the
     # view is loaded.
     # 'clearcase:dyn:viewname:/vobs'
     # 'clearcase:dyn:viewname:P:\\viewname'
    );

# A mapping of repository URLs to names.  In any screen where a
# repository is displayed, if there is a mapping for the repository
# defined here, then the symbolic name will be displayed instead of
# its raw URL.  This is useful when the URL contains sensitive
# username/password information, or the symbolic name is more
# meaningful to the end-user.  If there is no mapping defined for a
# specific repository, its URL will be displayed.
$repository_name_map =
{
    '/home/sits/cvs' => 'Local CVS',
    'https://svn.cerebrohq.com/main/trunk' => 'SVN'
};

# A mapping of repositories to filename viewers.  Examples of such systems
# would be CVSweb and ViewCVS, for local repositories.  Mappings are
# not required for remote CVSweb and ViewCVS repositories, as they are
# viewers themselves.  When viewing reviews, links from filenames will be
# mapped to these URLs, to obtain revision log information for that file.
# The filename will be appended to the end of the URL, before any CGI
# parameters.
$file_viewer =
{
    '/home/sits/cvs' => 'http://localhost/cgi-bin/cvsweb.cgi',
    'svn:file:///var/svn/project/trunk' =>
        'http://some.whe.re/cgi-bin/viewvc.cgi/trunk/?root=Project&view=markup'
};

# Exclude these file types from review topics.   
# You will generally want to exclude any non-human-readable files.
@exclude_file_types = ('rtf', 'doc', 'gif', 'bmp', 'jpeg', 'jpg', 'mdb',
		       'ppt', 'vsd', 'xls', 'zip', 'tgz', 'tar', 'gz',
		       'opt', 'aps', 'ncb', 'a', 'so', 'dll', 'lib',
		       'exe', 'png', 'pdf', 'bin', 'out', 'ld', 'fm',
		       'indd', 'wav', 'o', 'obj', 'mpp', 'vsw', 'jfif',
		       'tif', 'tiff', 'xbm', 'fnt', 'ttf', 'pfm', 'pfb',
		       'eps', 'wpj', 'sxi');

# The number of problems found per line drops if the size of the 
# topic is too large. A common inspection pitfall is for authors to 
# attempt to review too much material and then miss problems. 
# These two options allow the Codestriker administrator to limit 
# the length of the topics. Topics that have more lines than 
# $maximum_topic_size_lines are rejected when they are created. 
# Topics that are larger than $suggested_topic_size_lines generate 
# a warning displayed in the topic page, but are accepted into the 
# system. Codestriker measures that length of the topic by counting 
# the number of lines in the topic text.
#
# The codestriker default of not enforcing any limits is specified by
# settings either option to an empty string. If you are not sure 
# what a reasonable limit would be, start with a suggested_topic_size_lines
# set to 350, and adjust with experience.
$maximum_topic_size_lines = '';
$suggested_topic_size_lines = '';

# The default viewing mode to use in the URL when creating a topic.  Can
# be either ($NORMAL_MODE, $COLOURED_MODE or $COLOURED_MONO_MODE).  These
# values should not be changed.
$NORMAL_MODE = 0;
$COLOURED_MODE = 1;
$COLOURED_MONO_MODE = 2;

$default_topic_create_mode = $COLOURED_MODE;

# When displaying a topic, if this value is -1, then all files in the
# topic are displayed in the one page (default old Codestriker
# behaviour).  If the value is 0, then only the first file is shown,
# with links to display the other files.  This is useful for those
# deployments that review a large amount of code.
$default_file_to_view = -1;

# List of valid topic states.  Note these values are mapped to the database
# depending on their position in the list.  ie, Open -> 0, Closed -> 1, etc.
# There is no problem added new states dynamically, or changing the textual
# names.  Note, the initial topic state must be the first element.  If
# the 'Obsoleted' state is removed, then it will not be possible to obsolete
# topics.  If the 'Deleted' state is removed, then it will not be possible
# to delete topics.
@topic_states = ('Open', 'Closed', 'Committed', 'Obsoleted', 'Deleted');

# Which states (in topic_states, above) represent a 'readonly' state.
# If a topic is in a readonly state, then certain activities are disabled, such
# as adding new comments, editing the metrics of existing comments, etc.
@readonly_states = ('Closed', 'Committed', 'Obsoleted', 'Deleted');

# Indicate if topics can be listed/searched.  Turning this to false can be
# useful for "anonymous" installations of codestriker.
$allow_searchlist = 1;

# The following controls project configuration.  Each Codestriker topic is
# a member of a specific project.  Uncomment the option you want
# below.  Note the textual state names below cannot be changed.

# Default option, projects are enabled, but they have no state
# changing operations (ie, projects are always in state 'Open').
@project_states = ('Open');

# Don't use projects at all.  Effectively, an implicit "default
# project" is created and associated with all topics behind the scenes.
# @project_states = ();
#
# Allow for projects to be closed.  Closing a project will
# not allow new topics to be created in that project.
# @project_states = ('Open', 'Closed');
#
# Allow for projects to be deleted.  This is potentially a dangerous
# option to allow, as deleting a project will delete all of its member
# topics as well.  Use with caution.
# @project_states = ('Open', 'Deleted');
#
# Allow for projects to be closed and deleted.  Use with caution.
# @project_states = ('Open', 'Closed', 'Deleted');

# If true, don't display any email addresses in their true form, but
# truncate them, to beat SPAM harvesters.
$antispam_email = 0;


# If comments_sent_to_topic_author is true, codestriker will send 
# out email to the topic owner and when a comment is added. If this 
# option is false, no email will be sent the topic owner. 
#
# If comments_sent_to_commenter is set to true, codestriker will
# blind cc (bcc) the comment author on all comments. The preceding
# comments_sent_to_topic_author must be true in order for the blind
# cc of emails to be enabled.
#
# If topic_state_change_sent_to_reviewers is set to true, codestriker
# will send email to the reviewer list when a topic state is changed.
#
# Emails about each comment may not be needed if a meeting
# is planned to discuss the topic. If the comment submitter specifies
# a cc user, an email is always sent out, regardless of any email
# settings.
$email_send_options = 
    {
    comments_sent_to_topic_author => 1,
    comments_sent_to_commenter => 0,
    topic_state_change_sent_to_reviewers => 0
    };

# Default width of tabs.  Most developers expect this to be 8, but
# some expect to see 4.  This is also stored in the user's cookie, and
# can be changed dynamically on the view topic screen.
$default_tabwidth = 8;

# Indicate whether the diffs presented in a topic should be ordered by
# filename.  For some deployments, it is important that the order of the
# diffs are presented in the same order as it was in the file.  Subversion
# reports diffs I believe in order of modification, which makes it
# quite arbitrary, so the default is to sort.
$sort_diffs_by_filename = 1;

# Bug database to update.  Currently, Bugzilla, Flyspray, Mantis and TestDirector
# are supported, but it is straight-forward to support other bug
# databases.  To enable Bugzilla, set $bug_db to "bugzilla", and set
# the following parameters to your setup.  To enable Flyspray, set
# $bug_db to "flyspray", and set the relevant parameters.  To enable
# TestDirectory, set $bug_db to "testdirector" and set the relevant
# parameters.  Likewise for Mantis, set $bug_db to "mantis".
#
# If the $bug_db is an empty string, all bug-tracking related
# features will be disabled.  To allow the association of a bug ID
# with a topic, without any physical connection to a bug database,
# set the value to "noconnection".

$bug_db = '';
#$bug_db = 'bugzilla';
#$bug_db = 'flyspray';
#$bug_db = 'testdirector';
#$bug_db = 'mantis';
$bug_db = 'noconnection';

# Bugzilla database connection details.
#$bug_db_host = 'localhost';
#$bug_db_name = 'bugs';
#$bug_db_password = 'bugs_password';
#$bug_db_dbname = 'bugs';
#$bug_db_user_id = '2';

# Flyspray database connection details
#$flyspray_db_host = 'localhost';
#$flyspray_db_name = 'flyspray';
#$flyspray_db_password = 'flyspray_password';
#$flyspray_db_dbname = 'flyspray_dev';
#$flyspray_db_user_id = 50;

# TestDirector connection details
#$testdirector_url = 'http://emea-testdir:8080/qcbin';
#$testdirector_user_id = 'robh';
#$testdirector_password = '';
#$testdirector_domain = 'DEFAULT';
#$testdirector_project = 'BPM33';

# The URL to the bug tracking system.  The bug number is appended to the
# end of this string when URLs are generated.  This can be left blank if
# there is no need for bug-tracking integration.  Below are some example
# URLs for Bugzilla and Flyspray.
$bugtracker = '';
$bugtracker = 'http://localhost.localdomain/bugzilla/show_bug.cgi?id=';
#$bugtracker = '/flyspray_dev/?do=details&id=';

# Some bug tracking systems store details of the files changed under each bug
# ID.  A generic plugin for bugzilla is scmbug which can be used to link
# with source control systems such as subversion.  The following flag
# enables/disables the ability for a user to create a topic by just
# using a Bug ID.
#$scmbug_hostname = 'localhost';
#$scmbug_port = 3872;
#$scmbug_lib_dir = 'C:/Program Files/Scmbug/share/scmbug/lib';

# LXR database.  Each repository can be optionally mapped to a
# different LXR deployment.  If a repository has an associated LXR
# mapping, then create a new entry where the repository string is the
# key, and the value is another map, where "db" is the LXR database
# URL, "user" is the database user, "password" is the data password,
# and "url" is the base LXR URL for viewing where an identifier is
# defined/used.
$lxr_map = 
{
#    '/home/sits/cvs' => { db => 'DBI:Pg:dbname=lxr',
#			  user => 'lxr',
#			  password => '',
#			  url => 'http://localhost.localdomain/lxr/ident?i='
#			},
#
#     'svn:http://svn.collab.net/repos/svn/trunk' =>
#                        { db => 'DBI:Pg:dbname=lxr2',
#			  user => 'lxr',
#			  password => '',
#			  url => 'http://localhost.localdomain/lxr2/ident?i='
#			}
};

# Character encoding to use when reading topic text.  Default is utf8
# (compatible with ASCII) if not set, but this can be over-ridden here.
# List of example encoding names can be retrieved from the following
# URL: http://perldoc.perl.org/Encode/Supported.html.
$topic_text_encoding = 'utf8';
#$topic_text_encoding = 'gb2312';

# Each comment thread (or issue) that is created against a specific
# code line in Codestriker can have a configurable number of
# user-defined metrics recorded against it.
#
# Every site has their own requirements, below are a number of example
# configurations.  The "name" attribute refers to the name of the
# metric being recorded.  The "values" attribute is a list of values
# that this metric can be assigned to.  The "default_value" attribute
# is optional, and indicates what the default value of the metric is
# assigned to.  If this attribute is not specified, then the user will
# be required to specify a value for a metric when creating a new
# comment thread.  This is recommended, so that users think about what
# these values should be, rather than blindly accepting default
# values.  For the "Status" metric below however, it is recording the
# "state" of the thread, so an initial state of "Submitted" is reasonable.
# For the other metrics below, an initial value makes no sense.
# Metric items can have an optional show_on_main_page list that will
# force the numbers of comments with the metric settings to be reported
# on the main page of codestriker. 
$comment_state_metrics =
    [ 
      { name             => 'Status', 
	values           => ['Submitted', 'Invalid', 'Completed'],
	default_value    => 'Submitted',
	show_on_mainpage => ['Submitted' ] 
      }
    ];

# Two metrics defined: Status and Type.
#$comment_state_metrics =
#    [
#      { name=>'Status', values=>['Submitted', 'Invalid', 'Completed'],
#	                default_value=>'Submitted' },
#      { name=>'Type', values=>['Style', 'Minor', 'Major', 'Severe'] }
#    ];

# Four metrics defined: Status, Level, Mode and Type.
#$comment_state_metrics =
#    [
#      { name=>'Status', values=>['Submitted', 'Invalid', 'Completed'],
#	                default_value=>'Submitted' },
#      { name=>'Level', values=>['Major', 'Minor'] },
#      { name=>'Mode', values=>['Missing', 'Wrong', 'Unclear', 'Suggestion'] },
#      { name=>'Type', values=>['Logic', 'Data Handling', 'Interface',
#			       'Error Handling', 'Performance', 'Comments',
#			       'Standards'] }
#    ];
#
# Case where no comment thread metrics are to be used.
#$comment_state_metrics = [];

# Allows you to override the default title of "Codestriker %version%".
# $title = "Codestriker $Codestriker::VERSION";

# This options configures the metric support in codestriker. You have
# the following options:
#
# $metric_config = "none", "basic", "all", "metric name, metric name, etc"
#
# "none" - turns off all extra metric support in the application. The
# metric page will only display and manage data that is strictly
# required to perform the review.  Codestriker will not require any
# addition data input from the reviewers and authors.  This is the
# default. However, you still get basic data like how many topics are
# being created and how problems are being found.
#
# "basic" - Turns on the metrics that are considered to be essential
# for a metric program. It will require that reviewers and authors
# enter the time spent reviewing the topic, the time spent in the
# review meeting, and the time spent preparing for the review. The
# metric selection assumes that you are following a formal review
# process with a preparation meeting, and a defect review meeting.
#   
#   kickoff time - time spent preparing for the review
#   checking time - time spent actually reviewing the topic.
#   logging meeting duration - the time spent in the logging meeting.
#
# "all" - Turns on all of the metrics that one could possibly want to
# track. The list of metrics is from the book "Software Inspection" by
# Gilb and Graham.  You should probably not use this unless you are
# using a formal process that is well established. You may want to
# enable this temporally to get a idea of the types of metrics that
# are supported.
#
# "name,name" - Lastly, you can pick and chose what metrics you would
# like to enable.  just list the metric names in a comma separated
# list. You can see all of the build in metrics in the
# lib/Codestriker.pm file. For example, if you don't hold a kick off
# meeting, and but do hold a logging meeting, the basic option will not
# quit fit. You should set the $metric_config as:
# $metric_config = "checking time,logging meeting duration".
#
# If you don't like our choices of metrics, the names, descriptions,
# etc feel free to edit the lib/Codestriker.pm. It contains
# documentations on how to add your own metrics into codestriker. It
# is easy to do, and does not require any coding.

$metric_config = "all";


