# session_attribute

sid: d41f1184e51abcdd050b8c6d
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'd41f1184e51abcdd050b8c6d'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: c587b115e0c86430fb5103cb
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'c587b115e0c86430fb5103cb'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: 773ef6bf3a625d10edd68b24
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'773ef6bf3a625d10edd68b24'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: bb737f9174dd348379844d3f
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'bb737f9174dd348379844d3f'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: 112b195ff025fb9168aa76ee
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'112b195ff025fb9168aa76ee'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: a0faf64639c679e19672d1c8
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'a0faf64639c679e19672d1c8'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: ce4848cf67066cbe82feb038
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'ce4848cf67066cbe82feb038'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: 6afbef4f8dd0ea91d6763265
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'6afbef4f8dd0ea91d6763265'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: d8faf7b3895fffa3784373ce
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'd8faf7b3895fffa3784373ce'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: f121b88774af7779b243cdc0
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'f121b88774af7779b243cdc0'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: a59742d051ede90466ed5c84
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'a59742d051ede90466ed5c84'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: d40bffbd124a85a557e84edd
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'd40bffbd124a85a557e84edd'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: 9c4e90ea1588f02121c35e29
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'9c4e90ea1588f02121c35e29'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: bb4a0b79492ca284410d7f02
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'bb4a0b79492ca284410d7f02'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: 10326e45c53343dedca5ccde
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'10326e45c53343dedca5ccde'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: eb2b4d64989d0d959492017a
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'eb2b4d64989d0d959492017a'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: 8f57ff326bbc5f29ff601e2f
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'8f57ff326bbc5f29ff601e2f'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: bc2617148d0be4f352dba4d7
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'bc2617148d0be4f352dba4d7'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: 5e32610e1cff004b343fbc19
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'5e32610e1cff004b343fbc19'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: ec3a5e13f73a9d4156406d41
name: query_href
value:
  /pothana_vemana/query?status=closed&max=3&col=id&col=resolution&col=summary&col=owner&col=reporter&order=summary


sid: 71acbda7cb5b59f5f515af11
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'71acbda7cb5b59f5f515af11'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: 88231b0cd4b8f4dbd2df0051
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'88231b0cd4b8f4dbd2df0051'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: 3cdd2e2366c914000e824343
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'3cdd2e2366c914000e824343'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: 06a08f0fb2992b6893046508
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'06a08f0fb2992b6893046508'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: ded6452615b3edd3d19125b2
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'ded6452615b3edd3d19125b2'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: 7be70843271f8309520f2b93
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'7be70843271f8309520f2b93'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: a6e148856b831e6d43d9198c
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'a6e148856b831e6d43d9198c'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: f58f3c90fa4931d836cbfb87
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'f58f3c90fa4931d836cbfb87'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: 4164aa413177c41a237dd521
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'4164aa413177c41a237dd521'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: 46eaa45b3a0e35aef148bac8
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'46eaa45b3a0e35aef148bac8'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: c8441e89e3b427029ce67625
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'c8441e89e3b427029ce67625'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: 347f493385aa77fe1e8d42fc
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'347f493385aa77fe1e8d42fc'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: 068b3219abd0cbcc4831aa96
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'068b3219abd0cbcc4831aa96'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: c430f4d8b20ecdc649440c49
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'c430f4d8b20ecdc649440c49'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: fad6709ba73b7003ccba6a62
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'fad6709ba73b7003ccba6a62'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: 71ed8132fa4a5836fa325dea
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'71ed8132fa4a5836fa325dea'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: 5ba5df31acbdea4f016f45fe
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'5ba5df31acbdea4f016f45fe'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: 6e1112dc1be6838fc1eff994
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'6e1112dc1be6838fc1eff994'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: f64c9abb483ba15f8e76bb9b
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'f64c9abb483ba15f8e76bb9b'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: 3672bacd0b16ed7c8667901b
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'3672bacd0b16ed7c8667901b'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: 402fa28ef78624532e34d7a2
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'402fa28ef78624532e34d7a2'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


sid: f26f46ffffcbc1e2eed0be8f
name: openid_session_data
value:
  (dp1
  S'_yadis_services__openid_consumer_'
  p2
  ccopy_reg
  _reconstructor
  p3
  (copenid.yadis.manager
  YadisServiceManager
  p4
  c__builtin__
  object
  p5
  NtRp6
  (dp7
  S'services'
  p8
  (lp9
  sS'yadis_url'
  p10
  S'https://id.fedoraproject.org/'
  p11
  sS'starting_url'
  p12
  Vhttps://id.fedoraproject.org/
  p13
  sS'session_key'
  p14
  g2
  sS'_current'
  p15
  g3
  (copenid.consumer.discover
  OpenIDServiceEndpoint
  p16
  g5
  NtRp17
  (dp18
  S'claimed_id'
  p19
  NsS'display_identifier'
  p20
  NsS'server_url'
  p21
  S'https://id.fedoraproject.org/openid/'
  p22
  sS'canonicalID'
  p23
  NsS'local_id'
  p24
  NsS'type_uris'
  p25
  (lp26
  S'http://specs.openid.net/auth/2.0/server'
  p27
  aS'http://openid.net/server/1.0'
  p28
  aS'http://ns.launchpad.net/2007/openid-teams'
  p29
  aS'http://fedoraproject.org/specs/open_id/cla'
  p30
  aS'http://openid.net/srv/ax/1.0'
  p31
  aS'http://openid.net/extensions/sreg/1.1'
  p32
  aS'http://openid.net/sreg/1.0'
  p33
  asS'used_yadis'
  p34
  I01
  sbsbsS'id'
  p35
  S'f26f46ffffcbc1e2eed0be8f'
  p36
  sS'_openid_consumer_last_token'
  p37
  g17
  s.


# wiki

name: WikiRestructuredTextLinks
author: trac
ipnr: 127.0.0.1
text:
  = TracLinks in reStructuredText =

  This document illustrates how to use the ``..trac::`` directive in reStructureThe page is written like

  {{{
  {{{
  #!rst 

  Examples:
   * Tickets: :trac:`#1` or :trac:`ticket:1`
   * Ticket comments: :trac:`comment:ticket:1:2`
   * Reports: :trac:`{1}` or :trac:`report:1`
   * Changesets: :trac:`r1`, :trac:`[1]` or :trac:`changeset:1`
   * Revision log: :trac:`r1:3`, :trac:`[1:3]` or :trac:`log:@1:3`, :trac:`log:trunk@1:3`
   * Diffs (since version 0.10): :trac:`diff:@20:30`, :trac:`diff:tags/trac-0.9.2/wiki-default//tags/trac-0.9.3/wiki-default` or :trac:`diff:trunk/trac@3538//sandbox/vc-refactoring/trac@3539`
   * Wiki pages: :trac:`CamelCase` or :trac:`wiki:CamelCase`
   * Milestones: :trac:`milestone:1.0`
   * Attachment: :trac:`attachment:ticket:944:attachment.1073.diff`
   * Files: :trac:`source:trunk/COPYING`
   * A specific file revision: :trac:`source:/trunk/COPYING@200`
   * A particular line of a specific file revision: :trac:`source:/trunk/COPYING@200#L25`

  }}}
  }}}

  Provided you have docutils installed, the above block will render as:
  ----
  {{{
  #!rst 

  Examples:
   * Tickets: :trac:`#1` or :trac:`ticket:1`
   * Ticket comments: :trac:`comment:ticket:1:2`
   * Reports: :trac:`{1}` or :trac:`report:1`
   * Changesets: :trac:`r1`, :trac:`[1]` or :trac:`changeset:1`
   * Revision log: :trac:`r1:3`, :trac:`[1:3]` or :trac:`log:@1:3`, :trac:`log:trunk@1:3`
   * Diffs (since version 0.10): :trac:`diff:@20:30`, :trac:`diff:tags/trac-0.9.2/wiki-default//tags/trac-0.9.3/wiki-default` or :trac:`diff:trunk/trac@3538//sandbox/vc-refactoring/trac@3539`
   * Wiki pages: :trac:`CamelCase` or :trac:`wiki:CamelCase`
   * Milestones: :trac:`milestone:1.0`
   * Attachment: :trac:`attachment:ticket:944:attachment.1073.diff`
   * Files: :trac:`source:trunk/COPYING`
   * A specific file revision: :trac:`source:/trunk/COPYING@200`
   * A particular line of a specific file revision: :trac:`source:/trunk/COPYING@200#L25`

  }}}
  ----

  Note also that any of the above could have been written using the alternate syntax for roles:
  {{{
  {{{
  #!rst

  See `ticket:123`_

   .. :trac: ticket:123 Ticket 123
  }}}
  }}}
  ----

  {{{
  #!rst

  See _`ticket:123`

  .. trac:: ticket:123 Ticket 123
  }}}
  ----
  The above form has the additional benefit of allowing you to specify an explicit label for the link.

  ----
  See also: WikiRestructuredText, TracLinks


name: WikiNewPage
author: trac
ipnr: 127.0.0.1
text:
  = Steps to Add a New Wiki Page =

   1. Choose a name for your new page. See WikiPageNames for naming conventions.
   2. Edit an existing page (or any other resources that support WikiFormatting) and add a [TracLinks link] to your new page. Save your changes.
   3. Follow the link you created to take you to the new page. Trac will display a "describe !PageName here" message.
   4. Click the "Edit this page" button to edit and add content to your new page. Save your changes.
   5. All done. Your new page is published.

  You can skip the second step by entering the CamelCase name of the page in the quick-search field at the top of the page. But note that the page will effectively be "orphaned" unless you link to it from somewhere else.
  ----
  See also: TracWiki, WikiFormatting, TracLinks, WikiDeletePage


name: TracFastCgi
author: trac
ipnr: 127.0.0.1
text:
  = Trac with FastCGI =

  Since version 0.9, Trac supports being run through the [http://www.fastcgi.com/ FastCGI] interface. Like [wiki:TracModPython mod_python], this allows Trac to remain resident, and is faster than external CGI interfaces which must start a new process for each request. However, unlike mod_python, it is able to support [http://httpd.apache.org/docs/suexec.html SuEXEC]. Additionally, it is supported by much wider variety of web servers.

  == Simple Apache configuration ==

  There are two FastCGI modules commonly available for Apache: `mod_fastcgi` and
  `mod_fcgid`.  The `FastCgiIpcDir` and `FastCgiConfig` directives discussed
  below are `mod_fastcgi` directives; the `DefaultInitEnv` is a `mod_fgcid`
  directive.

  For `mod_fastcgi`, add the following to an appropriate Apache configuration
  file:
  {{{
  # Enable fastcgi for .fcgi files
  # (If you're using a distro package for mod_fcgi, something like
  # this is probably already present)
  <IfModule mod_fastcgi.c>
     AddHandler fastcgi-script .fcgi
     FastCgiIpcDir /var/lib/apache2/fastcgi 
  </IfModule>
  LoadModule fastcgi_module /usr/lib/apache2/modules/mod_fastcgi.so
  }}}
  Setting `FastCgiIpcDir` is optional if the default is suitable. Note that the `LoadModule` line must be after the `IfModule` group.

  Configure `ScriptAlias` or similar options as described in TracCgi, but
  calling `trac.fcgi` instead of `trac.cgi`.

  You can set up the `TRAC_ENV` as an overall default:
  {{{
  FastCgiConfig -initial-env TRAC_ENV=/path/to/env/trac
  }}}

  Or you can serve multiple Trac projects in a directory like:
  {{{
  FastCgiConfig -initial-env TRAC_ENV_PARENT_DIR=/parent/dir/of/projects
  }}}

  But neither of these will work for `mod_fcgid`.  A similar but partial
  solution for `mod_fcgid` is:
  {{{
  DefaultInitEnv TRAC_ENV /path/to/env/trac/
  }}}
  But this cannot be used in `Directory` or `Location` context, which makes it
  difficult to support multiple projects.

  A better method which works for both of these modules (and for  [http://www.lighttpd.net/ lighttpd] and CGI as well), because it involves
  no server configuration settings for environment variables, is to set one
  of the variables in `trac.fcgi`, e.g.:
  {{{
  import os
  os.environ['TRAC_ENV'] = "/path/to/projectenv"
  }}}
  or
  {{{
  import os
  os.environ['TRAC_ENV_PARENT_DIR'] = "/path/to/project/parent/dir"
  }}}

  Using this method, different projects can be supported by using different
  `.fcgi` scripts with different `ScriptAliases`, copying and appropriately
  renaming `trac.fcgi` and adding the above code to create each such script.

  == Simple Lighttpd Configuration ==

  The FastCGI front-end was developed primarily for use with alternative webservers, such as [http://www.lighttpd.net/ lighttpd].

  lighttpd is a secure, fast, compliant and very flexible web-server that has been optimized for high-performance
  environments.  It has a very low memory footprint compared to other web servers and takes care of CPU load.

  For using `trac.fcgi` with lighttpd add the following to your lighttpd.conf:
  {{{
  fastcgi.server = ("/trac" =>
                     ("trac" =>
                       ("socket" => "/tmp/trac-fastcgi.sock",
                        "bin-path" => "/path/to/cgi-bin/trac.fcgi",
                        "check-local" => "disable",
                        "bin-environment" =>
                          ("TRAC_ENV" => "/path/to/projenv")
                       )
                     )
                   )
  }}}

  Note that you will need to add a new entry to `fastcgi.server` for each separate Trac instance that you wish to run. Alternatively, you may use the `TRAC_ENV_PARENT_DIR` variable instead of `TRAC_ENV` as described above,
  and you may set one of the two in `trac.fcgi` instead of in `lighttpd.conf`
  using `bin-environment` (as in the section above on Apache configuration).

  For using two projects with lighttpd add the following to your `lighttpd.conf`:
  {{{
  fastcgi.server = ("/first" =>
                     ("first" =>
                      ("socket" => "/tmp/trac-fastcgi-first.sock",
                       "bin-path" => "/path/to/cgi-bin/trac.fcgi",
                       "check-local" => "disable",
                       "bin-environment" =>
                         ("TRAC_ENV" => "/path/to/projenv-first")
                      )
                    ),
                    "/second" =>
                      ("second" =>
                      ("socket" => "/tmp/trac-fastcgi-second.sock",
                       "bin-path" => "/path/to/cgi-bin/trac.fcgi",
                       "check-local" => "disable",
                       "bin-environment" =>
                         ("TRAC_ENV" => "/path/to/projenv-second")
                      )
                    )
                  )
  }}}
  Note that field values are different.  If you prefer setting the environment
  variables in the `.fcgi` scripts, then copy/rename `trac.fcgi`, e.g., to
  `first.fcgi` and `second.fcgi`, and reference them in the above settings.
  Note that the above will result in different processes in any event, even
  if both are running from the same `trac.fcgi` script.
  {{{
  #!html
  <p style="background: #fdc; border: 2px solid #d00; font-style: italic; padding: 0 .5em; margin: 1em 0;">
  <strong>Note from c00i90wn:</strong> It's very important the order on which server.modules are loaded, if mod_auth is not loaded <strong>BEFORE</strong> mod_fastcgi, then the server will fail to authenticate the user.
  </p>
  }}}
  For authentication you should enable mod_auth in lighttpd.conf 'server.modules', select auth.backend and auth rules:
  {{{
  server.modules              = (
  ...
    "mod_auth",
  ...
  )

  auth.backend               = "htpasswd"

  # Separated password files for each project
  # See "Conditional Configuration" in
  # http://trac.lighttpd.net/trac/file/branches/lighttpd-merge-1.4.x/doc/configuration.txt

  $HTTP["url"] =~ "^/first/" {
    auth.backend.htpasswd.userfile = "/path/to/projenv-first/htpasswd.htaccess"
  }
  $HTTP["url"] =~ "^/second/" {
    auth.backend.htpasswd.userfile = "/path/to/projenv-second/htpasswd.htaccess"
  }

  # Enable auth on trac URLs, see
  # http://trac.lighttpd.net/trac/file/branches/lighttpd-merge-1.4.x/doc/authentication.txt

  auth.require = ("/first/login" =>
                  ("method"  => "basic",
                   "realm"   => "First project",
                   "require" => "valid-user"
                  ),
                  "/second/login" =>
                  ("method"  => "basic",
                   "realm"   => "Second project",
                   "require" => "valid-user"
                  )
                 )


  }}}
  Note that lighttpd (I use version 1.4.3) stopped if password file doesn't exist.

  Note that lighttpd doesn't support 'valid-user' in versions prior to 1.3.16.

  Conditional configuration is also useful for mapping static resources, i.e. serving out images and CSS directly instead of through FastCGI:
  {{{
  # Aliasing functionality is needed
  server.modules += ("mod_alias")

  # Setup an alias for the static resources
  alias.url = ("/trac/chrome/common" => "/usr/share/trac/htdocs")

  # Use negative lookahead, matching all requests that ask for any resource under /trac, EXCEPT in
  # /trac/chrome/common, and use FastCGI for those
  $HTTP["url"] =~ "^/trac(?!/chrome/common)" {
  # Even if you have other fastcgi.server declarations for applications other than Trac, do NOT use += here
  fastcgi.server = ("/trac" =>
                     ("trac" =>
                       ("socket" => "/tmp/trac-fastcgi.sock",
                        "bin-path" => "/path/to/cgi-bin/trac.fcgi",
                        "check-local" => "disable",
                        "bin-environment" =>
                          ("TRAC_ENV" => "/path/to/projenv")
                       )
                     )
                   )
  }
  }}}
  The technique can be easily adapted for use with multiple projects by creating aliases for each of them, and wrapping the fastcgi.server declarations inside conditional configuration blocks.
  Also there is another way to handle multiple projects and it's to use TRAC_ENV_PARENT_DIR instead of TRAC_ENV and use global auth, let's see an example:
  {{{
  #  This is for handling multiple projects
    alias.url       = ( "/trac/" => "/path/to/trac/htdocs/" )

    fastcgi.server += ("/projects"  =>
                        ("trac" =>
                          (
                            "socket" => "/tmp/trac.sock",
                            "bin-path" => "/path/to/cgi-bin/trac.fcgi",
                            "check-local" => "disable",
                            "bin-environment" =>
                              ("TRAC_ENV_PARENT_DIR" => "/path/to/parent/dir/of/projects/" )
                          )
                        )
                      )
  #And here starts the global auth configuration
    auth.backend = "htpasswd"
    auth.backend.htpasswd.userfile = "/path/to/unique/htpassword/file/trac.htpasswd"
    $HTTP["url"] =~ "^/projects/.*/login$" {
      auth.require = ("/" =>
                       (
                         "method"  => "basic",
                         "realm"   => "trac",
                         "require" => "valid-user"
                       )
                     )
    }
  }}}

  Changing date/time format also supported by lighttpd over environment variable LC_TIME
  {{{
  fastcgi.server = ("/trac" =>
                     ("trac" =>
                       ("socket" => "/tmp/trac-fastcgi.sock",
                        "bin-path" => "/path/to/cgi-bin/trac.fcgi",
                        "check-local" => "disable",
                        "bin-environment" =>
                          ("TRAC_ENV" => "/path/to/projenv",
                          "LC_TIME" => "ru_RU")
                       )
                     )
                   )
  }}}
  For details about languages specification see TracFaq question 2.13.

  Other important information like [http://trac.lighttpd.net/trac/wiki/TracInstall this updated TracInstall page], [wiki:TracCgi#MappingStaticResources and this] are useful for non-fastcgi specific installation aspects.

  If you use trac-0.9, read [http://lists.edgewall.com/archive/trac/2005-November/005311.html about small bug]

  Relaunch lighttpd, and browse to `http://yourhost.example.org/trac` to access Trac.

  Note about running lighttpd with reduced permissions:

    If nothing else helps and trac.fcgi doesn't start with lighttpd settings __server.username = "www-data"__, __server.groupname = "www-data"__, then in the `bin-environment` section set `PYTHON_EGG_CACHE` to the home directory of `www-data` or some other directory accessible to this account for writing.


  == Simple LiteSpeed Configuration ==

  The FastCGI front-end was developed primarily for use with alternative webservers, such as [http://www.litespeedtech.com/ LiteSpeed].

  LiteSpeed web server is an event-driven asynchronous Apache replacement designed from the ground-up to be secure, scalable, and operate with minimal resources. LiteSpeed can operate directly from an Apache config file and is targeted for business-critical environments.

  Setup

  1) Please make sure you have first have a working install of a Trac project. Test install with “tracd” first.

  2) Create a Virtual Host for this setup. From now on we will refer to this vhost as TracVhost. For this tutorial we will be assuming that your trac project will be accessible via:

  {{{
  http://yourdomain.com/trac/
  }}}

  3) Go “TracVhost → External Apps” tab and create a new “External Application”.

  {{{
  Name: MyTracFCGI	
  Address: uds://tmp/lshttpd/mytracfcgi.sock
  Max Connections: 10
  Environment: TRAC_ENV=/fullpathto/mytracproject/ <--- path to root folder of trac project
  Initial Request Timeout (secs): 30
  Retry Timeout (secs): 0
  Persistent Connection	Yes
  Connection Keepalive Timeout: 30
  Response Bufferring: No	
  Auto Start: Yes
  Command: /usr/share/trac/cgi-bin/trac.fcgi  <--- path to trac.fcgi
  Back Log: 50
  Instances: 10
  }}}

  4) Optional. If you need to use htpasswd based authentication. Go to “TracVhost → Security” tab and create a new security “Realm”.

  {{{
  DB Type: Password File
  Realm Name: MyTracUserDB               <--- any name you wish and referenced later
  User DB Location: /fullpathto/htpasswd <--- path to your htpasswd file
  }}}

  If you don’t have a htpasswd file or don’t know how to create the entries within one, go to http://sherylcanter.com/encrypt.php, to generate the user:password combos.

  5) Go to “PythonVhost → Contexts” and create a new “FCGI Context”.

  {{{
  URI: /trac/                              <--- URI path to bind to python fcgi app we created	
  Fast CGI App: [VHost Level] MyTractFCGI  <--- select the trac fcgi extapp we just created
  Realm: TracUserDB                        <--- only if (4) is set. select ream created in (4)
  }}}

  6) Modify /fullpathto/mytracproject/conf/trac.ini

  {{{
  #find/set base_rul, url, and link variables
  base_url = http://yourdomain.com/trac/ <--- base url to generate correct links to
  url = http://yourdomain.com/trac/      <--- link of project
  link = http://yourdomain.com/trac/     <--- link of graphic logo
  }}}

  7) Restart LiteSpeed, “lswsctrl restart”, and access your new Trac project at: 

  {{{
  http://yourdomain.com/trac/
  }}}

  ----
  See also TracCgi, TracModPython, TracInstall, TracGuide


name: TracBackup
author: trac
ipnr: 127.0.0.1
text:
  = Trac Backup =
  [[TracGuideToc]]

  Since Trac uses a database backend, some extra care is required to safely create a backup of a [wiki:TracEnvironment project environment]. Luckily, [wiki:TracAdmin trac-admin] has a command to make backups easier: `hotcopy`.

    ''Note: Trac uses the `hotcopy` nomenclature to match that of [http://subversion.tigris.org/ Subversion], to make it easier to remember when managing both Trac and Subversion servers.''

  == Creating a Backup ==

  To create a backup of a live TracEnvironment, simply run:
  {{{
    $ trac-admin /path/to/projenv hotcopy /path/to/backupdir
  }}}

  [wiki:TracAdmin trac-admin] will lock the database while copying.''

  The resulting backup directory is safe to handle using standard file-based backup tools like `tar` or `dump`/`restore`.

  === Restoring a Backup ===

  Backups are simply a copied snapshot of the entire [wiki:TracEnvironment project environment] directory, including the SQLite database. 

  To restore an environment from a backup, simply stop the process running Trac (i.e. the Web server or [wiki:TracStandalone tracd]), restore the directory structure from the backup and restart the service.

    ''Note: Automatic backup of environments that don't use SQLite as database backend is not supported at this time. As a workaround, we recommend that you stop the server, copy the environment directory, and make a backup of the database using whatever mechanism is provided by the database system.''

  ----
  See also: TracAdmin, TracEnvironment, TracGuide


name: TracEnvironment
author: trac
ipnr: 127.0.0.1
text:
  = The Trac Environment =

  Trac uses a directory structure and a database for storing project data. The directory is referred to as the “environment”.

  == Creating an Environment ==

  A new Trac environment is created using [wiki:TracAdmin trac-admin]:
  {{{
  $ trac-admin /path/to/projectenv initenv
  }}}

  [wiki:TracAdmin trac-admin] will ask you for the name of the project, the
  database connection string (explained below), and the type and path to
  your source code repository.

  ''Note: The web server user will require file system write permission to 
  the environment directory and all the files inside. Please remember to set
  the appropriate permissions. The same applies to the Subversion repository 
  Trac is eventually using, although Trac will only require read access as long 
  as you're not using the BDB file system.''

  == Database Connection Strings ==

  Since version 0.9, Trac supports both [http://sqlite.org/ SQLite],
  [http://www.postgresql.org/ PostgreSQL] and [http://mysql.com/ MySQL] as
  database backends.  The default is to use SQLite, which is probably sufficient
  for most projects. The database file is then stored in the environment
  directory, and can easily be [wiki:TracBackup backed up] together with the
  rest of the environment.

  The connection string for an embedded SQLite database is:
  {{{
  sqlite:db/trac.db
  }}}

  If you want to use PostgreSQL or MySQL instead, you'll have to use a
  different connection string. For example, to connect to a PostgreSQL
  database on the same machine called `trac`, that allows access to the
  user `johndoe` with the password `letmein`, use:
  {{{
  postgres://johndoe:letmein@localhost/trac
  }}}

  If PostgreSQL is running on a non-standard port (for example 9342), use:
  {{{
  postgres://johndoe:letmein@localhost:9342/trac
  }}}

  Note that with PostgreSQL you will have to create the database before running
  `trac-admin initenv`.

  And make sure PostgreSQl DB name is "trac". What worked for me:
  And didn't work uppercase trac-user-name
  {{{
  sudo su - postgres -c createdb trac
  sudo su - postgres -c psql trac
  CREATE USER trac-user-name WITH PASSWORD 'trac-pass-name';
  }}}

  (Just to remind you, if you don't have a sudo/su setup, you just need to do the createdb and psql statements. That threw me the first couple of times I read this.)

  == Source Code Repository ==

  You'll first have to provide the ''type'' of your repository (e.g. `svn` for Subversion,
  which is the default), then the ''path'' where the repository is located.

  If you don't want to use Trac with a source code repository, simply leave the ''path'' empty
  (the ''type'' information doesn't matter, then).

  For some systems, it is possible to specify not only the path to the repository,
  but also a ''scope'' within the repository. Trac will then only show information
  related to the files and changesets below that scope. The Subversion backend for
  Trac supports this; for other types, check the corresponding plugin's documentation.

  Example of a configuration for a Subversion repository:
  {{{
  [trac]
  repository_type = svn
  repository_dir = /path/to/your/repository
  }}}

  The configuration for a scoped Subversion repository would be:
  {{{
  [trac]
  repository_type = svn
  repository_dir = /path/to/your/repository/scope/within/repos
  }}}

  == Directory Structure ==

  An environment directory will usually consist of the following files and directories:

   * `README` - Brief description of the environment.
   * `VERSION` - Contains the environment version identifier.
   * `attachments` - Attachments to wiki pages and tickets are stored here.
   * `conf`
     * `trac.ini` - Main configuration file. See TracIni.
   * `db`
     * `trac.db` - The SQLite database (if you're using SQLite).
   * `plugins` - Environment-specific [wiki:TracPlugins plugins] (Python eggs)
   * `templates` - Custom environment-specific templates.
     * `site_css.cs` - Custom CSS rules.
     * `site_footer.cs` - Custom page footer.
     * `site_header.cs` - Custom page header.
   * `wiki-macros` - Environment-specific [wiki:WikiMacros Wiki macros].

    '''Note: don't confuse a Trac environment directory with the source code repository directory.
  It happens that the above structure is loosely modelled after the Subversion repository directory 
  structure, but they are not and ''must not'' be located at the same place.'''

  ----
  See also: TracAdmin, TracBackup, TracIni, TracGuide


name: TracTimeline
author: trac
ipnr: 127.0.0.1
text:
  = The Trac Timeline =
  [[TracGuideToc]]

  The timeline provides a historic view of the project in a single report.

  It lists all Trac events that have occured in chronological order, a
  brief description of each event and if applicable, the person responsible for
  the change.

  The timeline lists these kinds of events:
   * '''Wiki page events''' -- Creation and changes
   * '''Ticket events''' -- Creation and resolution/closing (and optionally other changes)
   * '''Source code changes ''' -- Repository check-ins
   * '''Milestone ''' -- Milestone completed

  Each event entry provides a hyperlink to the specific event in question, as well as
  a brief excerpt of the actual comment or text, if available.

  See [wiki:TracIni#timeline TracIni] for timeline configuration options.

  == RSS Support ==

  The Timeline module supports subscription using RSS 2.0 syndication. To subscribe to project events, click orange '''XML''' icon at the bottom of the page. See TracRss for more information on RSS support in Trac.

  ----
  See also: TracGuide, TracWiki, WikiFormatting, TracRss, TracNotification


name: TracWiki
author: trac
ipnr: 127.0.0.1
text:
  = The Trac Wiki Engine =
  [[TracGuideToc]]

  Trac has a built-in wiki engine, used for text and documentation throughout the system. WikiFormatting is used in [wiki:TitleIndex wiki pages], [wiki:TracTickets tickets] and [wiki:TracChangeset check-in log messages].  This allows for formatted text and hyperlinks in and between all Trac modules.

  Editing wiki text is easy, using any web browser and a simple [WikiFormatting formatting system], rather than more complex markup languages like HTML.  The reasoning behind its design is that HTML, with its large collection of nestable tags, is too complicated to allow fast-paced editing, and distracts from the actual content of the pages. Note though that Trac also supports [wiki:WikiHtml HTML], [wiki:WikiRestructuredText reStructuredText] and [http://www.textism.com/tools/textile/ Textile] as alternative markup formats.

  The main goal of the wiki is to make editing text easier and ''encourage'' people to contribute and annotate text content for a project.

  The wiki itself does not enforce any structure, but rather resembles a stack of empty sheets of paper, where you can organize information and documentation as you see fit, and later reorganize if necessary.

  For more help on editing wiki text, see these pages:
   * WikiFormatting
   * WikiPageNames
   * WikiNewPage
   * TracLinks
   * WikiMacros
   * WikiProcessors

  If you want to practice editing, please use the SandBox.

  Some more information about wiki on the web:
   * http://wikipedia.org/wiki/Wiki
   * http://c2.com/cgi/wiki?WikiHistory
   * http://www.usemod.com/cgi-bin/mb.pl?WhyWikiWorks

  ----
  See also: TracGuide


name: TracModPython
author: trac
ipnr: 127.0.0.1
text:
  = Trac and mod_python =
  [[TracGuideToc]]

  Trac supports [http://www.modpython.org/ mod_python], which speeds up Trac's response times considerably, especially compared to [TracCgi CGI], and permits use of many Apache features not possible with [wiki:TracStandalone tracd]/mod_proxy.

  == Simple configuration ==

  If you just installed mod_python, you may have to add a line to load the module in the Apache configuration:
  {{{
  LoadModule python_module modules/mod_python.so
  }}}

   ''Note: The exact path to the module depends on how the HTTPD installation is laid out.''

  You can test your mod_python installation by adding the following to your httpd.conf.  You should remove this when you are done testing for security reasons.
  {{{
  <Location /mpinfo>
     SetHandler mod_python
     PythonHandler mod_python.testhandler
  </Location>
  }}}

  A simple setup of Trac on mod_python looks like this:
  {{{
  <Location /projects/myproject>
     SetHandler mod_python
     PythonHandler trac.web.modpython_frontend 
     PythonOption TracEnv /var/trac/myproject
     PythonOption TracUriRoot /projects/myproject
  </Location>
  }}}

  The option '''`TracUriRoot`''' may or may not be necessary in your setup. Try your configuration with out it, and if the URLs produced by Trac look wrong or if Trac does not seem to recognize the URLs correctly, add the '''`TracUriRoot`''' option.  You will notice that the `Location` and '''`TracUriRoot`''' have the same path.

  === Configuring Authentication ===

  Configuring authentication works just like for [wiki:TracCgi#AddingAuthentication CGI]:
  {{{
  <Location "/projects/myproject/login">
    AuthType Basic
    AuthName "myproject"
    AuthUserFile /var/trac/myproject/.htpasswd
    Require valid-user
  </Location>
  }}}

  === Setting the !PythonPath ===

  If the Trac installation isn't installed in your Python path, you'll have to tell Apache where to find the Trac mod_python handler  using the `PythonPath` directive:
  {{{
  <Location /projects/myproject>
    ...
    PythonPath "sys.path + ['/path/to/trac']"
    ...
  </Location>
  }}}

  Be careful about using the !PythonPath directive, and ''not'' `SetEnv PYTHONPATH`, as the latter won't work.

  == Setting up multiple projects ==

  The Trac mod_python handler supports a configuration option similar to Subversion's `SvnParentPath`, called `TracEnvParentDir`:
  {{{
  <Location /projects>
    SetHandler mod_python
    PythonHandler trac.web.modpython_frontend 
    PythonOption TracEnvParentDir /var/trac
    PythonOption TracUriRoot /projects
  </Location>
  }}}

  When you request the `/projects` URL, you will get a listing of all subdirectories of the directory you set as `TracEnvParentDir` that look like Trac environment directories. Selecting any project in the list will bring you to the corresponding Trac environment.

  If you don't want to have the subdirectory listing as your projects home page you can use a
  {{{
  <LocationMatch "/.+/">
  }}}

  This will instruct Apache to use mod_python for all locations different from root while having the possibility of placing a custom home page for root in your !DocumentRoot folder.

  You can also use the same authentication realm for all of the projects using a `<LocationMatch>` directive:
  {{{
  <LocationMatch "/projects/[^/]+/login">
    AuthType Basic
    AuthName "Trac"
    AuthUserFile /var/trac/.htpasswd
    Require valid-user
  </LocationMatch>
  }}}

  == Virtual Host Configuration ==

  Below is the sample configuration required to set up your trac as a virtual server (i.e. when you access it at the URLs like
  !http://trac.mycompany.com):

  {{{
  <VirtualHost * >
      DocumentRoot /var/trac/myproject
      ServerName trac.mycompany.com
      <Location />
          SetHandler mod_python
          PythonHandler trac.web.modpython_frontend
          PythonOption TracEnv /var/trac/myproject
          PythonOption TracUriRoot /
      </Location>
      <Location /login>
          AuthType Basic
          AuthName "MyCompany Trac Server"
          AuthUserFile /var/trac/myproject/.htpasswd
          Require valid-user
      </Location>
  </VirtualHost>
  }}}

  For a virtual host that supports multiple projects replace "`TracEnv`" /var/trac/myproject with "`TracEnvParentDir`" /var/trac/

  == Troubleshooting ==

  In general, if you get server error pages, you can either check the Apache error log, or enable the `PythonDebug` option:
  {{{
  <Location /projects/myproject>
    ...
    PythonDebug on
  </Location>
  }}}

  === Form submission problems ===

  If you're experiencing problems submitting some of the forms in Trac (a common problem is that you get redirected to the start page after submission), check whether your {{{DocumentRoot}}} contains a folder or file with the same path that you mapped the mod_python handler to. For some reason, mod_python gets confused when it is mapped to a location that also matches a static resource.

  === Problem with virtual host configuration ===

  If the <Location /> directive is used, setting the `DocumentRoot` may result in a ''403 (Forbidden)'' error. Either remove the `DocumentRoot` directive, or make sure that accessing the directory it points is allowed (in a corresponding `<Directory>` block).

  Using <Location /> together with `SetHandler` resulted in having everything handled by mod_python, which leads to not being able download any CSS or images/icons. I used <Location /trac> `SetHandler None` </Location> to circumvent the problem, though I do not know if this is the most elegant solution.

  === Using .htaccess ===

  Although it may seem trivial to rewrite the above configuration as a directory in your document root with a `.htaccess` file, this does not work. Apache will append a "/" to any Trac URLs, which interferes with its correct operation.

  It may be possible to work around this with mod_rewrite, but I failed to get this working. In all, it is more hassle than it is worth. Stick to the provided instructions. :)

  === Win32 Issues ===
  If you run trac with mod_python < 3.2 on Windows, uploading attachments will '''not''' work. This problem is resolved in mod_python 3.1.4 or later, so please upgrade mod_python to fix this.

  === OS X issues ===

  When using mod_python on OS X you will not be able to restart Apache using `apachectl restart`. This is apparently fixed in mod_python 3.2, but there's also a patch available for earlier versions [http://www.dscpl.com.au/projects/vampire/patches.html here].

  === SELinux issues ===

  If Trac reports something like: ''Cannot get shared lock on db.lock''
  The security context on the repository may need to be set:

  {{{
  chcon -R -h -t httpd_sys_content_t PATH_TO_REPOSITORY
  }}}

  See also [[http://subversion.tigris.org/faq.html#reposperms]]

  === FreeBSD issues ===
  Pay attention to the version of the installed mod_python and sqlite packages. Ports have both the new and old ones, but earlier versions of pysqlite and mod_python won't integrate as the former requires threaded support in python, and the latter requires a threadless install.

  === Subversion issues ===

  If you get the following Trac Error `Unsupported version control system "svn"` only under mod_python, though it works well on the command-line and even with TracStandalone, chances are that you forgot to add the path to the Python bindings with the [TracModPython#ConfiguringPythonPath PythonPath] directive. (The better way is to add a link to the bindings in the Python `site-packages` directory, or create a `.pth` file in that directory.)

  If this is not the case, it's possible that you're using Subversion libraries that are binary incompatible with the apache ones (an incompatibility of the `apr` libraries is usually the cause). In that case, you also won't be able to use the svn modules for Apache (`mod_dav_svn`).

  ----
  See also TracGuide, TracInstall, TracCgi, TracFastCgi


name: CamelCase
author: trac
ipnr: 127.0.0.1
text:
  = !CamelCase =
  New words created by smashing together capitalized words.

  CamelCase is the original wiki convention for creating hyperlinks, with the additional requirement that the capitals are followed by a lower-case letter; hence “AlabamA” and “ABc” will not be links.

  == Customizing the Wiki behavior ==

  Some people dislike linking by CamelCase.  While Trac remains faithful to the original Wiki style, it provides a number of ways to accomodate users with different preferences:
   * There's an option (`ignore_missing_pages` in `[wiki]`) to simply ignore links to missing pages when the link is written using the CamelCase style, instead of that word being replaced by a gray link followed by a question mark.[[BR]]
     That can be useful when CamelCase style is used to name code artifacts like class names and there's no corresponding page for them.
   * There's an option (`split_page_names` in `[wiki]`) to automatically insert space characters between the words of a CamelCase link when rendering the link.
   * Creation of explicit Wiki links is also easy, see WikiPageNames for details.
   * In addition, Wiki formatting can be disabled completely in some places (e.g. when rendering commit log messages)

  See TracIni for more information on the available options.

  == More information on !CamelCase ==

   * http://c2.com/cgi/wiki?WikiCase
   * http://en.wikipedia.org/wiki/CamelCase

  ----
  See also: WikiPageNames, WikiNewPage, WikiFormatting, TracWiki


name: TracCgi
author: trac
ipnr: 127.0.0.1
text:
  = Installing Trac as CGI =

  To install Trac as a CGI script, you need to make the `trac.cgi` executable as a CGI by your web server.

    ''Please note that using Trac via CGI is significantly slower than any other deployment method, such as [TracModPython mod_python] or [TracFastCgi FastCGI].''

  If you're using [http://httpd.apache.org/ Apache HTTPD], there are a couple ways to do that:

   1. Use a `ScriptAlias` to map a URL to the `trac.cgi` script
   2. Copy the `trac.cgi` file into the directory for CGI executables used by your web server (commonly named `cgi-bin`). You can also create a symbolic link, but in that case make sure that the `FollowSymLinks` option is enabled for the `cgi-bin` directory.

  The first option is recommended as it also allows you to map the CGI to a friendly URL.

  Now, edit the Apache configuration file and add this snippet, file names and locations changed to match your installation:
  {{{
  ScriptAlias /trac /usr/share/trac/cgi-bin/trac.cgi
  }}}

   ''Note that this directive requires the `mod_alias` module to be installed and enabled.''

  If you're using Trac with a single project you need to set its location using the `TRAC_ENV` environment variable:
  {{{
  <Location "/trac">
    SetEnv TRAC_ENV "/path/to/projectenv"
  </Location>
  }}}

  Or to use multiple projects you can specify their common parent directory using the `TRAC_ENV_PARENT_DIR` variable:
  {{{
  <Location "/trac">
    SetEnv TRAC_ENV_PARENT_DIR "/path/to/project/parent/dir"
  </Location>
  }}}

   ''Note that the `SetEnv` directive requires the `mod_env` module to be installed and enable.''

  This will make Trac available at `http://yourhost.example.org/trac`.

  If you are using the [http://httpd.apache.org/docs/suexec.html Apache suEXEC] feature please see [http://trac.edgewall.org/wiki/ApacheSuexec].

  On some systems, you ''may'' need to edit the shebang line in the `trac.cgi` file to point to your real Python installation path. On a Windows system you may need to configure Windows to know how to execute a .cgi file (Explorer -> Tools -> Folder Options -> File Types -> CGI).

  == Mapping Static Resources ==

  Out of the box, Trac will serve static resources such as style sheets or images itself. For a CGI setup, though, this is highly undesirable, because it results in the CGI script being invoked for documents that could be much more efficiently served by the web server directly.

  Web servers such as [http://httpd.apache.org/ Apache HTTPD] allow you to create “Aliases” to resources, thereby giving them a virtual URL that doesn't necessarily bear any resemblance to the layout of the servers file system. We already used this capability above when defining a `ScriptAlias` for the CGI script, and we'll use it now to map requests to the static resources to the directory on the file system that contains them, thereby bypassing the processing of such requests by the CGI script.

  Edit the Apache configuration file again and add the following snippet '''before''' the `ScriptAlias` for the CGI script , file names and locations changed to match your installation:
  {{{
  Alias /trac/chrome/common /usr/share/trac/htdocs
  <Directory "/usr/share/trac/htdocs">
    Order allow,deny
    Allow from all
  </Directory>
  }}}

  Note that whatever URL path you mapped the `trac.cgi` script to, the path `/chrome/common` is the path you have to append to that location to intercept requests to the static resources. 

  For example, if Trac is mapped to `/cgi-bin/trac.cgi` on your server, the URL of the Alias should be `/cgi-bin/trac.cgi/chrome/common`.

  Alternatively, you can set the `htdocs_location` configuration option in [wiki:TracIni trac.ini]:
  {{{
  [trac]
  htdocs_location = /trac-htdocs
  }}}

  Trac will then use this URL when embedding static resources into HTML pages. Of course, you still need to make the Trac `htdocs` directory available through the web server at the specified URL, for example by copying (or linking) the directory into the document root of the web server:
  {{{
  $ ln -s /usr/share/trac/htdocs /var/www/your_site.com/htdocs/trac-htdocs
  }}}

  == Adding Authentication ==

  The simplest way to enable authentication with Apache is to create a password file. Use the `htpasswd` program to create the password file:
  {{{
  $ htpasswd -c /somewhere/trac.htpasswd admin
  New password: <type password>
  Re-type new password: <type password again>
  Adding password for user admin
  }}}

  After the first user, you dont need the "-c" option anymore:
  {{{
  $ htpasswd /somewhere/trac.htpasswd john
  New password: <type password>
  Re-type new password: <type password again>
  Adding password for user john
  }}}

    ''See the man page for `htpasswd` for full documentation.''

  After you've created the users, you can set their permissions using TracPermissions.

  Now, you'll need to enable authentication against the password file in the Apache configuration:
  {{{
  <Location "/trac/login">
    AuthType Basic
    AuthName "Trac"
    AuthUserFile /somewhere/trac.htpasswd
    Require valid-user
  </Location>
  }}}

  If you're hosting multiple projects you can use the same password file for all of them:
  {{{
  <LocationMatch "/trac/[^/]+/login">
    AuthType Basic
    AuthName "Trac"
    AuthUserFile /somewhere/trac.htpasswd
    Require valid-user
  </LocationMatch>
  }}}

  For better security, it is recommended that you either enable SSL or at least use the “Digest” authentication scheme instead of “Basic”. Please read the [http://httpd.apache.org/docs/2.0/ Apache HTTPD documentation] to find out more.

  ----
  See also:  TracGuide, TracInstall, TracFastCgi, TracModPython


name: WikiRestructuredText
author: trac
ipnr: 127.0.0.1
text:
  = reStructuredText Support in Trac =

  Trac supports using ''reStructuredText'' (RST) as an alternative to wiki markup in any context WikiFormatting is used.

  From the reStucturedText webpage:
   "''reStructuredText is an easy-to-read, what-you-see-is-what-you-get plaintext markup syntax and parser   system. It is useful for in-line program documentation (such as Python docstrings), for quickly creating  simple web pages, and for standalone documents. reStructuredText is designed for extensibility for  specific application domains. ''"

  === Requirements ===
  Note that to activate RST support in Trac, the python docutils package must be installed. 
  If not already available on your operating system, you can download it at the [http://docutils.sourceforge.net/rst.html RST Website].

  === More information on RST ===

   * reStructuredText Website -- http://docutils.sourceforge.net/rst.html
   * RST Quick Reference -- http://docutils.sourceforge.net/docs/rst/quickref.html

  ----

  == Using RST in Trac ==
  To specify that a block of text should be parsed using RST, use the ''rst'' processor. 

  === TracLinks in reStructuredText ===

   * Trac provides a custom RST reference-directive 'trac' to allow TracLinks from within RST text.

   Example:
   {{{
   {{{
   #!rst
   This is a reference to |a ticket|

   .. |a ticket| trac:: #42
   }}}
   }}}

   For a complete example of all uses of the ''trac''-directive, please see WikiRestructuredTextLinks. 


   * Trac allows an even easier way of creating TracLinks in RST, using the custom '':trac:'' link naming scheme.

   Example:
   {{{
   {{{
   #!rst
   This is a reference to ticket `#12`:trac:

   To learn how to use Trac, see `TracGuide`:trac:
   }}}
   }}}

  === Syntax highlighting in reStructuredText ===

  There is a directive for doing TracSyntaxColoring in ReST as well. The directive is called
  code-block

  Example

  {{{
  {{{
  #!rst

  .. code-block:: python

   class Test:

      def TestFunction(self):
          pass

  }}}
  }}}

  Will result in the below.

  {{{
  #!rst

  .. code-block:: python

   class Test:

      def TestFunction(self):
          pass

  }}}

  === WikiMacros in reStructuredText ===

  For doing WikiMacros in ReST you use the same directive as for syntax highlightning i.e
  code-block. To work you must use a version of trac that has #801 applied. 

  === WikiMacro Example ===

  {{{
  {{{
  #!rst

  .. code-block:: HelloWorld
   
     Something I wanted to say


  }}}
  }}}

  Will result in the below.

  [[HelloWorld(Something I wanted to say)]]


  === Bigger ReST Example ===
  The example below should be mostly self-explanatory:
  {{{
  #!html
  <pre class="wiki">{{{
  #!rst
  FooBar Header
  =============
  reStructuredText is **nice**. It has its own webpage_.

  A table:

  =====  =====  ======
     Inputs     Output
  ------------  ------
    A      B    A or B
  =====  =====  ======
  False  False  False
  True   False  True
  False  True   True
  True   True   True
  =====  =====  ======

  RST TracLinks
  -------------

  See also ticket `#42`:trac:.

  .. _webpage: http://docutils.sourceforge.net/rst.html
  }}}</pre>
  }}}


  Results in:
  {{{
  #!rst
  FooBar Header
  =============
  reStructuredText is **nice**. It has its own webpage_.

  A table:

  =====  =====  ======
     Inputs     Output
  ------------  ------
    A      B    A or B
  =====  =====  ======
  False  False  False
  True   False  True
  False  True   True
  True   True   True
  =====  =====  ======

  RST TracLinks
  -------------

  See also ticket `#42`:trac:.

  .. _webpage: http://docutils.sourceforge.net/rst.html
  }}}


  ----
  See also: WikiRestructuredTextLinks, WikiProcessors, WikiFormatting


name: WikiMacros
author: trac
ipnr: 127.0.0.1
text:
  =  Wiki Macros =
  Trac macros are plugins to extend the Trac engine with custom 'functions' written in Python. A macro inserts dynamic HTML data in any context supporting WikiFormatting.

  Another kind of macros are WikiProcessors. They typically deal with alternate markup formats and representation of larger blocks of information (like source code highlighting).

  == Using Macros ==
  Macro calls are enclosed in two ''square brackets''. Like Python functions, macros can also have arguments, a comma separated list within parentheses. 

  === Examples ===

  {{{
   [[Timestamp]]
  }}}
  Display:
   [[Timestamp]]

  {{{
   [[HelloWorld(Testing)]]
  }}}
  Display:
   [[HelloWorld(Testing)]]

  == Available Macros ==

  ''Note that the following list will only contain the macro documentation if you've not enabled `-OO` optimizations, or not set the `PythonOptimize` option for [wiki:TracModPython mod_python].''

  [[MacroList]]

  == Macros from around the world ==

  The [http://trac-hacks.org/ Trac Hacks] site provides a wide collection of macros and other Trac [TracPlugins plugins] contributed by the Trac community. If you're looking for new macros, or have written one that you'd like to share with the world, please don't hesitate to visit that site.

  == Developing Custom Macros ==
  Macros, like Trac itself, are written in the [http://www.python.org/ Python programming language]. They are very simple modules, identified by the filename and should contain a single `execute()` function. Trac will display the returned data inserted into the HTML representation of the Wiki page where the macro is called.

  It's easiest to learn from an example:
  {{{
  #!python
  # MyMacro.py -- The world's simplest macro

  def execute(hdf, args, env):
      return "Hello World called with args: %s" % args
  }}}

  You can also use the environment (`env`) object, for example to access configuration data and the database, for example:
  {{{
  #!python
  def execute(hdf, txt, env):
      return env.config.get('trac', 'repository_dir')
  }}}

  Note that since version 0.9, wiki macros can also be written as TracPlugins. This gives them some capabilities that “classic” macros do not have, such as being able to directly access the HTTP request.

  For more information about developing macros, see the [http://projects.edgewall.com/trac/wiki/TracDev development resources] on the main project site.

  ----
  See also:  WikiProcessors, WikiFormatting, TracGuide


name: WikiStart
author: trac
ipnr: 127.0.0.1
text:
  = Welcome to Trac 0.10.5 =

  Trac is a '''minimalistic''' approach to '''web-based''' management of
  '''software projects'''. Its goal is to simplify effective tracking and handling of software issues, enhancements and overall progress.

  All aspects of Trac have been designed with the single goal to 
  '''help developers write great software''' while '''staying out of the way'''
  and imposing as little as possible on a team's established process and
  culture.

  As all Wiki pages, this page is editable, this means that you can
  modify the contents of this page simply by using your
  web-browser. Simply click on the "Edit this page" link at the bottom
  of the page. WikiFormatting will give you a detailed description of
  available Wiki formatting commands.

  "[wiki:TracAdmin trac-admin] ''yourenvdir'' initenv" created
  a new Trac environment, containing a default set of wiki pages and some sample
  data. This newly created environment also contains 
  [wiki:TracGuide documentation] to help you get started with your project.

  You can use [wiki:TracAdmin trac-admin] to configure
  [http://trac.edgewall.org/ Trac] to better fit your project, especially in
  regard to ''components'', ''versions'' and ''milestones''. 


  TracGuide is a good place to start.

  Enjoy! [[BR]]
  ''The Trac Team''

  == Starting Points ==

   * TracGuide --  Built-in Documentation
   * [http://trac.edgewall.org/ The Trac project] -- Trac Open Source Project
   * [http://trac.edgewall.org/wiki/TracFaq Trac FAQ] -- Frequently Asked Questions
   * TracSupport --  Trac Support

  For a complete list of local wiki pages, see TitleIndex.


name: TracGuide
author: trac
ipnr: 127.0.0.1
text:
  = The Trac User and Administration Guide =
  [[TracGuideToc]]

  The TracGuide is meant to serve as a starting point for all documentation regarding Trac usage and development. The guide is a free document, a collaborative effort, and a part of the [http://projects.edgewall.com/trac/ Trac Project] itself.

  == Table of Contents ==
  Currently available documentation:
   * TracGuide (This page)  -- Documentation starting point.
     * TracInstall -- How to install and run Trac.
     * TracUpgrade -- How to upgrade existing installations.
     * TracAdmin -- Administrating a Trac project.
     * TracImport -- Importing tickets from other bug databases.
     * TracIni -- Trac configuration file reference. 
     * TracPermissions -- Access control and permissions.
     * TracInterfaceCustomization -- Customizing the Trac interface.
     * TracPlugins -- Installing and managing Trac extensions.
     * TracWiki -- How to use the built-in Wiki.
     * TracBrowser -- Browsing source code with Trac.
     * TracChangeset -- Viewing changes to source code.
     * TracTickets -- Using the issue tracker.
     * TracReports -- Writing and using reports.
     * TracQuery -- Executing custom ticket queries.
     * TracRoadmap -- The roadmap helps tracking project progress.
     * TracTimeline -- The timeline provides a historic perspective on a project.
     * TracLogging -- The Trac logging facility.
     * TracRss -- RSS content syndication in Trac.
     * TracNotification -- Email notification.

   * [http://projects.edgewall.com/trac/wiki/TracFaq Trac FAQ] - A collection of Frequently Asked Questions (on the project website)

  == Support and Other Sources of Information ==
  If you are looking for a good place to ask a question about Trac, look no further than the [http://projects.edgewall.com/trac/wiki/MailingList MailingList]. It provides a friendly environment to discuss openly among Trac users and developers.

  See also the TracSupport page for more information resources.


name: WikiFormatting
author: trac
ipnr: 127.0.0.1
text:
  = WikiFormatting =
  [[TracGuideToc]]

  Wiki markup is a core feature in Trac, tightly integrating all the other parts of Trac into a flexible and powerful whole.

  Trac has a built in small and powerful wiki rendering engine. This wiki engine implements an ever growing subset of the commands from other popular Wikis,
  especially [http://moinmoin.wikiwikiweb.de/ MoinMoin]. 


  This page demonstrates the formatting syntax available anywhere WikiFormatting is allowed.


  == Font Styles ==

  The Trac wiki supports the following font styles:
  {{{
   * '''bold''', '''!''' can be bold too''', and '''! '''
   * ''italic''
   * '''''bold italic'''''
   * __underline__
   * {{{monospace}}} or `monospace`
   * ~~strike-through~~
   * ^superscript^ 
   * ,,subscript,,
  }}}

  Display:
   * '''bold''', '''!''' can be bold too''', and '''! '''
   * ''italic''
   * '''''bold italic'''''
   * __underline__
   * {{{monospace}}} or `monospace`
   * ~~strike-through~~
   * ^superscript^ 
   * ,,subscript,,

  Notes:
   * `{{{...}}}` and {{{`...`}}} commands not only select a monospace font, but also treat their content as verbatim text, meaning that no further wiki processing is done on this text.
   * {{{ ! }}} tells wiki parser to not take the following characters as wiki format, so pay attention to put a space after !, e.g. when ending bold.

  == Headings ==

  You can create heading by starting a line with one up to five ''equal'' characters ("=")
  followed by a single space and the headline text. The line should end with a space 
  followed by the same number of ''='' characters.
  The heading might optionally be followed by an explicit id. If not, an implicit but nevertheless readable id will be generated.

  Example:
  {{{
  = Heading =
  == Subheading ==
  === About ''this'' ===
  === Explicit id === #using-explicit-id-in-heading
  }}}

  Display:
  = Heading =
  == Subheading ==
  === About ''this'' ===
  === Explicit id === #using-explicit-id-in-heading

  == Paragraphs ==

  A new text paragraph is created whenever two blocks of text are separated by one or more empty lines.

  A forced line break can also be inserted, using:
  {{{
  Line 1[[BR]]Line 2
  }}}
  Display:

  Line 1[[BR]]Line 2


  == Lists ==

  The wiki supports both ordered/numbered and unordered lists.

  Example:
  {{{
   * Item 1
     * Item 1.1
   * Item 2

   1. Item 1
     a. Item 1.a
     a. Item 1.b
        i. Item 1.b.i
        i. Item 1.b.ii
   1. Item 2
  And numbered lists can also be given an explicit number:
   3. Item 3
  }}}

  Display:
   * Item 1
     * Item 1.1
   * Item 2

   1. Item 1
     a. Item 1.a
     a. Item 1.b
        i. Item 1.b.i
        i. Item 1.b.ii
   1. Item 2
  And numbered lists can also be given an explicit number:
   3. Item 3

  Note that there must be one or more spaces preceding the list item markers, otherwise the list will be treated as a normal paragraph.


  == Definition Lists ==


  The wiki also supports definition lists.

  Example:
  {{{
   llama::
     some kind of mammal, with hair
   ppython::
     some kind of reptile, without hair
     (can you spot the typo?)
  }}}

  Display:
   llama::
     some kind of mammal, with hair
   ppython::
     some kind of reptile, without hair
     (can you spot the typo?)

  Note that you need a space in front of the defined term.


  == Preformatted Text ==

  Block containing preformatted text are suitable for source code snippets, notes and examples. Use three ''curly braces'' wrapped around the text to define a block quote. The curly braces need to be on a separate line.
    
  Example:
  {{{
   {{{
    def HelloWorld():
        print "Hello World"
   }}}
  }}}

  Display:
  {{{
   def HelloWorld():
       print "Hello World"
  }}}


  == Blockquotes ==

  In order to mark a paragraph as blockquote, indent that paragraph with two spaces.

  Example:
  {{{
    This text is a quote from someone else.
  }}}

  Display:
    This text is a quote from someone else.

  == Discussion Citations ==

  To delineate a citation in an ongoing discussion thread, such as the ticket comment area, e-mail-like citation marks (">", ">>", etc.) may be used.  

  Example:
  {{{
  >> Someone's original text
  > Someone else's reply text
  My reply text
  }}}

  Display:
  >> Someone's original text
  > Someone else's reply text
  My reply text

  ''Note: Some WikiFormatting elements, such as lists and preformatted text, are  lost in the citation area.  Some reformatting may be necessary to create a clear citation.''

  == Tables ==

  Simple tables can be created like this:
  {{{
  ||Cell 1||Cell 2||Cell 3||
  ||Cell 4||Cell 5||Cell 6||
  }}}

  Display:
  ||Cell 1||Cell 2||Cell 3||
  ||Cell 4||Cell 5||Cell 6||

  Note that more complex tables can be created using
  [wiki:WikiRestructuredText#BiggerReSTExample reStructuredText].


  == Links ==

  Hyperlinks are automatically created for WikiPageNames and URLs. !WikiPageLinks can be disabled by prepending an exclamation mark "!" character, such as {{{!WikiPageLink}}}.

  Example:
  {{{
   TitleIndex, http://www.edgewall.com/, !NotAlink
  }}}

  Display:
   TitleIndex, http://www.edgewall.com/, !NotAlink

  Links can be given a more descriptive title by writing the link followed by a space and a title and all this inside square brackets.  If the descriptive title is omitted, then the explicit prefix is discarded, unless the link is an external link. This can be useful for wiki pages not adhering to the WikiPageNames convention.

  Example:
  {{{
   * [http://www.edgewall.com/ Edgewall Software]
   * [wiki:TitleIndex Title Index]
   * [wiki:ISO9000]
  }}}

  Display:
   * [http://www.edgewall.com/ Edgewall Software]
   * [wiki:TitleIndex Title Index]
   * [wiki:ISO9000]


  === Trac Links ===

  Wiki pages can link directly to other parts of the Trac system. Pages can refer to tickets, reports, changesets, milestones, source files and other Wiki pages using the following notations:
  {{{
   * Tickets: #1 or ticket:1
   * Reports: {1} or report:1
   * Changesets: r1, [1] or changeset:1
   * ...
  }}}

  Display:
   * Tickets: #1 or ticket:1
   * Reports: {1} or report:1
   * Changesets: r1, [1] or changeset:1
   * ... 

  See TracLinks for more in-depth information.


  == Escaping Links and WikiPageNames ==

  You may avoid making hyperlinks out of TracLinks by preceding an expression with a single "!" (exclamation mark).

  Example:
  {{{
   !NoHyperLink
   !#42 is not a link
  }}}

  Display:
   !NoHyperLink
   !#42 is not a link


  == Images ==

  Urls ending with `.png`, `.gif` or `.jpg` are no longer automatically interpreted as image links, and converted to `<img>` tags.

  You now have to use the ![[Image]] macro (see below).


  == Macros ==

  Macros are ''custom functions'' to insert dynamic content in a page.

  Example:
  {{{
   [[Timestamp]]
  }}}

  Display:
   [[Timestamp]]

  See WikiMacros for more information, and a list of installed macros.


  == Processors ==

  Trac supports alternative markup formats using WikiProcessors. For example, processors are used to write pages in 
  [wiki:WikiRestructuredText reStructuredText] or [wiki:WikiHtml HTML]. 

  Example 1:
  {{{
  #!html
  <pre class="wiki">{{{
  #!html
  &lt;h1 style="text-align: right; color: blue"&gt;HTML Test&lt;/h1&gt;
  }}}</pre>
  }}}

  Display:
  {{{
  #!html
  <h1 style="text-align: right; color: blue">HTML Test</h1>
  }}}

  Example:
  {{{
  #!html
  <pre class="wiki">{{{
  #!python
  class Test:

      def __init__(self):
          print "Hello World"
  if __name__ == '__main__':
     Test()
  }}}</pre>
  }}}

  Display:
  {{{
  #!python
  class Test:
      def __init__(self):
          print "Hello World"
  if __name__ == '__main__':
     Test()
  }}}

  Perl:
  {{{
  #!perl
  my ($test) = 0;
  if ($test > 0) {
      print "hello";
  }
  }}}

  See WikiProcessors for more information.


  == Miscellaneous ==

  Four or more dashes will be replaced by a horizontal line (<HR>)

  Example:
  {{{
   ----
  }}}

  Display:
  ----


  ----
  See also: TracLinks, TracGuide, WikiHtml, WikiMacros, WikiProcessors, TracSyntaxColoring.


name: TracTickets
author: trac
ipnr: 127.0.0.1
text:
  = The Trac Ticket System =
  [[TracGuideToc]]

  The Trac issue database provides simple but effective tracking of issues and bugs within a project.

  As the central project management element of Trac, tickets are used for '''project tasks''', '''feature requests''', '''bug reports''' and '''software support issues'''. 

  As with the TracWiki, this subsystem has been designed with the goal of making user contribution and participation as simple as possible. It should be as easy as possible to report bugs, ask questions and suggest improvements.

  An issue is assigned to a person who must resolve it or reassign the ticket to someone else.
  All tickets can be edited, annotated, assigned, prioritized and discussed at any time.

  == Ticket Fields ==

  A  ticket contains the following information attributes:
   
   * '''Reporter''' - The author of the ticket.
   * '''Type''' - The nature of the ticket (for example, defect or enhancement request)

   * '''Component''' - The project module or subsystem this ticket concerns.
   * '''Version''' - Version of the project that this ticket pertains to.
   * '''Keywords''' - Keywords that a ticket is marked with.  Useful for searching and report generation.

   * '''Priority''' - The importance of this issue, ranging from ''trivial'' to ''blocker''.
   * '''Milestone''' - When this issue should be resolved at the latest.
   * '''Assigned to/Owner''' - Principal person responsible for handling the issue.
   * '''Cc''' - A list of other associated people. ''Note that this does not imply responsiblity or any other policy.''
   
   * '''Resolution''' - Reason for why a ticket was closed. One of {{{fixed}}}, {{{invalid}}}, {{{wontfix}}}, {{{duplicate}}}, {{{worksforme}}}.
   * '''Status''' - What is the current status? One of {{{new}}}, {{{assigned}}}, {{{closed}}}, {{{reopened}}}.
   * '''Summary''' - A brief description summarizing the problem or issue.
   * '''Description''' - The body of the ticket. A good description should be specific, descriptive and to the point.

  '''Note:''' Versions of Trac prior to 0.9 did not have the ''type'' field, but instead provided a ''severity'' field and different default values for the ''priority'' field. This change was done to simplify the ticket model by removing the somewhat blurry distinction between ''priority'' and ''severity''. However, the old model is still available if you prefer it: just add/modify the default values of the ''priority'' and ''severity'', and optionally hide the ''type'' field by removing all the possible values through [wiki:TracAdmin trac-admin].

  '''Note:''' the ''type'' (TicketTypes), ''component'' (TicketComponent), ''version'' (TicketVersion), ''priority'' (TicketPriority) and ''severity'' (TicketSeverity) fields can all be managed through [wiki:TracAdmin trac-admin].

  == Changing and Commenting Tickets ==

  Once a ticket has been entered into Trac, you can at any time change the
  information by '''annotating''' the bug. This means changes and comments to
  the ticket are logged as a part of the ticket itself.

  When viewing a ticket, the history of changes will appear below the main ticket area.

  ''In the Trac project, we use ticket comments to discuss issues and tasks. This makes
  understanding the motivation behind a design- or implementation choice easier,
  when returning to it later.''

  '''Note:''' An important feature is being able to use TracLinks and
  WikiFormatting in ticket descriptions and comments. Use TracLinks to refer to
  other issues, changesets or files to make your ticket more specific and easier
  to understand.

  '''Note:''' See TracNotification for how to configure email notifications of ticket changes.

  === State Diagram ===
  [[Image(http://projects.edgewall.com/trac/attachment/wiki/TracTickets/Trac%20Ticket%20State%20Chart%2020060603DF.png?format=raw)]]


  == Default Values for Drop-Down Fields ==

  The option selected by default for the various drop-down fields can be set in [wiki:TracIni trac.ini], in the `[ticket]` section:

   * `default_component`: Name of the component selected by default
   * `default_milestone`: Name of the default milestone
   * `default_priority`: Default priority value
   * `default_severity`: Default severity value
   * `default_type`: Default ticket type
   * `default_version`: Name of the default version

  If any of these options are omitted, the default value will either be the first in the list, or an empty value, depending on whether the field in question is required to be set.


  == Hiding Fields and Adding Custom Fields ==

  Many of the default ticket fields can be hidden from the ticket web interface simply by removing all the possible values through [wiki:TracAdmin trac-admin]. This of course only applies to drop-down fields, such as ''type'', ''priority'', ''severity'', ''component'', ''version'' and ''milestone''.

  Trac also lets you add your own custom ticket fields. See TracTicketsCustomFields for more information.


  == Assign-to as Drop-Down List ==

  If the list of possible ticket owners is finite, you can change the ''assign-to'' ticket field from a text input to a drop-down list. This is done by setting the `restrict_owner` option of the `[ticket]` section in [wiki:TracIni trac.ini] to “true”. In that case, Trac will use the list of all users who have logged in and set their email address to populate the drop-down field.

  To appear in the dropdown list, a user needs be registered with the project, ''i.e.'' a user session should exist in the database. Such an entry is automatically created in the database the first time the user submits a change in the project, for example when editing the user's details in the ''Settings'' page. Also, the user must have `TICKET_MODIFY` [TracPermissions permissions].

  == Preset Values for New Tickets ==

  To create a link to the new-ticket form filled with preset values, you need to call the `/newticket?` URL with variable=value separated by &. 

  Possible variables are :

   * '''type''' - The type droplist
   * '''reporter''' - Name or email of the reporter
   * '''summary''' - Summary line for the ticket
   * '''description''' - Long description of the ticket
   * '''component''' - The component droplist
   * '''version''' - The version droplist
   * '''severity''' - The severity droplist
   * '''keywords''' - The keywords 
   * '''priority''' - The priority droplist
   * '''milestone''' - The milestone droplist
   * '''owner''' - The person responsible for the ticket
   * '''cc''' - The list of emails for notifying about the ticket change

  '''Example:''' ''/trac/newticket?summary=Compile%20Error&version=1.0&component=gui''

  ----
  See also:  TracGuide, TracWiki, TracTicketsCustomFields, TracNotification


name: TracAccessibility
author: trac
ipnr: 127.0.0.1
text:
  = Accessibility Support in Trac =

  Not every user has a graphic environment with a mouse or other pointing device. Some users rely on keyboard, alternative keyboard or voice input to navigate links, activate form controls, etc. In Trac, we work to assure users may interact with devices other than a pointing device.

  Trac supports accessibility keys for the most common operations. On Windows and Linux platforms, press any of the keys listed below in combination with the `<Alt>` key; on a Mac, use the `<ctrl>` key instead.

  ''Note that when using Internet Explorer on Windows, you need to hit enter after having used the access key.''

  == Global Access Keys ==

   * `1` - WikiStart
   * `2` - [wiki:TracTimeline Timeline]
   * `3` - [wiki:TracRoadmap Roadmap]
   * `4` - [wiki:TracSearch Search]
   * `6` - [wiki:TracGuide Trac Guide / Documentation]
   * `7` - [wiki:TracTickets New Ticket]
   * `9` - [../about About Trac]
   * `0` - This page
   * `e` - Edit this page
   * `f` - Search


  ----
  See also: TracGuide


name: TracInstall
author: trac
ipnr: 127.0.0.1
text:
  = Trac Installation Guide = 
  [[TracGuideToc]]

  Trac is a lightweight project management tool that is implemented as a web-based application. Trac is written in the Python programming language and needs a database (either [http://sqlite.org/ SQLite], [http://www.postgresql.org/ PostgreSQL], or [http://mysql.com/ MySQL] works). For HTML rendering, Trac uses the [http://www.clearsilver.net/ ClearSilver] templating system.

  What follows are generic instructions for installing and setting up Trac and its requirements. While you can find instructions for installing Trac on specific systems at [http://projects.edgewall.com/trac/wiki/TracInstallPlatforms TracInstallPlatforms] on the main Trac site, please be sure to first read through these general instructions to get a good understanding of the tasks involved.

  == Requirements ==

  To install Trac, the following software packages must be installed:

   * [http://www.python.org/ Python], version >= 2.3.
     * For RPM-based systems you might also need the `python-devel` and `python-xml` packages.
     * If you want to use Trac with Subversion on Windows, note that there are no precompiled Subversion bindings for Python 2.4, so you probably need Python 2.3.
      * 2006-09-20: This seems to be no longer true, see http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91. For subversion 1.4.0 python 2.4 binary bindings are available.
   * [http://www.clearsilver.net/ ClearSilver], version >= 0.9.3
     * With python-bindings (`./configure --with-python=/usr/bin/python`)
   * You also need a database system and the corresponding python drivers for it.
     The database can be either SQLite, PostgreSQL or MySQL ''(experimental)''.

  === For SQLite ===

   * [http://www.sqlite.org/ SQLite], version 2.8.x or 3.x (preferred)
   * [http://pysqlite.org/ PySQLite], version 1.x (for SQLite 2.x) or version 2.x (for SQLite 3.x). For details see [http://trac.edgewall.org/wiki/PySqlite PySqlite]

  ''Note: Versions of Trac prior to 0.9 do '''not''' work with PySQLite 2.x.''

  ''Note: It appears that PySQLite 2.x is required for Trac 0.9+/SQLite 3.x if you plan to use the 'trac-post-commit-hook.py' script available from the 'contrib' section of the source repository.''

  ''Note: Users of Mac OS X please take care; the Apple-supplied SQLite contains additional code to support file locking on network filesystems like AFP or SMB. This is not presently (3.3.6) in the mainline sources, so if you build your own SQLite from source it will not function correctly on such filesystems - typically it gives the error "{{{database is locked}}}". [http://www.alastairs-place.net/2006/07/sqlite_and_mac/ A patch] is available for version 3.3.6, based on Apple's code, otherwise you're probably best off using the Apple supplied version (presently 3.1.3).''

  === For PostgreSQL ===

   * [http://www.postgresql.org/ PostgreSQL]
   * [http://initd.org/projects/psycopg2 psycopg2] or [http://pypgsql.sourceforge.net/ pyPgSQL]

  ''Note: PostgreSQL support requires Trac version 0.9 or later.''

  === For MySQL ===

  '''Warning''': MySQL support is currently experimental. That means it works for some people, but has not been tested extensively yet.

   * [http://mysql.com/ MySQL], version 4.1 or later
   * [http://sf.net/projects/mysql-python MySQLdb], version 1.2.1 or later

  ''Note: MySQL support requires Trac version 0.10 or later.''

  === Optional Requirements ===

  ==== Version Control System ====
   * [http://subversion.tigris.org/ Subversion], version >= 1.0. (either 1.2.3 or >= 1.3.1 recommended) and corresponding [http://svnbook.red-bean.com/svnbook-1.1/ch08s02.html#svn-ch-8-sect-2.3 Python bindings]. For troubleshooting, check [http://projects.edgewall.com/trac/wiki/TracSubversion TracSubversion]
     * Trac uses the [http://www.swig.org/ SWIG] bindings included in the Subversion distribution, '''not''' [http://pysvn.tigris.org/ PySVN] (which is sometimes confused with the standard SWIG bindings).
     * If Subversion was already installed without the SWIG bindings, you'll need to re-`configure` Subversion and `make swig-py`, `make install-swig-py`.
   * Support for other version control systems is provided via third-parties. See [http://projects.edgewall.com/trac/wiki/PluginList PluginList] and [http://projects.edgewall.com/trac/wiki/VersioningSystemBackend VersioningSystemBackend].

  ==== Web Server ====
   * A CGI-capable web server (see TracCgi), or
   * a [http://www.fastcgi.com/ FastCGI]-capable web server (see TracFastCgi), or
   * [http://httpd.apache.org/ Apache] with [http://www.modpython.org/ mod_python 3.1.3+] (see TracModPython)
      * When installing mod_python the development versions of Python and Apache are required (actually the libraries and header files)

  For those stuck with Apache 1.3, it is also possible to get Trac 0.8.4 working with [http://www.modpython.org/ mod_python 2.7] (see [wiki:TracModPython2.7 TracModPython2.7]). This hasn't been tested with Trac 0.9, so it may or may not work.

  ==== Other Python Utilities ====
   * [http://peak.telecommunity.com/DevCenter/setuptools setuptools], version >= 0.6 for using plugins (see TracPlugins)
   * [http://docutils.sourceforge.net/ docutils], version >= 0.3.9 for WikiRestructuredText.
   * [http://silvercity.sourceforge.net/ SilverCity] and/or [http://www.gnu.org/software/enscript/enscript.html Enscript] for [wiki:TracSyntaxColoring syntax highlighting].
      * Note that !SilverCity 0.9.6 has a [http://sourceforge.net/tracker/index.php?func=detail&aid=1424436&group_id=45693&atid=443739 bug] that breaks Python syntax highlighting in Trac. Until an update is made available, we recommend using version 0.9.5.

  '''Attention''': The various available versions of these dependencies are not necessarily interchangable, so please pay attention to the version numbers above. If you are having trouble getting Trac to work please double-check all the dependencies before asking for help on the [http://projects.edgewall.com/trac/wiki/MailingList MailingList] or [http://projects.edgewall.com/trac/wiki/IrcChannel IrcChannel].

  Please refer to the documentation of these packages to find out how they are best installed. In addition, most of the [http://projects.edgewall.com/trac/wiki/TracInstallPlatforms platform-specific instructions] also describe the installation of the dependencies. Keep in mind however that the information there might concern older versions of Trac than the one you're installing (in particular, 
  there are still some pages that are about Trac 0.8).

  == Installing Trac ==

  Like most Python programs, the Trac Python package is installed by running the following command at the top of the source directory:
  {{{
  $ python ./setup.py install
  }}}

  ''Note: you'll need root permissions or equivalent for this step.''

  This will byte-compile the python source code and install it in the `site-packages` directory
  of your Python installation. The directories `cgi-bin`, `templates`, `htdocs`, `wiki-default` and `wiki-macros` are all copied to `$prefix/share/trac/`. `conf` and `plugins` stub directories are also created under `$prefix/share/trac/` (''since [milestone:0.10]'').

  The script will also install the [wiki:TracAdmin trac-admin] command-line tool, used to create and maintain [wiki:TracEnvironment project environments], as well as the [wiki:TracStandalone tracd] standalone server.

  === Advanced Options ===

  To install Trac to a custom location, or find out about other advanced installation options, run:
  {{{
  $ python ./setup.py install --help
  }}}

  Also see [http://docs.python.org/inst/inst.html Installing Python Modules] for detailed information.

  Specifically, you might be interested in:
  {{{
  $ python ./setup.py install --prefix=/path/to/installdir
  }}}

  == Creating a Project Environment ==

  A [wiki:TracEnvironment Trac environment] is the backend storage where Trac stores information like wiki pages, tickets, reports, settings, etc. An environment is basically a directory that contains a human-readable configuration file and various other files and directories.

  A new environment is created using [wiki:TracAdmin trac-admin]:
  {{{
  $ trac-admin /path/to/myproject initenv
  }}}

  [wiki:TracAdmin trac-admin] will prompt you for the information it needs to create the environment, such as the name of the project, the type and the path to an existing [wiki:TracEnvironment#SourceCodeRepository source code repository], the [wiki:TracEnvironment#DatabaseConnectionStrings database connection string], and so on. If you're not sure what to specify for one of these options, just leave it blank to use the default value. The database connection string in particular will always work as long as you have SQLite installed. Leaving the path to the source code repository empty will disable any functionality related to version control, but you can always add that back when the basic system is running.

  Also note that the values you specify here can be changed later by directly editing the [wiki:TracIni] configuration file.

  ''Note: The user account under which the web server runs will require write permissions to the environment
  directory and all the files inside.''


  == Running the Standalone Server ==

  After having created a Trac environment, you can easily try the web interface by running the standalone server [wiki:TracStandalone tracd]:
  {{{
  $ tracd --port 8000 /path/to/myproject
  }}}

  Then, fire up a browser and visit `http://localhost:8000/`. You should get a simple listing of all environments that tracd knows about. Follow the link to the environment you just created, and you should see Trac in action.


  == Running Trac on a Web Server ==

  Trac provides three options for connecting to a “real” web server: [wiki:TracCgi CGI], [wiki:TracFastCgi FastCGI] and [wiki:TracModPython mod_python]. For decent performance, it is recommended that you use either FastCGI or mod_python.

  == Configuring Authentication ==

  The process of adding, removing, and configuring user accounts for authentication depends on the specific way you run Trac. The basic procedure is described in the [wiki:TracCgi#AddingAuthentication "Adding Authentication"] section on the TracCgi page. To learn how to setup authentication for the frontend you're using, please refer to one of the following pages:

   * TracStandalone if you use the standalone server, `tracd`.
   * TracCgi if you use the CGI or FastCGI methods.
   * TracModPython if you use the mod_python method.

  == Using Trac ==

  Once you have your Trac site up and running, you should be able to browse your subversion repository, create tickets, view the timeline, etc.

  Keep in mind that anonymous (not logged in) users can by default access most but not all of the features. You will need to configure authentication and grant additional [wiki:TracPermissions permissions] to authenticated users to see the full set of features.

  '' Enjoy! ''

  [http://projects.edgewall.com/trac/wiki/TracTeam The Trac Team]

  ----
  See also:  TracGuide, TracCgi, TracFastCgi, TracModPython, TracUpgrade, TracPermissions


name: TracQuery
author: trac
ipnr: 127.0.0.1
text:
  = Trac Ticket Queries =
  [[TracGuideToc]]

  In addition to [wiki:TracReports reports], Trac provides support for ''custom ticket queries'', used to display lists of tickets meeting a specified set of criteria. 

  To configure and execute a custom query, switch to the ''View Tickets'' module from the navigation bar, and select the ''Custom Query'' link.

  == Filters ==
  When you first go to the query page the default filters will display all open tickets, or if you're logged in it will display open tickets assigned to you.  Current filters can be removed by clicking the button to the right with the minus sign on the label.  New filters are added from the pulldown list in the bottom-right corner of the filters box.  Filters with either a text box or a pulldown menu of options can be added multiple times to perform an ''or'' of the criteria.

  You can use the fields just below the filters box to group the results based on a field, or display the full description for each ticket.

  Once you've edited your filters click the ''Update'' button to refresh your results.

  == Navigating Tickets ==
  Clicking on one of the query results will take you to that ticket.  You can navigate through the results by clicking the ''Next Ticket'' or ''Previous Ticket'' links just below the main menu bar, or click the ''Back to Query'' link to return to the query page.  

  You can safely edit any of the tickets and continue to navigate through the results using the ''Next/Previous/Back to Query'' links after saving your results.  When you return to the query ''any tickets which was edited'' will be displayed with italicized text.  If one of the tickets was edited such that [[html(<span style="color: grey">it no longer matches the query criteria </span>)]] the text will also be greyed. Lastly, if '''a new ticket matching the query critera has been created''', it will be shown in bold. 

  The query results can be refreshed and cleared of these status indicators by clicking the ''Update'' button again.

  == Saving Queries ==

  While Trac does not yet allow saving a named query and somehow making it available in a navigable list, you can save references to queries in Wiki content, as described below.

  === Using TracLinks ===

  You may want to save some queries so that you can come back to them later.  You can do this by making a link to the query from any Wiki page.
  {{{
  [query:status=new|assigned|reopened&version=1.0 Active tickets against 1.0]
  }}}

  Which is displayed as:
    [query:status=new|assigned|reopened&version=1.0 Active tickets against 1.0]

  This uses a very simple query language to specify the criteria (see [wiki:TracQuery#QueryLanguage Query Language]).

  Alternatively, you can copy the query string of a query and paste that into the Wiki link, including the leading `?` character:
  {{{
  [query:?status=new&status=assigned&status=reopened&group=owner Assigned tickets by owner]
  }}}

  Which is displayed as:
    [query:?status=new&status=assigned&status=reopened&group=owner Assigned tickets by owner]

  === Using the `[[TicketQuery]]` Macro ===

  The `[[TicketQuery]]` macro lets you display lists of tickets matching certain criteria anywhere you can use WikiFormatting.

  Example:
  {{{
  [[TicketQuery(version=1.0|2.0&resolution=duplicate)]]
  }}}

  This is displayed as:
    [[TicketQuery(version=1.0|2.0&resolution=duplicate)]]

  Just like the [wiki:TracQuery#UsingTracLinks query: wiki links], the parameter of this macro expects a query string formatted according to the rules of the simple [wiki:TracQuery#QueryLanguage ticket query language].

  A more compact representation without the ticket summaries is also available:
  {{{
  [[TicketQuery(version=1.0|2.0&resolution=duplicate, compact)]]
  }}}

  This is displayed as:
    [[TicketQuery(version=1.0|2.0&resolution=duplicate, compact)]]

  === Query Language ===

  `query:` TracLinks and the `[[TicketQuery]]` macro both use a mini “query language” for specifying query filters. Basically, the filters are separate by ampersands (`&`). Each filter then consists of the ticket field name, an operator, and one or more values. More than one value are separated by a pipe (`|`), meaning that the filter matches any of the values.

  The available operators are:
  || '''=''' || the field content exactly matches the one of the values ||
  || '''~=''' || the field content contains one or more of the values ||
  || '''!^=''' || the field content starts with one of the values ||
  || '''$=''' || the field content ends with one of the values ||

  All of these operators can also be negated:
  || '''!=''' || the field content matches none of the values ||
  || '''!~=''' || the field content does not contain any of the values ||
  || '''!!^=''' || the field content does not start with any of the values ||
  || '''!$=''' || the field content does not end with any of the values ||

  ----
  See also: TracTickets, TracReports, TracGuide


name: TracIni
author: trac
ipnr: 127.0.0.1
text:
  = The Trac Configuration File =
  [[TracGuideToc]]

  Trac configuration is done by editing the '''`trac.ini`''' config file, located in `<projectenv>/conf/trac.ini`.

  == Global Configuration ==

  Since version 0.9, Trac can also read the configuration from a global `trac.ini` file. These global options will then be merged with the environment-specific options, where local options override global options.

  The global configuration is by default localted in `$prefix/share/trac/conf/trac.ini`. It can be moved to a different location (for example, `/etc/trac.ini`), but that requires changing the file `trac/siteconfig.py` which gets created when Trac is installed. 

  == Reference ==

  This is a brief reference of available configuration options.

  [[TracIni]]

  == [components] ==
  (''since 0.9'')

  This section is used to enable or disable components provided by plugins, as well as by Trac itself. The component to enable/disable is specified via the name of the option. Whether its enabled is determined by the option value; setting the value to `enabled` or `on` will enable the component, any other value (typically `disabled` or `off`) will disable the component.

  The option name is either the fully qualified name of the components or the module/package prefix of the component. The former enables/disables a specific component, while the latter enables/disables any component in the specified package/module.

  Consider the following configuration snippet:
  {{{
  [components]
  trac.ticket.report.ReportModule = disabled
  webadmin.* = enabled
  }}}

  The first option tells Trac to disable the [wiki:TracReports report module]. The second option instructs Trac to enable all components in the `webadmin` package. Note that the trailing wildcard is required for module/package matching.

  See the ''Plugins'' page on ''About Trac'' to get the list of active components (requires `CONFIG_VIEW` [wiki:TracPermissions permissions].)

  See also: TracPlugins

    ''Note that prior to Trac r2335 (that applies to 0.9b1 and 0.9b2), you would use a `[disabled_components]` section instead. See a [http://projects.edgewall.com/trac/wiki/TracIni?version=42 previous version] of this page for the details.''

  ----
  See also: TracGuide, TracAdmin, TracEnvironment


name: TracUpgrade
author: trac
ipnr: 127.0.0.1
text:
  = Upgrade Instructions =
  [[TracGuideToc]]

  A Trac environment sometimes needs to be upgraded before it can be used with a new version of Trac. This document describes the steps necessary to upgrade an environment.

   '''Note''': ''Environment upgrades are not necessary for minor version releases unless otherwise noted. For example, there's no need to upgrade a Trac environment created with (or upgraded) 0.8.0 when installing 0.8.4 (or any other 0.8.x release).''

  == General Instructions ==

  Typically, there are four steps involved in upgrading to a newer version of Trac:

  === Update the Trac Code ===

  Get the new version of Trac, either by downloading an offical release package or by checking it out from the [http://projects.edgewall.com/trac/wiki/SubversionRepository Subversion repository].

  If you're doing a major version upgrade (such as from 0.8 to 0.9), it is ''highly'' recommended that you first remove the existing Trac code. To do this, you need to delete the `trac` directory from the Python `lib/site-packages` directory. You may also want to remove the Trac `cgi-bin`, `htdocs`, `templates` and `wiki-default` directories that are commonly found in a directory called `share/trac` (the exact location depends on your platform).

  If you have a source distribution, you need to run
  {{{
  python setup.py install
  }}}

  to install the new version. If you've downloaded the Windows installer, you execute it, and so on.

  === Upgrade the Trac Environment ===

  Unless noted otherwise, upgrading between major versions (such as 0.8 and 0.9) involves changes to the database schema, and possibly the layout of the [wiki:TracEnvironment environment directory]. Fortunately, Trac provides automated upgrade scripts to ease the pain. These scripts are run via [wiki:TracAdmin trac-admin]:
  {{{
  trac-admin /path/to/projenv upgrade
  }}}

  This command will do nothing if the environment is already up-to-date.

  Note that if you are using a PostgreSQL database, this command will fail with the message that the environment can only be backed up when you use an SQLite database. This means that you will have to backup the repository and the database manually. Then, to perform the actual upgrade, run:
  {{{
  trac-admin /path/to/projenv upgrade --no-backup
  }}}

  === Update the Trac Documentation ===

  Every [wiki:TracEnvironment Trac environment] includes a copy of the Trac documentation for the installed version. As you probably want to keep the included documentation in sync with the installed version of Trac, [wiki:TracAdmin trac-admin] provides a command to upgrade the documentation:
  {{{
  trac-admin /path/to/projenv wiki upgrade
  }}}

  Note that this procedure will of course leave your `WikiStart` page intact.

  === Restart the Web Server ===

  In order to reload the new Trac code you will need to restart your web server (note this is not necessary for [wiki:TracCgi CGI]).

  == Specific Versions ==

  The following sections discuss any extra actions that may need to be taken to upgrade to specific versions of Trac.

  == From 0.9.x to 0.10.x ==

  Due to some changes in the Wiki syntax, you may notice that certain parts of your pages no longer work as expected:
   * Previously, links to images would result in that image being embedded into the page. Since 0.10, links to images remain plain links. If you want to embed an image in the page, use the `[[Image]]` macro.
   * You can no longer use `%20` in wiki links to encode spaces. Instead, you should quote the name containing spaces (for example, use `wiki:"My page"` instead of `wiki:My%20page`.)

  Several enhancements have been made to the version control subsystem, in particular for the support of scoped repositories has been improved. 
  It is recommended that you perform a [TracAdmin#InteractiveMode trac-admin] '''`resync`''' operation to take advantage of these improvements.

  Also note that the argument list of the [TracAdmin trac-admin] '''`initenv`''' command has changed: there's a new argument for determining the type of version control system. The old usage was:
  {{{
     initenv <projectname> <db> <repospath> <templatepath>
  }}}
  The new usage is:
  {{{
     initenv <projectname> <db> <repostype> <repospath> <templatepath>
  }}}
  If you're using any scripts that automate the creation of Trac environments, you will need to update them. If you're using Subversion, specify `svn` for the `<repostype>` argument.

  == From 0.9.3 to 0.9.4 ==

  There is a bug in Pysqlite 1.x that causes reports using the "%" character for `LIKE` clauses or date formatting to fail.  You will need to use escape the percent characters with another: "%%".

  == From 0.9.x to 0.9.3 or later ==

  If you are using plugins you might need to upgrade them. See http://projects.edgewall.com/trac/milestone/0.9.3 for further details.

  == From 0.9-beta to 0.9 ==

  If inclusion of the static resources (style sheets, javascript, images) is not working, check the value of the `htdocs_location` in trac.ini. For [wiki:TracModPython mod_python], [wiki:TracStandalone Tracd] and [wiki:TracFastCgi FastCGI], you can simply remove the option altogether. For [wiki:TracCgi CGI], you should fix it to point to the URL you mapped the Trac `htdocs` directory to (although you can also remove it and then [wiki:TracCgi#MappingStaticResources map the static resources]). If you're still having problems after removing the option, check the paths in the `trac/siteconfig.py` file and fix them if they're incorrect.

  If you've been using plugins with a beta release of Trac 0.9, or have disabled some of the built-in components, you might have to update the rules for disabling/enabling components in [wiki:TracIni trac.ini]. In particular, globally installed plugins now need to be enabled explicitly. See TracPlugins and TracIni for more information.

  If you want to enable the display of all ticket changes in the timeline (the “Ticket Details” option), you now have to explicitly enable that in [wiki:TracIni trac.ini], too:

  {{{
  [timeline]
  ticket_show_details = true
  }}}

  == From 0.8.x to 0.9 ==

  [wiki:TracModPython mod_python] users will also need to change the name of the mod_python handler in the Apache HTTPD configuration:
  {{{
     from: PythonHandler trac.ModPythonHandler
     to:   PythonHandler trac.web.modpython_frontend
  }}}

  If you have [http://initd.org/tracker/pysqlite PySQLite] 2.x installed, Trac will now try to open your SQLite database using the SQLite 3.x file format. The database formats used by SQLite 2.8.x and SQLite 3.x are incompatible. If you get an error like ''“file is encrypted or is not a database”'' after upgrading, then you must convert your database file.

  To do this, you need to have both SQLite 2.8.x and SQLite 3.x installed (they have different filenames so can coexist on the same system). Then use the following commands:
  {{{
   $ mv trac.db trac2.db
   $ sqlite trac2.db .dump | sqlite3 trac.db
  }}}

  To update multiple database files at once on linux you may use the following command (replace {{{/var/trac}}} withe the location where your trac installtions reside):
  {{{
   $ find /var/trac/ -iname "trac.db" | xargs -i bash -c "mv {} {}.2; sqlite {}.2 .dump | sqlite3 {};"
  }}}

  Remember the give the webserver write permission to trac.db.

  After testing that the conversion was successful, the `trac2.db` file can be deleted. For more information on the SQLite upgrade see http://www.sqlite.org/version3.html.

  == From 0.7.x to 0.8 ==

  0.8 adds a new roadmap feature which requires additional permissions. While a
  fresh installation will by default grant ROADMAP_VIEW and MILESTONE_VIEW
  permissions to anonymous, these permissions have to be granted manually when
  upgrading:
  {{{
   $ trac-admin /path/to/projectenv permission add anonymous MILESTONE_VIEW
   $ trac-admin /path/to/projectenv permission add anonymous ROADMAP_VIEW
  }}}

  -----
  See also: TracGuide, TracInstall


name: TracRevisionLog
author: trac
ipnr: 127.0.0.1
text:
  = Viewing Revision Logs =
  [[TracGuideToc]]

  When you browse the repository, it's always possible to query the 
  ''Revision Log'' view corresponding to the path you're currently seeing.
  This will display a list of the most recent changesets in which the 
  current path or any other path below it has been modified.

  == The Revision Log Form ==

  It's possible to set the revision at which the revision log should
  start, using the ''View log starting at'' field. An empty value
  or a value of ''head'' is taken to be the newest changeset. 

  It's also possible to specify the revision at which the log should
  stop, using the ''back to'' field. By default, it's left empty, 
  which means the revision log will stop as soon as 100 revisions have 
  been listed.

  Also, there are three modes of operation of the revision log.

  By default, the revision log ''stops on copy'', which means that 
  whenever an ''Add'', ''Copy'' or ''Rename'' operation is detected, 
  no older revision will be shown. That's very convenient when working
  with branches, as one only sees the history corresponding to what
  has been done on the branch.

  It's also possible to indicate that one wants to see what happened
  before a ''Copy'' or ''Rename'' change, by selecting the 
  ''Follow copies'' mode. This will cross all copies or renames changes.
  Each time the name of the path changes, there will be an additional
  indentation level. That way, the changes on the different paths
  are easily grouped together visually.

  It's even possible to go past an ''Add'' change, in order to see 
  if there has been a ''Delete'' change on that path, before 
  that ''Add''. This mode corresponds to the mode called 
  ''Show only adds, moves and deletes''. 
  While quite useful at times, be aware that this operation is quite 
  resource intensive.

  Finally, there's also a checkbox ''Show full log messages'',
  which controls whether the full content of the commit log message
  should be displayed for each change, or only a shortened version of it.

  == The Revision Log Information ==

  For each revision log entry, there are 7 columns shown:
   1. The first column contains a pair of radio buttons and should used 
      for selecting the ''old'' and the ''new'' revisions that will be 
      used for [wiki:TracRevisionLog#viewingtheactualchanges viewing the actual changes].
   2. A color code (similar to the one used for the [wiki:TracChangeset#ChangesetHeader changesets]) 
      indicating kind of change.
      Clicking on this column refreshes the revision log so that it restarts
      with this change.
   3. The '''Date''' at which the change was made.
   4. The '''Revision''' number, displayed as `@xyz`. 
      This is a link to the TracBrowser, using that revision as the base line.
   5. The '''Changeset''' number, displayed as `[xyz]`.
      This is a link to the TracChangeset view.
   6. The '''Author''' of the change.
   7. The '''Log Message''', which contains either a summary or the full commit 
      log message, depending on the value of the ''Show full log messages'' 
      checkbox in the form above.
      

  == Inspecting Changes Between Revisions ==

  The ''View changes...'' buttons (placed above and below the list
  of changes, on the left side) will show the set of differences
  corresponding to the aggregated changes starting from the ''old''
  revision (first radio-button) to the ''new'' revision (second
  radio-button), in the TracChangeset view.

  Note that the ''old'' revision doesn't need to be actually 
  ''older'' than the ''new'' revision: it simply gives a base
  for the diff. It's therefore entirely possible to easily 
  generate a ''reverse diff'', for reverting what has been done
  in the given range of revisions.

  Finally, if the two revisions are identical, the corresponding
  changeset will be shown (same effect as clicking on column 5).

  == Alternative Formats ==

  === The ChangeLog Text ===

  At the bottom of the page, there's a ''ChangeLog'' link
  that will show the range of revisions as currently shown,
  but as a simple text, matching the usual conventions for
  !ChangeLog files.

  === RSS Support ===

  The revision log also provides a RSS feed to monitor the changes.
  To subscribe to a RSS feed for a file or directory, open its
  revision log in the browser and click the orange 'XML' icon at the bottom
  of the page. For more information on RSS support in Trac, see TracRss.

  ----
  See also: TracBrowser, TracChangeset, TracGuide


name: WikiProcessors
author: trac
ipnr: 127.0.0.1
text:
  = Wiki Processors =

  Processors are WikiMacros designed to provide alternative markup formats for the [TracWiki Wiki engine]. Processors can be thought of as ''macro functions to process user-edited text''. 

  The Wiki engine uses processors to allow using [wiki:WikiRestructuredText Restructured Text], [wiki:WikiHtml raw HTML] and [http://www.textism.com/tools/textile/ textile] in any Wiki text throughout Trac.


  == Using Processors ==

  To use a processor on a block of text, use a Wiki code block, selecting a processor by name using ''shebang notation'' (#!), familiar to most UNIX users from scripts.

  '''Example 1''' (''inserting raw HTML in a wiki text''):

  {{{
  #!html
  <pre class="wiki">{{{
  #!html
  &lt;h1 style="color: orange"&gt;This is raw HTML&lt;/h1&gt;
  }}}</pre>
  }}}

  '''Results in:'''
  {{{
  #!html
  <h1 style="color: orange">This is raw HTML</h1>
  }}}

  ----

  '''Example 2''' (''inserting Restructured Text in wiki text''):

  {{{
  #!html
  <pre class="wiki">{{{
  #!rst
  A header
  --------
  This is some **text** with a footnote [*]_.

  .. [*] This is the footnote.
  }}}</pre>
  }}}

  '''Results in:'''
  {{{
  #!rst
  A header
  --------
  This is some **text** with a footnote [*]_.

  .. [*] This is the footnote.
  }}}
  ----
  '''Example 3''' (''inserting a block of C source code in wiki text''):

  {{{
  #!html
  <pre class="wiki">{{{
  #!c
  int main(int argc, char *argv[])
  {
    printf("Hello World\n");
    return 0;
  }
  }}}</pre>
  }}}

  '''Results in:'''
  {{{
  #!c
  int main(int argc, char *argv[])
  {
    printf("Hello World\n");
    return 0;
  }
  }}}

  ----

  == Available Processors ==
  The following processors are included in the Trac distribution:
   * '''html''' -- Insert custom HTML in a wiki page. See WikiHtml.
   * '''rst''' -- Trac support for Restructured Text. See WikiRestructuredText.
   * '''textile''' -- Supported if  [http://dealmeida.net/projects/textile/ Textile] is installed. See [http://hobix.com/textile/ a Textile reference].

  Textile link above is rotten. [http://www.textism.com/tools/textile/ this one] works, allows to test example.

  === Code Highlighting Support ===
  Trac includes processors to provide inline [wiki:TracSyntaxColoring syntax highlighting] for the following languages:
   * '''c''' -- C
   * '''cpp''' -- C++
   * '''python''' -- Python
   * '''perl''' -- Perl
   * '''ruby''' -- Ruby
   * '''php''' -- PHP
   * '''asp''' --- ASP
   * '''sql''' -- SQL
   * '''xml''' -- XML
  '''Note:''' ''Trac relies on external software packages for syntax coloring. See TracSyntaxColoring for more info.''

  By using the MIME type as processor, it is possible to syntax-highlight the same languages that are supported when browsing source code. For example, you can write:
  {{{
  {{{
  #!text/html
  <h1>text</h1>
  }}}
  }}}

  The result will be syntax highlighted HTML code. The same is valid for all other mime types supported.


  For more processor macros developed and/or contributed by users, visit: 
   * [http://projects.edgewall.com/trac/wiki/ProcessorBazaar ProcessorBazaar]
   * [http://projects.edgewall.com/trac/wiki/MacroBazaar MacroBazaar]


  == Advanced Topics: Developing Processor Macros ==
  Developing processors is no different from WikiMacros. In fact they work the same way, only the usage syntax differs. See WikiMacros for more information.

  '''Example:''' (''Restructured Text Processor''):
  {{{
  #!python
  from docutils.core import publish_string

  def execute(hdf, text, env):
      html = publish_string(text, writer_name = 'html')
      return html[html.find('<body>')+6:html.find('</body>')].strip()
  }}}

  ----
  See also: WikiMacros, WikiHtml, WikiRestructuredText, TracSyntaxColoring, WikiFormatting, TracGuide


name: InterMapTxt
author: trac
ipnr: 127.0.0.1
text:
  = InterMapTxt =

  == This is the place for defining InterWiki prefixes ==

  This page was modelled after the MeatBall:InterMapTxt page.
  In addition, an optional comment is allowed after the mapping.


  This page is interpreted in a special way by Trac, in order to support
  !InterWiki links in a flexible and dynamic way.

  The code block after the first line separator in this page
  will be interpreted as a list of !InterWiki specifications:
  {{{
  prefix <space> URL [<space> # comment]
  }}}

  By using `$1`, `$2`, etc. within the URL, it is possible to create 
  InterWiki links which support multiple arguments, e.g. Trac:ticket:40.
  The URL itself can be optionally followed by a comment, 
  which will subsequently be used for decorating the links 
  using that prefix.

  New !InterWiki links can be created by adding to that list, in real time.
  Note however that ''deletions'' are also taken into account immediately,
  so it may be better to use comments for disabling prefixes.

  Also note that !InterWiki prefixes are case insensitive.


  == List of Active Prefixes ==

  [[InterWiki]]


  ----

  == Prefix Definitions ==

  {{{
  PEP     http://www.python.org/peps/pep-$1.html                                       # Python Enhancement Proposal 
  Trac-ML  http://thread.gmane.org/gmane.comp.version-control.subversion.trac.general/ # Message $1 in Trac Mailing List
  trac-dev http://thread.gmane.org/gmane.comp.version-control.subversion.trac.devel/   # Message $1 in Trac Development Mailing List

  Mercurial http://www.selenic.com/mercurial/wiki/index.cgi/ # the wiki for the Mercurial distributed SCM
  RFC       http://rfc.net/rfc$1.html # IETF's RFC $1

  #
  # A arbitrary pick of InterWiki prefixes...
  #
  Acronym          http://www.acronymfinder.com/af-query.asp?String=exact&Acronym=
  C2find           http://c2.com/cgi/wiki?FindPage&value=
  Cache            http://www.google.com/search?q=cache:
  CPAN             http://search.cpan.org/perldoc?
  DebianBug        http://bugs.debian.org/
  DebianPackage    http://packages.debian.org/
  Dictionary       http://www.dict.org/bin/Dict?Database=*&Form=Dict1&Strategy=*&Query=
  Google           http://www.google.com/search?q=
  GoogleGroups     http://groups.google.com/group/$1/msg/$2        # Message $2 in $1 Google Group
  JargonFile       http://downlode.org/perl/jargon-redirect.cgi?term=
  MeatBall         http://www.usemod.com/cgi-bin/mb.pl?
  MetaWiki         http://sunir.org/apps/meta.pl?
  MetaWikiPedia    http://meta.wikipedia.org/wiki/
  MoinMoin         http://moinmoin.wikiwikiweb.de/
  WhoIs            http://www.whois.sc/
  Why              http://clublet.com/c/c/why?
  c2Wiki             http://c2.com/cgi/wiki?
  WikiPedia        http://en.wikipedia.org/wiki/
  }}}


name: TracAdmin
author: trac
ipnr: 127.0.0.1
text:
  = TracAdmin =
  [[TracGuideToc]]

  Trac is distributed with a powerful command-line configuration tool. This tool can be used  to configure and customize your Trac-installation to better fit your needs.

  Some of those operations can also be performed via the web interface thanks to the optional [http://trac.edgewall.org/wiki/WebAdmin WebAdmin] plugin, distributed separately for now.

  == Usage ==

  You can get a comprehensive list of the available options, commands and sub-commands by invoking `trac-admin` with the `help` command:
  {{{
  trac-admin help
  }}}

  Unless you're executing the `help`, `about` or `version` sub-commands, you'll need to specify the path to the TracEnvironment that you want to administer as the first argument, for example:
  {{{
  trac-admin /path/to/projenv wiki list
  }}}

  == Interactive Mode ==

  When passing the environment path as the only argument, `trac-admin` starts in interactive mode.
  Commands can then be executed on the selected environment using the prompt, which offers tab-completion
  (on non-Windows environments, and when the Python `readline` module is available) and automatic repetition of the last command issued.

  Once you're in interactive mode, you can also get help on specific commands or subsets of commands:

  For example, to get an explanation of the `resync` command, run:
  {{{
  > help resync
  }}}

  To get help on a all the Wiki-related commands, run:
  {{{
  > help wiki
  }}}

  ----
  See also: TracGuide, TracBackup, TracPermissions, TracEnvironment, TracIni


name: TracLinks
author: trac
ipnr: 127.0.0.1
text:
  = Trac Links =
  TracLinks are a fundamental feature of Trac, because they allow easy hyperlinking between the various entities in the system—such as tickets, reports, changesets, Wiki pages, milestones, and source files—from anywhere WikiFormatting is used.

  TracLinks are generally of the form '''type:id''' (where ''id'' represents the
  number, name or path of the item) though some frequently used kinds of items
  also have short-hand notations.

  Some examples:
   * Tickets: '''!#1''' or '''!ticket:1'''
   * Ticket comments: '''!comment:ticket:1:2''' 
   * Reports: '''!{1}''' or '''!report:1'''
   * Changesets: '''!r1''', '''![1]''', '''!changeset:1''' or (restricted) '''![1/trunk]''', '''!changeset:1/trunk'''
   * Revision log: '''!r1:3''', '''![1:3]''' or '''!log:@1:3''', '''!log:trunk@1:3'''
   * Diffs (requires [milestone:0.10 0.10]): '''!diff:@1:3''', '''!diff:tags/trac-0.9.2/wiki-default//tags/trac-0.9.3/wiki-default''' or '''!diff:trunk/trac@3538//sandbox/vc-refactoring@3539'''
   * Wiki pages: '''!CamelCase''' or '''!wiki:CamelCase'''
   * Milestones: '''!milestone:1.0'''
   * Attachment: '''!attachment:ticket:944:attachment.1073.diff'''
   * Files: '''!source:trunk/COPYING'''
   * A specific file revision: '''!source:/trunk/COPYING@200'''
   * A particular line of a specific file revision: '''!source:/trunk/COPYING@200#L25'''
  Display:
   * Tickets: #1 or ticket:1
   * Ticket comments: comment:ticket:1:2 
   * Reports: {1} or report:1
   * Changesets: r1, [1], changeset:1, or (restricted) [1/trunk], changeset:1/trunk
   * Revision log: r1:3, [1:3] or log:@1:3, log:trunk@1:3
   * Diffs (requires [milestone:0.10 0.10]): diff:@20:30, diff:tags/trac-0.9.2/wiki-default//tags/trac-0.9.3/wiki-default or diff:trunk/trac@3538//sandbox/vc-refactoring/trac@3539
   * Wiki pages: CamelCase or wiki:CamelCase
   * Milestones: milestone:1.0
   * Attachment: attachment:ticket:944:attachment.1073.diff
   * Files: source:trunk/COPYING
   * A specific file revision: source:/trunk/COPYING@200
   * A particular line of a specific file revision: source:/trunk/COPYING@200#L25

  '''Note:''' The wiki:CamelCase form is rarely used, but it can be convenient to refer to
  pages whose names do not follow WikiPageNames rules, i.e., single words,
  non-alphabetic characters, etc. See WikiPageNames for more about features specific
  to links to Wiki page names.

  Trac links using the full (non-shorthand) notation can also be given a custom
  link title like this:

  {{{
  [ticket:1 This is a link to ticket number one].
  }}}

  Display: [ticket:1 This is a link to ticket number one].

  If the title is be omitted, only the id (the part after the colon) is displayed:

  {{{
  [ticket:1]
  }}}

  Display: [ticket:1]

  `wiki` is the default if the namespace part of a full link is omitted (''since version 0.10''):

  {{{
  [SandBox the sandbox]
  }}}

  Display: [SandBox the sandbox]

  TracLinks are a very simple idea, but actually allow quite a complex network of information. In practice, it's very intuitive and simple to use, and we've found the "link trail" extremely helpful to better understand what's happening in a project or why a particular change was made.

  The following sections describe the individual link types in detail, as well as several notes advanced usage of links.

  == attachment: links ==

  The link syntax for attachments is as follows:
   * !attachment:the_file.txt creates a link to the attachment the_file.txt of the current object
   * !attachment:wiki:MyPage:the_file.txt creates a link to the attachment the_file.txt of the !MyPage wiki page
   * !attachment:ticket:753:the_file.txt creates a link to the attachment the_file.txt of the ticket 753

  == source: links ==

  The default behavior for a source:/some/path link is to open the directory browser 
  if the path points to a directory and otherwise open the log view. 
  It's also possible to link directly to a specific revision of a file like this: source:/some/file@123 
  or like this to link to the latest revision: source:/some/file@latest.
  If the revision is specified, one can even link to a specific line number: source:/some/file@123#L10 

  == search: and query: links ==

  See TracSearch#SearchLinks and TracQuery#UsingTracLinks

  == !SubWiki links ==
  To create a SubWiki link to a SubWiki-page just use a '/':
  {{{
   [wiki:WikiPage/SubWikiPage].
  }}}

  == InterWiki links ==

  Other prefixes can be defined freely and made to point to resources in other Web applications. The definition of those prefixes as well as the URLs of the corresponding Web applications is defined in a special Wiki page, the InterMapTxt page. Note that while this could be used to create links to other Trac environments, there's a more specialized way to register other Trac environments which offers greater flexibility.

  == InterTrac links ==

  Any of the above form of Trac links could be written in one Trac environment and actually refer to resources present in another Trac environment, provided the Trac link is prefixed by the name of that other Trac environment followed by a colon. That other Trac environment must be registered. See InterTrac for details. 


  == Server-relative links ==

  It is often useful to be able to link to objects on your server that have no built-in
  Trac linking mechanism, such as static resources, a `/register` page, etc. This
  can be achieved by simply using either an absolute path from the server root, 
  or a relative link from the URL of the current page:

  {{{
  [../newticket newticket]
  [/ home]
  }}}

  Display: [../newticket newticket] [/ home]

  == Quoting space in TracLinks ==

  Immediately after a TracLinks prefix, targets containing space characters should
  be enclosed in a pair of quotes or double quotes.
  Examples:
   * !wiki:"The whitespace convention"
   * !attachment:'the file.txt' or
   * !attachment:"the file.txt" 
   * !attachment:"ticket:123:the file.txt" 

  == Where to use TracLinks ==
  You can use TracLinks in:

   * Source code (Subversion) commit messages
   * Wiki pages
   * Full descriptions for tickets, reports and milestones

  and any other text fields explicitly marked as supporting WikiFormatting.

  == Escaping Links ==

  To prevent parsing of a !TracLink, you can escape it by preceding it with a '!' (exclamation mark).
  {{{
   !NoLinkHere.
   ![42] is not a link either.
  }}}

  Display:
   !NoLinkHere.
   ![42] is not a link either.

  ----
  See also: WikiFormatting, TracWiki, WikiPageNames, InterTrac, InterWiki
   


name: TracNotification
author: trac
ipnr: 127.0.0.1
text:
  = Email Notification of Ticket Changes =
  [[TracGuideToc]]

  Trac supports notification about ticket changes via email. 

  Email notification is useful to keep users up-to-date on tickets/issues of interest, and also provides a convenient way to post all ticket changes to a dedicated mailing list. For example, this is how the [http://lists.edgewall.com/archive/trac-tickets/ Trac-tickets] mailing list is set up.

  Disabled by default, notification can be activated and configured in [wiki:TracIni trac.ini].

  == Receiving Notification Mails ==
  When reporting a new ticket or adding a comment, enter a valid email address in the ''reporter'', ''assigned to/owner'' or ''cc'' field. Trac will automatically send you an email when changes are made to the ticket (depending on how notification is configured).

  This is useful to keep up-to-date on an issue or enhancement request that interests you.

  == Configuring SMTP Notification ==

  === Configuration Options ===
  These are the available options for the ''[notification]'' section in trac.ini.
   * '''smtp_enabled''': Enable email notification.
   * '''smtp_server''': SMTP server used for notification messages.
   * '''smtp_user''': (''since 0.9'') User name for authentication SMTP account.
   * '''smtp_password''': (''since 0.9'') Password for authentication SMTP account.
   * '''smtp_from''': Email address to use for ''Sender''-headers in notification emails.
   * '''smtp_replyto''': Email address to use for ''Reply-To''-headers in notification emails.
   * '''smtp_default_domain''': (''since 0.10'') Append the specified domain to addresses that do not contain one. Fully qualified addresses are not modified. The default domain is appended to all username/login for which an email address cannot be found from the user settings.
   * '''smtp_always_cc''': List of email addresses to always send notifications to. ''Typically used to post ticket changes to a dedicated mailing list.''
   * '''smtp_always_bcc''': (''since 0.10'') List of email addresses to always send notifications to, but keeps addresses not visible from other recipients of the notification email 
   * '''always_notify_reporter''':  Always send notifications to any address in the reporter field.
   * '''always_notify_owner''': (''since 0.9'') Always send notifications to the address in the owner field.
   * '''always_notify_updater''': (''since 0.10'') Always send a notification to the updater of a ticket.
   * '''use_public_cc''': (''since 0.10'') Addresses in To: (owner, reporter) and Cc: lists are visible by all recipients (default is ''Bcc:'' - hidden copy).
   * '''use_short_addr''': (''since 0.10'') Enable delivery of notifications to addresses that do not contain a domain (i.e. do not end with ''@<domain.com>'').This option is useful for intranets, where the SMTP server can handle local addresses and map the username/login to a local mailbox. See also `smtp_default_domain`. Do not use this option with a public SMTP server. 
   * '''mime_encoding''': (''since 0.10'') E-mail notifications are always sent in 7-bit mode. This option allows to select the MIME encoding scheme. Supported values:
     * `base64`: default value, works with any kind of content. May cause some issues with touchy anti-spam/anti-virus engines.
     * `qp` or `quoted-printable`: best for european languages (more compact than base64), not recommended for non-ASCII text (less compact than base64)
     * `none`: no encoding. Use with plain english only (ASCII). E-mails with non-ASCII chars won't be delivered. 

  Either '''smtp_from''' or '''smtp_replyto''' (or both) ''must'' be set, otherwise Trac refuses to send notification mails.

  === Example Configuration ===

  {{{
  [notification]
  smtp_enabled = true
  smtp_server = mail.example.com
  smtp_from = notifier@example.com
  smtp_replyto = myproj@projects.example.com
  smtp_always_cc = ticketmaster@example.com, theboss+myproj@example.com
  }}}

  == Sample Email ==
  {{{
  #42: testing
  ---------------------------+------------------------------------------------
         Id:  42             |      Status:  assigned                
  Component:  report system  |    Modified:  Fri Apr  9 00:04:31 2004
   Severity:  major          |   Milestone:  0.9                     
   Priority:  lowest         |     Version:  0.6                     
      Owner:  anonymous      |    Reporter:  jonas@example.com               
  ---------------------------+------------------------------------------------
  Changes:
    * component:  changset view => search system
    * priority:  low => highest
    * owner:  jonas => anonymous
    * cc:  daniel@example.com =>
           daniel@example.com, jonas@example.com
    * status:  new => assigned

  Comment:
  I'm interested too!

  --
  Ticket URL: <http://example.com/trac/ticket/42>
  My Project <http://myproj.example.com/>
  }}}

  == Troubleshooting ==

  If you cannot get the notification working, first make sure the log is activated and have a look at the log to find if an error message has been logged. See TracLogging for help about the log feature.

  Notification errors are not reported through the web interface, so the user who submit a change or a new ticket never gets notified about a notification failure. The Trac administrator needs to look at the log to find the error trace.

  === ''Permission denied'' error ===

  Typical error message:
  {{{
    ...
    File ".../smtplib.py", line 303, in connect
      raise socket.error, msg
    error: (13, 'Permission denied')
  }}}

  This error usually comes from a security settings on the server: many Linux distributions do not let the web server (Apache, ...) to post email message to the local SMTP server.

  Many users get confused when their manual attempts to contact the SMTP server succeed:
  {{{
  telnet localhost 25
  }}}
  The trouble is that a regular user may connect to the SMTP server, but the web server cannot:
  {{{
  sudo -u www-data telnet localhost 25
  }}}

  In such a case, you need to configure your server so that the web server is authorize to post to the SMTP server. The actual settings depend on your Linux distribution and current security policy. You may find help browsing the Trac MailingList archive.

  Relevant ML threads:
   * SELinux: http://article.gmane.org/gmane.comp.version-control.subversion.trac.general/7518
   
  === ''Suspected spam'' error ===

  Some SMTP servers may reject the notification email sent by Trac.

  The default Trac configuration uses Base64 encoding to send emails to the recipients. The whole body of the email is encoded, which sometimes trigger ''false positive'' SPAM detection on sensitive email servers. In such an event, it is recommended to change the default encoding to "quoted-printable" using the `mime_encoding` option.

  Quoted printable enconding works better with languages that use one of the Latin charsets. For Asian charsets, it is recommended to stick with the Base64 encoding.

  ----
  See also: TracTickets, TracIni, TracGuide


name: TracSearch
author: trac
ipnr: 127.0.0.1
text:
  = Using Search =

  Trac has a built-in search engine to allow finding occurrences of keywords and substrings in wiki pages, tickets and changeset descriptions.

  Using the Trac search facility is straightforward and its interface should be familiar to most users.

  Apart from the [search: Search module], you will also find a small search field above the navigation bar at all time. It provides convenient access to the search module from all pages.

  == "Quickjump" searches ==
  For quick access to various project resources, the quick-search field at the top of every page can be used to enter a [TracLinks wiki link], which will take you directly to the resource identified by that link.

  For example:

   * ![42] -- Opens change set 42
   * !#42 -- Opens ticket number 42
   * !{1} -- Opens report 1
   * /trunk -- Opens the browser for the `trunk` directory

  == Advanced ==

  === Disabling Quickjumps ===
  To disable the quickjump feature for a search keyword - for example when searching for occurences of the literal word !TracGuide - begin the query with an exclamation mark (!).

  === Search Links ===
  From the Wiki, it is possible to link to a specific search, using
  `search:` links:
   * `search:?q=crash` will search for the string "crash" 
   * `search:?q=trac+link&wiki=on` will search for "trac" and "link" 
     in wiki pages only

  ----
  See also: TracGuide, TracLinks, TracQuery


name: TracSupport
author: trac
ipnr: 127.0.0.1
text:
  = Trac Support =

  Like in most [http://www.opensource.org/ open source projects], "free" Trac support is available primarily through the community itself, mainly through the [http://trac.edgewall.org/wiki/MailingList mailing list] and the project wiki.

  There is also an [http://trac.edgewall.org/wiki/IrcChannel IRC channel], where people might be able to help out. Much of the 'live' development discussions also happen there.

  Before you start a new support query, make sure you've done the appropriate searching:
   * in the project's [http://trac.edgewall.org/wiki/TracFaq FAQ]
   * in past messages to the Trac [http://blog.gmane.org/gmane.comp.version-control.subversion.trac.general?set_user_css=http%3A%2F%2Fwww.edgewall.com%2Fcss%2Fgmane.css&do_set_user_css=t Mailing List]
   * in the Trac ticket system, using either a [http://trac.edgewall.org/search?q=&ticket=on&wiki=on full search] or a [http://trac.edgewall.org/query?summary=~&keywords=~" ticket query].

  ----
  See also: [http://trac.edgewall.org/wiki/MailingList MailingList], [http://trac.edgewall.org/wiki/CommercialServices CommercialServices]


name: TracRoadmap
author: trac
ipnr: 127.0.0.1
text:
  = The Trac Roadmap =
  [[TracGuideToc]]

  The roadmap provides a view on the [wiki:TracTickets ticket system] that helps planning and managing the future development of a project.

  == The Roadmap View ==

  Basically, the roadmap is just a list of future milestones. You can add a description to milestones (using WikiFormatting) describing main objectives, for example. In addition, tickets targeted for a milestone are aggregated, and the ratio between active and resolved tickets is displayed as a milestone progress bar.

  == The Milestone View ==

  It is possible to drill down into this simple statistic by viewing the individual milestone pages. By default, the active/resolved ratio will be grouped and displayed by component. You can also regroup the status by other criteria, such as ticket owner or severity. Ticket numbers are linked to [wiki:TracQuery custom queries] listing corresponding tickets.

  == Roadmap Administration ==

  It is possible to add, modify and remove milestones using either TracAdmin or the web interface. 

  '''Note:''' Milestone descriptions can currently only be edited from the web interface. With appropriate permissions, you'll see buttons for milestone management on the roadmap and milestone pages.

  == iCalendar Support ==

  The Roadmap supports the [http://www.ietf.org/rfc/rfc2445.txt iCalendar] format to keep track of planned milestones and related tickets from your favorite calendar software. Calendar applications supporting the iCalendar specification include [http://www.apple.com/ical/ Apple iCal] for Mac OS X and the cross-platform [http://www.mozilla.org/projects/calendar/ Mozilla Calendar]. [http://kdepim.kde.org/components/korganizer.php Korganizer] (the calendar application of the [http://www.kde.org/ KDE] project) and [http://www.novell.com/de-de/products/desktop/features/evolution.html Evolution] also support iCalendar.

  To subscribe to the roadmap, copy the iCalendar link from the roadmap (found at the bottom of the page) and choose the "Subscribe to remote calendar" action (or similar) of your calendar application, and insert the URL just copied.

  '''Note:''' For tickets to be included in the calendar as tasks, you need to be logged in when copying the link. You will only see tickets assigned to yourself, and associated with a milestone.

  More information about iCalendar can be found at [http://en.wikipedia.org/wiki/ICalendar Wikipedia].
  ----
  See also: TracTickets, TracReports, TracQuery, TracGuide


name: TracChangeset
author: trac
ipnr: 127.0.0.1
text:
  = Trac Changeset Module =
  [[TracGuideToc]]

  Trac has a built-in functionality for visualizing “diffs” - changes to files.

  There are different kinds of ''change sets''. 
  Some can correspond to revisions made in the repositories,
  others can aggregate changes made in several revisions, 
  but in the end, any kind of differences can be shown.

  The changeset view consists of two parts, the ''header'' 
  and the ''diff views''.

  == Changeset Header ==

  The header shows an overview of the whole changeset.
  Here you will find information such as:

   * Timestamp -- When the changeset was commited
   * Author -- Who commited the changeset
   * Message -- A brief description from the author (the commit log message)
   * Files -- A list of files affected by this changeset

  If more than one revision is involved in the set of changes being
  displayed, the ''Timestamp'', ''Author'' and ''Message'' fields 
  won't be shown.

  In front of each listed file, you'll find  a colored rectangle. The color
  indicates how the file is affected by the changeset.
   
   * Green: Added
   * Red: Removed
   * Yellow: Modified
   * Blue: Copied
   * Gray: Moved

  The color legend is located below the header as a reminder.

  == Diff Views ==

  Below the header is the main part of the changeset, the diff view. Each file is shown in a separate section, each of which will contain only the regions of the file that are affected by the changeset. There are two different styles of displaying the diffs: ''inline'' or ''side-by-side'' (you can switch between those styles using the preferences form):

   * The ''inline'' style shows the changed regions of a file underneath each other. A region removed from the file will be colored red, an added region will be colored green. If a region was modified, the old version is displayed above the new version. Line numbers on the left side indicate the exact position of the change in both the old and the new version of the file.
   * The ''side-by-side'' style shows the old version on the left and the new version on the right (this will typically require more screen width than the inline style.) Added and removed regions will be colored in the same way as with the inline style (green and red, respectively), but modified regions will have a yellow background.

  In addition, various advanced options are available in the preferences form for adjusting the display of the diffs:
   * You can set how many lines are displayed before and after every change
     (if the value ''all'' is used, then the full file will be shown)
   * You can toggle whether blank lines, case changes and white space changes are ignored, thereby letting you find the functional changes more quickly


  == The Different Ways to Get a Diff ==

  === Examining a Changeset ===

  When viewing a repository check-in, such as when following a
  changeset [wiki:TracLinks link] or a changeset event in the 
  [wiki:TracTimeline timeline], Trac will display the exact changes
  made by the check-in.

  There will be also navigation links to the ''Previous Changeset''
  to and ''Next Changeset''.

  === Examining Differences Between Revisions ===

  Often you'll want to look at changes made on a file 
  or on a directory spanning multiple revisions. The easiest way
  to get there is from the TracRevisionLog, where you can select
  the ''old'' and the ''new'' revisions of the file or directory, and
  then click the ''View changes'' button.

  === Examining Differences Between Branches ===

  One of the core features of version control systems is the possibility
  to work simultaneously on different ''Lines of Developments'', commonly
  called “branches”. Trac enables you to examine the exact differences
  between such branches.

  Using the '''View changes ...''' button in the TracBrowser allows you to enter
  ''From:'' and ''To:'' path/revision pairs. The resulting set of differences consist
  of the changes that should be applied to the ''From:'' content in order
  to get to the ''To:'' content.

  For convenience, it is possible to invert the roles of the ''old'' and the ''new''
  path/revision pairs by clicking the ''Reverse Diff'' link on the changeset page.

  === Checking the Last Change ===

  The last possibility for examining changes is to use the ''Last Change''
  link provided by the TracBrowser.

  This link will take you to the last change that was made on that path.
  From there, you can use the ''Previous Change'' and ''Next Change'' links
  to traverse the change history of the file or directory.

  ----
  See also: TracGuide, TracBrowser


name: TracReports
author: trac
ipnr: 127.0.0.1
text:
  = Trac Reports =
  [[TracGuideToc]]

  The Trac reports module provides a simple, yet powerful reporting facility
  to present information about tickets in the Trac database.

  Rather than have its own report definition format, TracReports relies on standard SQL
  `SELECT` statements for custom report definition. 

    '''Note:''' ''The report module is being phased out in its current form because it seriously limits the ability of the Trac team to make adjustments to the underlying database schema. We believe that the [wiki:TracQuery query module] is a good replacement that provides more flexibility and better usability. While there are certain reports that cannot yet be handled by the query module, we intend to further enhance it so that at some point the reports module can be completely removed. This also means that there will be no major enhancements to the report module anymore.''

    ''You can already completely replace the reports module by the query module simply by disabling the former in [wiki:TracIni trac.ini]:''
    {{{
    [components]
    trac.ticket.report.* = disabled
    }}}
    ''This will make the query module the default handler for the “View Tickets” navigation item. We encourage you to try this configuration and report back what kind of features of reports you are missing, if any.''

  A report consists of these basic parts:
   * '''ID''' -- Unique (sequential) identifier 
   * '''Title'''  -- Descriptive title
   * '''Description'''  -- A brief description of the report, in WikiFormatting text.
   * '''Report Body''' -- List of results from report query, formatted according to the methods described below.
   * '''Footer''' -- Links to alternative download formats for this report.

  == Changing Sort Order ==
  Simple reports - ungrouped reports to be specific - can be changed to be sorted by any column simply by clicking the column header. 

  If a column header is a hyperlink (red), click the column you would like to sort by. Clicking the same header again reverses the order.


  == Alternative Download Formats ==
  Aside from the default HTML view, reports can also be exported in a number of alternative formats.
  At the bottom of the report page, you will find a list of available data formats. Click the desired link to 
  download the alternative report format.

  === Comma-delimited - CSV (Comma Separated Values) ===
  Export the report as plain text, each row on its own line, columns separated by a single comma (',').
  '''Note:''' Carriage returns, line feeds, and commas are stripped from column data to preserve the CSV structure.

  === Tab-delimited ===
  Like above, but uses tabs (\t) instead of comma.

  === RSS - XML Content Syndication ===
  All reports support syndication using XML/RSS 2.0. To subscribe to an RSS feed, click the orange 'XML' icon at the bottom of the page. See TracRss for general information on RSS support in Trac.

  ----

  == Creating Custom Reports ==

  ''Creating a custom report requires a comfortable knowledge of SQL.''

  A report is basically a single named SQL query, executed and presented by
  Trac.  Reports can be viewed and created from a custom SQL expression directly
  in from the web interface.

  Typically, a report consists of a SELECT-expression from the 'ticket' table,
  using the available columns and sorting the way you want it.

  == Ticket columns ==
  The ''ticket'' table has the following columns:
   * id
   * time
   * changetime
   * component
   * severity  
   * priority 
   * owner
   * reporter
   * cc
   * version
   * milestone
   * status
   * resolution
   * summary
   * description

  See TracTickets for a detailed description of the column fields.

  '''all active tickets, sorted by priority and time'''

  '''Example:''' ''All active tickets, sorted by priority and time''
  {{{
  SELECT id AS ticket, status, severity, priority, owner, 
         time as created, summary FROM ticket 
    WHERE status IN ('new', 'assigned', 'reopened')
    ORDER BY priority, time
  }}}


  ----


  == Advanced Reports: Dynamic Variables ==
  For more flexible reports, Trac supports the use of ''dynamic variables'' in report SQL statements. 
  In short, dynamic variables are ''special'' strings that are replaced by custom data before query execution.

  === Using Variables in a Query ===
  The syntax for dynamic variables is simple, any upper case word beginning with '$' is considered a variable.

  Example:
  {{{
  SELECT id AS ticket,summary FROM ticket WHERE priority='$PRIORITY'
  }}}

  To assign a value to $PRIORITY when viewing the report, you must define it as an argument in the report URL, leaving out the the leading '$'.

  Example:
  {{{
   http://projects.edgewall.com/trac/reports/14?PRIORITY=high
  }}}

  To use multiple variables, separate them with an '&'.

  Example:
  {{{
   http://projects.edgewall.com/trac/reports/14?PRIORITY=high&SEVERITY=critical
  }}}


  === Special/Constant Variables ===
  There is one ''magic'' dynamic variable to allow practical reports, its value automatically set without having to change the URL. 

   * $USER -- Username of logged in user.

  Example (''List all tickets assigned to me''):
  {{{
  SELECT id AS ticket,summary FROM ticket WHERE owner='$USER'
  }}}


  ----


  == Advanced Reports: Custom Formatting ==
  Trac is also capable of more advanced reports, including custom layouts,
  result grouping and user-defined CSS styles. To create such reports, we'll use
  specialized SQL statements to control the output of the Trac report engine.

  == Special Columns ==
  To format reports, TracReports looks for 'magic' column names in the query
  result. These 'magic' names are processed and affect the layout and style of the 
  final report.

  === Automatically formatted columns ===
   * '''ticket''' -- Ticket ID number. Becomes a hyperlink to that ticket. 
   * '''created, modified, date, time''' -- Format cell as a date and/or time.

   * '''description''' -- Ticket description field, parsed through the wiki engine.

  '''Example:'''
  {{{
  SELECT id as ticket, created, status, summary FROM ticket 
  }}}

  === Custom formatting columns ===
  Columns whose names begin and end with 2 underscores (Example: '''`__color__`''') are
  assumed to be ''formatting hints'', affecting the appearance of the row.
   
   * '''`__group__`''' -- Group results based on values in this column. Each group will have its own header and table.
   * '''`__color__`''' -- Should be a numeric value ranging from 1 to 5 to select a pre-defined row color. Typically used to color rows by issue priority.
   * '''`__style__`''' -- A custom CSS style expression to use for the current row. 

  '''Example:''' ''List active tickets, grouped by milestone, colored by priority''
  {{{
  SELECT p.value AS __color__,
       t.milestone AS __group__,
       (CASE owner WHEN 'daniel' THEN 'font-weight: bold; background: red;' ELSE '' END) AS __style__,
         t.id AS ticket, summary
    FROM ticket t,enum p
    WHERE t.status IN ('new', 'assigned', 'reopened') 
      AND p.name=t.priority AND p.type='priority'
    ORDER BY t.milestone, p.value, t.severity, t.time
  }}}

  '''Note:''' A table join is used to match ''ticket'' priorities with their
  numeric representation from the ''enum'' table.

  === Changing layout of report rows ===
  By default, all columns on each row are display on a single row in the HTML
  report, possibly formatted according to the descriptions above. However, it's
  also possible to create multi-line report entries.

   * '''`column_`''' -- ''Break row after this''. By appending an underscore ('_') to the column name, the remaining columns will be be continued on a second line.

   * '''`_column_`''' -- ''Full row''. By adding an underscore ('_') both at the beginning and the end of a column name, the data will be shown on a separate row.

   * '''`_column`'''  --  ''Hide data''. Prepending an underscore ('_') to a column name instructs Trac to hide the contents from the HTML output. This is useful for information to be visible only if downloaded in other formats (like CSV or RSS/XML).

  '''Example:''' ''List active tickets, grouped by milestone, colored by priority, with  description and multi-line layout''

  {{{
  SELECT p.value AS __color__,
         t.milestone AS __group__,
         (CASE owner 
            WHEN 'daniel' THEN 'font-weight: bold; background: red;' 
            ELSE '' END) AS __style__,
         t.id AS ticket, summary AS summary_,             -- ## Break line here
         component,version, severity, milestone, status, owner,
         time AS created, changetime AS modified,         -- ## Dates are formatted
         description AS _description_,                    -- ## Uses a full row
         changetime AS _changetime, reporter AS _reporter -- ## Hidden from HTML output
    FROM ticket t,enum p
    WHERE t.status IN ('new', 'assigned', 'reopened') 
      AND p.name=t.priority AND p.type='priority'
    ORDER BY t.milestone, p.value, t.severity, t.time
  }}}

  === Reporting on custom fields ===

  If you have added custom fields to your tickets (experimental feature in v0.8, see TracTicketsCustomFields), you can write a SQL query to cover them. You'll need to make a join on the ticket_custom table, but this isn't especially easy.

  If you have tickets in the database ''before'' you declare the extra fields in trac.ini, there will be no associated data in the ticket_custom table. To get around this, use SQL's "LEFT OUTER JOIN" clauses. See TracIniReportCustomFieldSample for some examples.

  ----
  See also: TracTickets, TracQuery, TracGuide


name: TracImport
author: trac
ipnr: 127.0.0.1
text:
  = Importing ticket data =

  == Bugzilla ==

  Ticket data can be imported from Bugzilla using the [http://projects.edgewall.com/trac/browser/trunk/contrib/bugzilla2trac.py bugzilla2trac.py] script, available in the contrib/ directory of the Trac distribution.

  {{{
  $ bugzilla2trac.py
  bugzilla2trac - Imports a bug database from Bugzilla into Trac.

  Usage: bugzilla2trac.py [options]

  Available Options:
    --db <MySQL dbname>              - Bugzilla's database
    --tracenv /path/to/trac/env      - full path to Trac db environment
    -h | --host <MySQL hostname>     - Bugzilla's DNS host name
    -u | --user <MySQL username>     - effective Bugzilla's database user
    -p | --passwd <MySQL password>   - Bugzilla's user password
    -c | --clean                     - remove current Trac tickets before importing
    --help | help                    - this help info

  Additional configuration options can be defined directly in the script.
  }}}

  Currently, the following data is imported from Bugzilla:

    * bugs
    * bug activity (field changes)
    * bug attachments
    * user names and passwords (put into a htpasswd file)

  The script provides a number of features to ease the conversion, such as:

    * PRODUCT_KEYWORDS:  Trac doesn't have the concept of products, so the script provides the ability to attach a ticket keyword instead.

    * IGNORE_COMMENTS:  Don't import Bugzilla comments that match a certain regexp.

    * STATUS_KEYWORDS:  Attach ticket keywords for the Bugzilla statuses not available in Trac.  By default, the 'VERIFIED' and 'RELEASED' Bugzilla statuses are translated into Trac keywords.

  For more details on the available options, see the configuration section at the top of the script.

  == Sourceforge ==

  Ticket data can be imported from Sourceforge using the [http://projects.edgewall.com/trac/browser/trunk/contrib/sourceforge2trac.py sourceforge2trac.py] script, available in the contrib/ directory of the Trac distribution.

  == Mantis ==

  Mantis bugs can be imported using the attached script.

  Currently, the following data is imported from Mantis:
    * bugs
    * bug comments
    * bug activity (field changes)

  Attachments are NOT imported.  If you use the script, please read the NOTES section (at the top of the file) and make sure you adjust the config parameters for your environment.

  mantis2trac.py has the same parameters as the bugzilla2trac.py script:
  {{{
  mantis2trac - Imports a bug database from Mantis into Trac.

  Usage: mantis2trac.py [options] 

  Available Options:
    --db <MySQL dbname>              - Mantis database
    --tracenv /path/to/trac/env      - Full path to Trac db environment
    -h | --host <MySQL hostname>     - Mantis DNS host name
    -u | --user <MySQL username>     - Effective Mantis database user
    -p | --passwd <MySQL password>   - Mantis database user password
    -c | --clean                     - Remove current Trac tickets before importing
    --help | help                    - This help info

  Additional configuration options can be defined directly in the script.
  }}} 

  == Other ==

  Since trac uses a SQL database to store the data, you can import from other systems by examining the database tables. Just go into [http://www.sqlite.org/sqlite.html sqlite] command line to look at the tables and import into them from your application.

  === Using a comma delimited file - CSV ===
  See [http://trac.edgewall.org/attachment/wiki/TracSynchronize/csv2trac.2.py] for details.  This approach is particularly useful if one needs to enter a large number of tickets by hand. (note that the ticket type type field, (task etc...) is also needed for this script to work with more recent Trac releases)


name: TracPlugins
author: trac
ipnr: 127.0.0.1
text:
  = Trac Plugins =
  [[TracGuideToc]]

  Since version 0.9, Trac supports plugins that extend the built-in functionality. The plugin functionality is based on the [http://trac.edgewall.org/wiki/TracDev/ComponentArchitecture component architecture].

  == Requirements ==

  To use egg based plugins in Trac, you need to have [http://peak.telecommunity.com/DevCenter/setuptools setuptools] (version 0.6) installed.

  Plugins can also consist of a single `.py` file dropped into either the environment or global `plugins` directory ''(since [milestone:0.10])''.

  To install `setuptools`, download the bootstrap module [http://peak.telecommunity.com/dist/ez_setup.py ez_setup.py] and execute it as follows:
  {{{
  $ python ez_setup.py
  }}}

  If the `ez_setup.py` script fails to install the setuptools release, you can download it from [http://www.python.org/pypi/setuptools PyPI] and install it manually.

  == Installing a Trac Plugin ==

  === For a Single Project ===

  Plugins are packaged as [http://peak.telecommunity.com/DevCenter/PythonEggs Python eggs]. That means they are ZIP archives with the file extension `.egg`. If you have downloaded a source distribution of a plugin, you can run:
  {{{
  $ python setup.py bdist_egg
  }}}
  to build the `.egg` file.

  Once you have the plugin archive, you need to copy it into the `plugins` directory of the [wiki:TracEnvironment project environment]. Also, make sure that the web server has sufficient permissions to read the plugin egg.

  Note that the Python version that the egg is built with must
  match the Python version with which Trac is run.  If for
  instance you are running Trac under Python 2.3, but have
  upgraded your standalone Python to 2.4, the eggs won't be
  recognized.

  === For All Projects ===

  ==== With an .egg file ====

  Some plugins (such as [http://trac.edgewall.org/wiki/WebAdmin WebAdmin]) are downloadable as a `.egg` file which can be installed with the `easy_install` program:
  {{{
  easy_install TracWebAdmin-0.1.1dev_r2765-py2.3.egg
  }}}

  If `easy_install` is not on your system see the Requirements section above to install it.  Windows users will need to add the `Scripts` directory of their Python installation (for example, `C:\Python23\Scripts`) to their `PATH` environment variable (see [http://peak.telecommunity.com/DevCenter/EasyInstall#windows-notes easy_install Windows notes] for more information).

  If Trac reports permission errors after installing a zipped egg and you would rather not bother providing a egg cache directory writable by the web server, you can get around it by simply unzipping the egg. Just pass `--always-unzip` to `easy_install`:
  {{{
  easy_install --always-unzip TracWebAdmin-0.1.1dev_r2765-py2.3.egg
  }}}
  You should end up with a directory having the same name as the zipped egg (complete with `.egg` extension) and containing its uncompressed contents.

  Trac also searches for globally installed plugins under `$prefix/share/trac/plugins` ''(since 0.10)''.

  ==== From source ====

  If you downloaded the plugin's source from Subversion, or a source zip file you can install it using the included `setup.py`:
  {{{
  $ python setup.py install
  }}}

  ==== Enabling the plugin ====
  Unlike plugins installed per-environment, you'll have to explicitly enable globally installed plugins via [wiki:TracIni trac.ini]. This is done in the `[components]` section of the configuration file, for example:
  {{{
  [components]
  webadmin.* = enabled
  }}}

  The name of the option is the Python package of the plugin. This should be specified in the documentation of the Plugin, but can also be easily find out by looking at the source (look for a top-level directory that contains a file named `__init__.py`.)

  Note: After installing the plugin, you may need to restart Apache.

  == Setting up the Plugin Cache ==

  Some plugins will need to be extracted by the Python eggs runtime (`pkg_resources`), so that their contents are actual files on the file system. The directory in which they are extracted defaults to the home directory of the current user, which may or may not be a problem. You can however override the default location using the `PYTHON_EGG_CACHE` environment variable.

  To do this from the Apache configuration, use the `SetEnv` directive as follows:
  {{{
  SetEnv PYTHON_EGG_CACHE /path/to/dir
  }}}

  This works whether you are using the [wiki:TracCgi CGI] or the [wiki:TracModPython mod_python] front-end. Put this directive next to where you set the path to the [wiki:TracEnvironment Trac environment], i.e. in the same `<Location>` block.

  For example (for CGI):
  {{{
   <Location /trac>
     SetEnv TRAC_ENV /path/to/projenv
     SetEnv PYTHON_EGG_CACHE /path/to/dir
   </Location>
  }}}

  or (for mod_python):
  {{{
   <Location /trac>
     SetHandler mod_python
     ...
     SetEnv PYTHON_EGG_CACHE /path/to/dir
   </Location>
  }}}

   ''Note: this requires the `mod_env` module''

  For [wiki:TracFastCgi FastCGI], you'll need to `-initial-env` option, or whatever is provided by your web server for setting environment variables.

  === About hook scripts ===

  If you have set up some subversion hook scripts that call the Trac engine - such as the post-commit hook script provided in the `/contrib` directory - make sure you define the `PYTHON_EGG_CACHE` environment variable within these scripts as well.

  == Troubleshooting ==

  === Is setuptools properly installed? ===

  Try this from the command line:
  {{{
  $ python -c "import pkg_resources"
  }}}

  If you get '''no output''', setuptools '''is''' installed. Otherwise, you'll need to install it before plugins will work in Trac.

  === Did you get the correct version of the Python egg? ===

  Python eggs have the Python version encoded in their filename. For example, `MyPlugin-1.0-py2.4.egg` is an egg for Python 2.4, and will '''not''' be loaded if you're running a different Python version (such as 2.3 or 2.5).

  Also, verify that the egg file you downloaded is indeed a ZIP archive. If you downloaded it from a Trac site, chances are you downloaded the HTML preview page instead.

  === Is the plugin enabled? ===

  If you install a plugin globally (i.e. ''not'' inside the `plugins` directory of the Trac project environment) you will have to explicitly enable it in [TracIni trac.ini]. Make sure that:
   * you actually added the necessary line(s) to the `[components]` section
   * the package/module names are correct
   * if you're reference a module (as opposed to a class), you've appended the necessary “.*”
   * the value is “enabled", not e.g. “enable”

  === Check the permissions on the egg file ===

  Trac must of course be able to read the file. Yeah, you knew that ;-)

  === Check the log files ===

  Enable [TracLogging logging] in Trac, set the log level to `DEBUG` and then watch the log file for messages about loading plugins.

  ----
  See also TracGuide, [http://trac.edgewall.org/wiki/PluginList plugin list], [http://trac.edgewall.org/wiki/TracDev/ComponentArchitecture component architecture]


name: TracRss
author: trac
ipnr: 127.0.0.1
text:
  = Using RSS with Trac =
  [[TracGuideToc]]

  Several of the Trac modules support content syndication using the RSS (Really Simple Syndication) XML format.
  Using the RSS subscription feature in Trac, you can easily monitor progress of the project, a set of issues or even changes to a single file .

  Trac supports RSS feeds in:

   * TracTimeline --  Use the RSS feed to '''subscribe to project events'''.[[br]]Monitor overall project progress in your favorite RSS reader.
   * TracTickets, TracReports, and TracQuery -- Allows syndication of report and ticket query results.[[br]]Be notified about important and relevant issue tickets.
   * TracBrowser and TracRevisionLog -- Syndication of file changes.[[br]]Stay up to date with changes to a specific file or directory.

  == How to access RSS data ==
  Anywhere in Trac where RSS is available, you should find a small orange '''XML''' icon, typically placed at the bottom of the page. Clicking the icon will access the RSS feed for that specific resource.

  '''Note:''' Different modules provide different data in their RSS feeds. Usually, the syndicated information corresponds to the current view. For example, if you click the RSS link on a report page, the feed will be based on that report. It might be explained by thinking of the RSS feeds as an ''alternate view of the data currently displayed''.

  == Links ==
   * http://blogs.law.harvard.edu/tech/rss -- RSS 2.0 Specification
   * http://www.mozilla.org/products/firefox/ -- Mozilla Firefox supports [http://www.mozilla.org/products/firefox/live-bookmarks.html live bookmarks] using RSS
   * http://sage.mozdev.org -- Sage RSS and Atom feed aggregator for Mozilla Firefox
   * http://pim.kde.org/users.php -- [http://kde.org KDE] RSS Reader for Linux/BSD/*n*x systems
   * http://www.rssreader.com/ -- Free and powerful RSS Reader for Windows
   * http://liferea.sourceforge.net/ -- Open source GTK2 RSS Reader for Linux
   * http://akregator.sourceforge.net/ -- Open source KDE RSS Reader (part of KDE-PIM)
   * http://www.sharpreader.net/ -- A free RSS Reader written in .NET for Windows
   * http://ranchero.com/netnewswire/ -- An excellent RSS reader for Mac OS X (has both free and pay versions)
  ----
  See also: TracGuide, TracTimeline, TracReports, TracBrowser


name: WikiDeletePage
author: trac
ipnr: 127.0.0.1
text:
  = Deleting a Wiki Page =

  Existing wiki pages can be completely deleted using the ''Delete Page'' or the ''Delete this Version'' buttons at the bottom of the wiki page. These buttons are only visible for users with `WIKI_DELETE` permissions.

  '''Note:''' Deleting a wiki page is an irreversible operation.

  In general, it is recommended to create redirection pages instead of completely deleting an old page, as to not frustrate the visitor with broken links when coming to the site from a search engine. A redirection page is a short page that  contains a link such as  “See !SomeOtherPage”. However, deleting specific versions or even complete pages can make sense to remove spam or other abusive submissions.

  ----
  See also: TracWiki, TracPermissions


name: TracStandalone
author: trac
ipnr: 127.0.0.1
text:
  = Tracd =

  Tracd is a lightweight standalone Trac web server. In most cases it's easier to setup and runs faster than the [wiki:TracCgi CGI script].

  == Pros ==

   * Fewer dependencies: You don't need to install apache or any other web-server.
   * Fast: Should be almost as fast as the [wiki:TracModPython mod_python] version (and much faster than the [wiki:TracCgi CGI]).
   * Automatic reloading: For development, Tracd can be used in ''auto_reload'' mode, which will automatically restart the server whenever you make a change to the code (in Trac itself or in a plugin).

  == Cons ==

   * Fewer features: Tracd implements a very simple web-server and is not as configurable or as scalable as Apache HTTPD.
   * No native HTTPS support: [http://www.rickk.com/sslwrap/ sslwrap] can be used instead,
     or [http://trac.edgewall.org/wiki/STunnelTracd stunnel -- a tutorial on how to use stunnel with tracd] or Apache with mod_proxy.

  == Usage examples ==

  A single project on port 8080. (http://localhost:8080/)
  {{{
   $ tracd -p 8080 /path/to/project
  }}}
  With more than one project. (http://localhost:8080/project1/ and http://localhost:8080/project2/)
  {{{
   $ tracd -p 8080 /path/to/project1 /path/to/project2
  }}}

  You can't have the last portion of the path identical between the projects since Trac uses that name to keep the URLs of the
  different projects unique. So if you use `/project1/path/to` and `/project2/path/to`, you will only see the second project.

  An alternative way to serve multiple projects is to specify a parent directory in which each subdirectory is a Trac project, using the `-e` option. The example above could be rewritten:
  {{{
   $ tracd -p 8080 -e /path/to
  }}}

  == Using Authentication ==

  Tracd provides support for both Basic and Digest authentication. The default is to use Digest; to use Basic authentication, replace `--auth` with `--basic-auth` in the examples below, and omit the realm.

    ''Support for Basic authentication was added in version 0.9.''

  If the file `/path/to/users.htdigest` contains user accounts for project1 with the realm "mycompany.com", you'd use the following command-line to start tracd:
  {{{
   $ tracd -p 8080 --auth project1,/path/to/users.htdigest,mycompany.com /path/to/project1
  }}}

  '''Note''': the project "name" passed to the `--auth` option is the base name of the project environment directory.

  Of course, the digest file can be be shared so that it is used for more than one project:
  {{{
   $ tracd -p 8080 \
     --auth project1,/path/to/users.htdigest,mycompany.com \
     --auth project2,/path/to/users.htdigest,mycompany.com \
     /path/to/project1 /path/to/project2
  }}}

  Another way to share the digest file is to specify "*"
  for the project name:
  {{{
   $ tracd -p 8080 \
     --auth *,/path/to/users.htdigest,mycompany.com \
     /path/to/project1 /path/to/project2
  }}}

  == How to set up an htdigest password file ==

  If you have Apache available, you can use the htdigest command to generate the password file. Type 'htdigest' to get some usage instructions, or read [http://httpd.apache.org/docs/2.0/programs/htdigest.html this page] from the Apache manual to get precise instructions.  You'll be prompted for a password to enter for each user that you create.  For the name of the password file, you can use whatever you like, but if you use something like `users.htdigest` it will remind you what the file contains. As a suggestion, put it in your <projectname>/conf folder along with the [TracIni trac.ini] file.

  Note that you can start tracd without the --auth argument, but if you click on the ''Login'' link you will get an error.

  == Generating Passwords Without Apache ==

  If you don't have Apache available, you can use this simple Python script to generate your passwords:

  {{{
  from optparse import OptionParser
  import md5

  # build the options
  usage = "usage: %prog [options]"
  parser = OptionParser(usage=usage)
  parser.add_option("-u", "--username",action="store", dest="username", type = "string",
                    help="the username for whom to generate a password")
  parser.add_option("-p", "--password",action="store", dest="password", type = "string",
                    help="the password to use")
  (options, args) = parser.parse_args()

  # check options
  if (options.username is None) or (options.password is None):
     parser.error("You must supply both the username and password")
     
  # Generate the string to enter into the htdigest file
  realm = 'trac'
  kd = lambda x: md5.md5(':'.join(x)).hexdigest()
  print ':'.join((options.username, realm, kd([options.username, realm, options.password])))
  }}}

  Note: If you use the above script you must use the --auth option to tracd, not --basic-auth, and you must set the realm in the --auth value to 'trac' (without the quotes). Example usage (assuming you saved the script as trac-digest.py):

  {{{
  python trac-digest.py -u username -p password >> c:\digest.txt
  python tracd --port 8000 --auth proj_name,c:\digest.txt,trac c:\path\to\proj_name
  }}}

  == Tips ==

  === Serving static content ===

  If `tracd` is the only webserver used for the project, 
  it can also be used to distribute static content 
  (tarballs, Doxygen documentation, etc.)

  This static content should be put in the `$TRAC_ENV/htdocs` folder,
  and is accessed by URLs like `<project_URL>/chrome/site/...`.

  Example: given a `$TRAC_ENV/htdocs/software-0.1.tar.gz` file,
  the corresponding relative URL would be `/<project_name>/chrome/site/software-0.1.tar.gz`, 
  which in turn can be written using the relative link syntax
  in the Wiki: `[/<project_name>/chrome/site/software-0.1.tar.gz]` 

  The development version of Trac supports a new `htdocs:` TracLinks 
  syntax for the above. With this, the example link above can be written simply 
  `htdocs:software-0.1.tar.gz`. 

  ----
  See also: TracInstall, TracCgi, TracModPython, TracGuide

  ----
  '''Translation:'''
   * [https://opensvn.csie.org/traccgi/trac_rus/wiki/StandAloneTracForTeapot Russian] (перевод на Русский)


name: TracInterfaceCustomization
author: trac
ipnr: 127.0.0.1
text:
  = Customizing the Trac Interface =
  [[TracGuideToc]]

  == Introduction ==
  This page is meant to give users suggestions on how they can customize the look of Trac.  Topics on this page cover editing the HTML templates and CSS files, but not the program code itself.  The topics are intended to show users how they can modify the look of Trac to meet their specific needs.  Suggestions for changes to Trac's interface applicable to all users should be filed as tickets, not listed on this page.

  == Project Logo and Icon ==
  The easiest parts of the Trac interface to customize are the logo and the site icon.  Both of these can be configured with settings in [wiki:TracIni trac.ini].

  The logo or icon image should be put in a folder named "htdocs" in your project's environment folder.  (''Note: in projects created with a Trac version prior to 0.9 you will need to create this folder'')

   ''Note: you can actually put the logo and icon anywhere on your server (as long as it's accessible through the web server), and use their absolute or server-relative URLs in the configuration.''

  Now configure the appropriate section of your [wiki:TracIni trac.ini]:

  === Logo ===
  Change the `src` setting to `site/` followed by the name of your image file.  The `width` and `height` settings should be modified to match your image's dimensions (the Trac chrome handler uses "`site/`" for files within the project directory `htdocs` and "`common/`" for the common ones).

  {{{
  [header_logo]
  src = site/my_logo.gif
  alt = My Project
  width = 300
  height = 100
  }}}

  === Icon ===
  Icons should be a 16x16 image in `.gif` or `.ico` format.  Change the `icon` setting to `site/` followed by the name of your icon file.  Icons will typically be displayed by your web browser next to the site's URL and in the `Bookmarks` menu.

  {{{
  [project]
  icon = site/my_icon.ico
  }}}

  Note though that this icon is ignored by Internet Explorer, which only accepts a file named ``favicon.ico`` at the root of the host. To make the project icon work in both IE and other browsers, you can store the icon in the document root of the host, and reference it from ``trac.ini`` as follows:

  {{{
  [project]
  icon = /favicon.ico
  }}}

  == Site Header & Footer ==

  In the environment folder for each Trac project there should be a directory called {{{templates}}}.  This folder contains files {{{site_header.cs}}} and {{{site_footer.cs}}}.  Users can customize their Trac site by adding the required HTML markup to these files.  The content of these two files will be placed immediately following the opening {{{<body>}}} tag and immediately preceding the closing {{{</body>}}} tag of each page in the site, respectively.

  These files may contain static HTML, though if users desire to have dynamically generated content they can make use of the [http://www.clearsilver.net/ ClearSilver] templating language from within the pages as well. When you need to see what variables are available to the template, append the query string `?hdfdump=1` to the URL of your Trac site. This will display a structured view of the template data.

  == Site CSS ==
  The primary means to adjust the layout of a Trac site is to add [http://www.w3.org/TR/REC-CSS2/ CSS] style rules that overlay the default rules. This is best done by editing the `site_css.cs` file in the enviroment's `templates` directory. The content of that template gets inserted into a `<style type="text/css"></style>` element on every HTML page generated by Trac.

  While you can add your custom style rules directly to the `site_css.cs` file, it is recommended that you simply reference an external style sheet, thereby enabling browsers to cache the CSS file instead of transmitting the rules with every response.

  The following example would import a style sheet located in the `style` root directory of your host:
  {{{
  @import url(/style/mytrac.css);
  }}}

  You can use a !ClearSilver variable to reference a style sheet stored in the project environment's `htdocs` directory:
  {{{
  @import url(<?cs var:chrome.href ?>/site/style.css);
  }}}

  == Project List ==
  You can use a custom ClearSilver template to display the list of projects if you are using Trac with multiple projects.  

  The following is the basic template used by Trac to display a list of links to the projects.  For projects that could not be loaded it displays an error message. You can use this as a starting point for your own index template.

  {{{
  #!text/html
  <html>
  <head><title>Available Projects</title></head>
  <body>
   <h1>Available Projects</h1>
   <ul><?cs
   each:project = projects ?><li><?cs
    if:project.href ?>
     <a href="<?cs var:project.href ?>" title="<?cs var:project.description ?>">
      <?cs var:project.name ?></a><?cs
    else ?>
     <small><?cs var:project.name ?>: <em>Error</em> <br />
     (<?cs var:project.description ?>)</small><?cs
    /if ?>
    </li><?cs
   /each ?>
   </ul>
  </body>
  </html>
  }}}

  Once you've created your custom template you will need to configure the webserver to tell Trac where the template is located:

  For [wiki:TracFastCgi FastCGI]:
  {{{
  FastCgiConfig -initial-env TRAC_ENV_PARENT_DIR=/parent/dir/of/projects \
                -initial-env TRAC_ENV_INDEX_TEMPLATE=/path/to/template
  }}}

  For [wiki:TracModPython mod_python]:
  {{{
  PythonOption TracEnvIndexTemplate /path/to/template
  }}}

  For [wiki:TracCgi CGI]:
  {{{
  SetEnv TRAC_ENV_INDEX_TEMPLATE /path/to/template
  }}}


  == Main Templates ==

  It is also possible to use your own modified versions of the Trac [http://www.clearsilver.net/ ClearSilver] templates. Note though that this technique is not recommended because it makes upgrading Trac rather problematic: there are unfortunately several dependencies between the templates and the application code, such as the name of form fields and the structure of the template data, and these are likely to change between different versions of Trac.

  If you absolutely need to use modified templates, copy the template files from the default templates directory (usually in found in `$prefix/share/trac/templates`) into the `templates` directory of the project environment. Then modify those copies to get the desired results.

  ----
  See also TracGuide, TracIni


name: SandBox
author: trac
ipnr: 127.0.0.1
text:
  = The Sandbox =

  This is just a page to practice and learn WikiFormatting. 

  Go ahead, edit it freely.


name: WikiHtml
author: trac
ipnr: 127.0.0.1
text:
  = Using HTML in Wiki Text =

  Trac supports inserting HTML into any wiki context, accomplished using the HTML [wiki:WikiProcessors WikiProcessor].

  HTML support is built-in, and does not require installing any additional packages.

  == How to Use HTML ==
  To inform the wiki engine that a block of text should be treated as HTML, use the ''html'' processor. 

  This example should explain:
  {{{
  #!html
  <pre class="wiki">{{{
  #!html
  &lt;h1 style="text-align: right; color: blue"&gt;HTML Test&lt;/h1&gt;
  }}}</pre>
  }}}

  Results in:
  {{{
  #!html
  <h1 style="text-align: right; color: blue">HTML Test</h1>
  }}}

  Note that Trac sanitizes your HTML code before displaying it. That means that if you try to use potentially dangerous constructs such as Javascript event handlers, those will be removed from the output.

  == More Information ==

   * http://www.w3.org/ -- World Wide Web Consortium
   * http://www.w3.org/MarkUp/ -- HTML Markup Home Page

  ----
  See also:  WikiProcessors, WikiFormatting, WikiRestructuredText


name: TracTicketsCustomFields
author: trac
ipnr: 127.0.0.1
text:
  = Custom Ticket Fields =
  Trac supports adding custom, user-defined fields to the ticket module. Using custom fields, you can add typed, site-specific properties to tickets.

  == Configuration ==
  Configuring custom ticket fields is done in the [wiki:TracIni trac.ini] file. All field definitions should be under a section named `[ticket-custom]`.

  The syntax of each field definition is:
  {{{
   FIELD_NAME = TYPE
   (FIELD_NAME.OPTION = VALUE)
   ...
  }}}
  The example below should help to explain the syntax.

  === Available Field Types and Options ===
   * '''text''': A simple (one line) text field.
     * label: Descriptive label.
     * value: Default value.
     * order: Sort order placement. (Determines relative placement in forms.)
   * '''checkbox''': A boolean value check box.
     * label: Descriptive label.
     * value: Default value (0 or 1).
     * order: Sort order placement.
   * '''select''': Drop-down select box. Uses a list of values.
     * label: Descriptive label.
     * options: List of values, separated by '''|''' (vertical pipe).
     * value: Default value (Item #, starting at 0).
     * order: Sort order placement.
   * '''radio''': Radio buttons. Essentially the same as '''select'''.
     * label: Descriptive label.
     * options: List of values, separated by '''|''' (vertical pipe).
     * value: Default value (Item #, starting at 0).
     * order: Sort order placement.
   * '''textarea''': Multi-line text area.
     * label: Descriptive label.
     * value: Default text.
     * cols: Width in columns.
     * rows: Height in lines.
     * order: Sort order placement.

  === Sample Config ===
  {{{
  [ticket-custom]

  test_one = text
  test_one.label = Just a text box

  test_two = text
  test_two.label = Another text-box
  test_two.value = Just a default value

  test_three = checkbox
  test_three.label = Some checkbox
  test_three.value = 1

  test_four = select
  test_four.label = My selectbox
  test_four.options = one|two|third option|four
  test_four.value = 2

  test_five = radio
  test_five.label = Radio buttons are fun
  test_five.options = uno|dos|tres|cuatro|cinco
  test_five.value = 1

  test_six = textarea
  test_six.label = This is a large textarea
  test_six.value = Default text
  test_six.cols = 60
  test_six.rows = 30
  }}}

  ''Note: To make entering an option for a `select` type field optional, specify a leading `|` in the `fieldname.options` option.''

  === Reports Involving Custom Fields ===

  The SQL required for TracReports to include custom ticket fields is relatively hard to get right. You need a `JOIN` with the `ticket_custom` field for every custom field that should be involved.

  The following example includes a custom ticket field named `progress` in the report:
  {{{
  #!sql
  SELECT p.value AS __color__,
     id AS ticket, summary, component, version, milestone, severity,
     (CASE status WHEN 'assigned' THEN owner||' *' ELSE owner END) AS owner,
     time AS created,
     changetime AS _changetime, description AS _description,
     reporter AS _reporter,
    (CASE WHEN c.value = '0' THEN 'None' ELSE c.value END) AS progress
    FROM ticket t
       LEFT OUTER JOIN ticket_custom c ON (t.id = c.ticket AND c.name = 'progress')
       JOIN enum p ON p.name = t.priority AND p.type='priority'
    WHERE status IN ('new', 'assigned', 'reopened')
    ORDER BY p.value, milestone, severity, time
  }}}

  Note in particular the `LEFT OUTER JOIN` statement here.

  ----
  See also: TracTickets, TracIni


name: TracUnicode
author: trac
ipnr: 127.0.0.1
text:
  = Unicode Support in Trac =
  [[TracGuideToc]]

  Trac stores all text using UTF-8 encoding, including text in tickets and wiki pages. Internal processing of text uses true Unicode representations.

  As such, it supports most (all?) commonly used character encodings.

  == Examples ==

  === Arabic ===
  تراك يقوم بحفظ كل الكلمات باستخدام صيغة UTF-8، بما في ذلك الكلمات المستخدمة في صفحات  التيكت والويكي.

  === Bulgarian ===
  Българският език работи ли?

  === Česky ===
  Čeština v kódování UTF-8, žádný problém.

  === Chinese ===
  Traditional: 繁體中文, 漢字測試; Simplified: 简体中文，汉字测试

  === Croatian ===
  Ako podržava srpski i slovenski mora podržavati i Hrvatski - čćžšđ ČĆŽŠĐ 

  === English ===
  Yes indeed, Trac supports English. Fully.

  === Français ===
  Il est possible d'écrire en Français : à, ç, û, ...

  === German ===
  Trac-Wiki muß auch deutsche Umlaute richtig anzeigen: ö, ä, ü, Ä, Ö, Ü; und das scharfe ß

  === Greek ===
  Τα Ελληνικά υποστηρίζονται επαρκώς επίσης.

  === Hebrew ===
  אני יכול לאכול זכוכית וזה לא מזיק לי

  === Hindi ===
  अब हिन्दी में।

  === Hungarian ===
  Árvíztűrő tükörfúrógép

  === Icelandic ===
  Ævar sagði við ömmu sína: Sjáðu hvað ég er stór!

  === Japanese ===
  漢字 ひらがな カタカナ ﾊﾝｶｸｶﾅ 日本語試験

  === Korean ===
  이번에는 한글로 써보겠습니다. 잘 보이나요? 한글

  === Latvian ===

  Latviešu valoda arī strādā!

  === Lithuanian ===
  Sudalyvaukime ir mes. Ar veikia lietuviškos raidės? ąčęėįšųūž ĄČĘĖĮŠŲŪŽ Žinoma, kad veikia :)
  Kas tie mes?

  === Persian (Farsi) ===
  این یک متن فارسی است ولی امکان نوشتن مستقیم فارسی نیست چون حالت متن از راست به چپ و جود ندارد برای فارسی نوشتن باید از HTML استفاده کنید.
  {{{
  #!html
  <div dir="rtl">
  }}}
  این نمونه یک متن از راست به چپ فارسی است که در HTML نوشته شده تا اعداد 12345 و حروف لاتین ABCDEF در محل خودشان نمایش داده شوند.
  {{{
  #!html
  </div>
  }}}

  === Polish ===
  Pchnąć w tę łódź jeża lub ośm skrzyń fig

  === Portuguese ===
  É possível guardar caracteres especias da língua portuguesa, incluindo o símbolo da moeda européia '€', trema 'ü', crase 'à', agudos 'áéíóú', circunflexos 'âêô', til 'ãõ', cedilha 'ç', ordinais 'ªº', grau '°¹²³'.

  === Russian ===
  Проверка русского языка: кажется работает... И буква "ё" есть...

  === Serbian ===
  Podržan, uprkos činjenici da se za njegovo pisanje koriste чак два алфабета.

  === Slovenian ===
  Ta suhi škafec pušča vodo že od nekdaj!

  === Spanish ===
  Esto es un pequeño texto en Español, ahora una con acentó

  === Swedish ===
  Räven raskar över isen med luva på.

  === Thai ===
  Trac แสดงภาษาไทยได้อย่างถูกต้อง!

  === Ukrainian ===
  Перевірка української мови...

  === Urdu ===
  ٹریک اردو بھی سپورٹ کرتا ہے۔

  === Vietnamese ===
  Viết tiếng Việt cũng được. Nhưng search từ tiếng Việt thì không bôi vàng được. (Keyword(s) in Vietnamese search result can not be hightlighted !!!!).


name: WikiPageNames
author: trac
ipnr: 127.0.0.1
text:
  = Wiki Page Names =

  Wiki page names commonly use the CamelCase convention. Within wiki text, any word in CamelCase automatically becomes a hyperlink to the wiki page with that name.

  CamelCase page names must follow these rules:

   1. The name must consist of '''alphabetic characters only'''. No digits, spaces, punctuation, or underscores are allowed.
   2. A name must have at least two capital letters.
   3. The first character must be capitalized.
   4. Every capital letter must be followed by one or more lower-case letters. 
   5. The use of slash ( / ) is permitted in page names (possibly representing a hierarchy).

  If you want to create a wiki page that doesn't follow CamelCase rules you can use the following syntax:
  {{{
   * [wiki:Wiki_page], [wiki:ISO9000]
   * [wiki:"Space Matters"] that page name embeds space characters
   * or simply: ["WikiPageName"]s (!MoinMoin's internal free links style)
  }}}

  This will be rendered as:
   * [wiki:Wiki_page], [wiki:ISO9000]
   * [wiki:"Space Matters"] that page name embeds space characters
   * or simply ["WikiPageName"] (!MoinMoin's internal free links style)

  See also TracLinks#QuotingspaceinTracLinks.

  Finally, and as exemplified in the line above, one can also append an anchor to a Wiki page name, in order to link to a specific section within that page. The anchor can easily be seen by hovering the mouse over a section heading, then clicking on the [[html(&para;)]] sign that appears at its end. The anchor is usually generated automatically, but it's also possible to specify it explicitely, see WikiFormatting#using-explicit-id-in-heading
  ----
  See also: WikiNewPage, WikiFormatting, TracWiki, TracLinks


name: InterWiki
author: trac
ipnr: 127.0.0.1
text:
  = Support for InterWiki links =

  ''(since [milestone:0.10])''

  == Definition ==

  An InterWiki link can be used for referring to a Wiki page
  located in another Wiki system, and by extension, to any object
  located in any other Web application, provided a simple URL 
  mapping can be done.

  At the extreme, InterWiki prefixes can even be used to simply introduce
  links to new protocols, such as `tsvn:` used by TortoiseSvn.

  == Link Syntax ==

  {{{
  <target_wiki>(:<identifier>)+
  }}}

  The link is composed by the targeted Wiki (or system) name,
  followed by a colon (e.g. `MeatBall:`),
  followed by a page specification in the target.
  Note that, as for InterTrac prefixes, '''InterWiki prefixes are case insensitive'''.

  The target Wiki URL is looked up in the InterMapTxt wiki page, 
  modelled after MeatBall:InterMapTxt.

  In addition to traditional InterWiki links, where the target
  is simply ''appended'' to the URL, 
  Trac supports parametric InterWiki URLs:
  identifiers `$1`, `$2`, ... in the URL
  will be replaced by corresponding arguments.
  The argument list is formed by splitting the page identifier
  using the ":" separator.

  == Examples ==

  If the following is an excerpt of the InterMapTxt page:

  {{{
  = InterMapTxt =
  == This is the place for defining InterWiki prefixes ==

  Currently active prefixes: [[InterWiki]]

  This page is modelled after the MeatBall:InterMapTxt page.
  In addition, an optional comment is allowed after the mapping.
  ----
  {{{
  PEP      http://www.python.org/peps/pep-$1.html           # Python Enhancement Proposal $1 
  Trac-ML  http://thread.gmane.org/gmane.comp.version-control.subversion.trac.general/$1  # Message $1 in Trac Mailing List

  tsvn     tsvn:                                            # Interact with TortoiseSvn
  ...
  MeatBall http://www.usemod.com/cgi-bin/mb.pl?
  MetaWiki http://sunir.org/apps/meta.pl?
  MetaWikiPedia http://meta.wikipedia.org/wiki/
  MoinMoin http://moinmoin.wikiwikiweb.de/
  ...
  }}}
  }}}

  Then, 
   * `MoinMoin:InterWikiMap` should be rendered as MoinMoin:InterWikiMap
     and the ''title'' for that link would be "!InterWikiMap in !MoinMoin"
   * `Trac-ML:4346` should be rendered as Trac-ML:4346
     and the ''title'' for that link would be "Message 4346 in Trac Mailing List"

  ----
  See also: InterTrac, InterMapTxt


name: TracSyntaxColoring
author: trac
ipnr: 127.0.0.1
text:
  = Syntax Coloring of Source Code =
  Trac supports language-specific syntax highlighting of source code in [wiki:WikiFormatting wiki formatted] text and the [wiki:TracBrowser repository browser].

  To do this, Trac uses external libraries with support for a great number of programming languages.

  Currently Trac supports syntax coloring using one or more of the following packages:

   * [http://www.codento.com/people/mtr/genscript/ GNU Enscript] 
   * [http://silvercity.sourceforge.net/ SilverCity]

  To activate syntax coloring, simply install either one (or more) of these packages. No additional configuration is required, however to modify the colors, have a look at `trac/htdocs/css/code.css`.

  When in use, Trac will automatically prioritize !SilverCity highlighting over Enscript if possible, (see note below). 

  If neither package is available, Trac will display the data as plain text. 

  '''Note:''' Enscript supports a greater number of languages, however !SilverCity is generally faster since it is a library and isn't executed in an external process.

  === About SilverCity ===
  !SilverCity uses the lexer from [http://www.scintilla.org/ Scintilla]. Scintilla supports more languages than !SilverCity implements. If you want to add a language to !SilverCity supported by Scintilla, it's not very difficult. See [http://projects.edgewall.com/trac/wiki/SilverCityAddLanguage SilverCityAddLanguage] for some information how.


  == Syntax Coloring Support ==

  || || !SilverCity || Enscript ||
  || Ada      ||   || X ||
  || Asm      ||   || X ||
  || * ASP    || X || X ||
  || * C      || X || X ||
  || * C#     ||   || X(2) ||
  || * C++    || X || X ||
  || * Java   ||   || X ||
  || Awk      ||   || X ||
  || CSS      || X ||   ||
  || Diff     ||   || X ||
  || Eiffel   ||   || X ||
  || Elisp    ||   || X ||
  || Fortran  ||   || X ||
  || Haskell  ||   || X ||
  || HTML     || X || X ||
  || IDL      ||   || X ||
  || Javascript || X || X ||
  || m4       ||   || X ||
  || Makefile ||   || X ||
  || Matlab   ||   || X ||
  || Objective-C|| || X ||
  || Pascal   ||   || X ||
  || * Perl   || X || X ||
  || * PHP    || X || X ||
  || PSP      || X ||   ||
  || Pyrex    ||   || X ||
  || * Python || X || X ||
  || * Ruby   || X || X (1) ||
  || Scheme   ||   || X ||
  || Shell    ||   || X ||
  || SQL      || X || X ||
  || Troff    ||   || X ||
  || TCL      ||   || X ||
  || Tex      ||   || X ||
  || Verilog  ||   || X ||
  || VHDL     ||   || X ||
  || Visual Basic |||| X ||
  || VRML     ||   || X ||
  || XML      || X ||  ||

  ''(*) Supported as inline code blocks in [wiki:WikiFormatting Wiki text] using WikiProcessors.''

  ''(1) Ruby highlighting is not included in the Enscript distribution.  Highlighting rules for Ruby can be obtained from: http://neugierig.org/software/ruby/

  ''(2) C# highlighting is not included in the Enscript distribution.  Highlighting rules for C# can be obtained from: http://wiki.hasno.info/index.php/Csharp.st

  == Extra Software ==
   * GNU Enscript -- http://directory.fsf.org/GNU/enscript.html
   * GNU Enscript for Windows -- http://gnuwin32.sourceforge.net/packages/enscript.htm
   * !SilverCity -- http://silvercity.sf.net/

  ----
  See also: WikiProcessors, WikiFormatting, TracWiki, TracBrowser


name: TracLogging
author: trac
ipnr: 127.0.0.1
text:
  = Trac Logging =
  [[TracGuideToc]]

  Trac supports logging of system messages using the standard [http://docs.python.org/lib/module-logging.html logging module] that comes with Python.

  Logging is configured in the {{{[logging]}}} section in [wiki:TracIni trac.ini].

  == Supported Logging Methods ==

  The log method is set using the `log_type` configuration option, which takes any of the following values:
   '''none'':: Suppress all log messages.
   '''file''':: Log messages to a file, specified with the `log_file` option in [wiki:TracIni trac.ini]. 
   '''stderr''':: Output all log entries to console ([wiki:TracStandalone tracd] only).
   '''syslog''':: (UNIX) Send messages to local syslogd via named pipe `/dev/log`.
   '''eventlog''':: (Windows) Use the system's NT eventlog for Trac logging.

  == Log Levels ==

  The verbosity level of logged messages can be set using the ''log_level'' directive in [wiki:TracIni trac.ini]. The log level defines the minimum level of urgency required for a message to be logged.

  The levels are:
   '''CRITICAL''':: Log only the most critical (typically fatal) errors.
   '''ERROR''':: Log failures, bugs and errors. 
   '''WARN''':: Log warnings, non-interrupting events.
   '''INFO''':: Diagnostic information, log information about all processing.
   '''DEBUG''':: Trace messages, profiling, etc.

  ----
  See also: TracIni, TracGuide, TracEnvironment


name: TracPermissions
author: trac
ipnr: 127.0.0.1
text:
  = Trac Permissions =
  [[TracGuideToc]]

  Trac uses a simple permission system to control what users can and can't access.

  Permission privileges are managed using the [wiki:TracAdmin trac-admin] tool.

  Non-authenticated users accessing the system are assigned the name "anonymous". Assign permissions to the "anonymous" user to set privileges for anonymous/guest users. The parts of Trac that a user does not have the privileges for will not be displayed in the navigation.

  In addition to these privileges, users can be granted additional individual rights in effect when authenticated and logged into the system. All logged in users belong to the virtual group "authenticated", which inherits permissions from "anonymous".

  == Available Privileges ==

  To enable all privileges for a user, use the `TRAC_ADMIN` permission. Having `TRAC_ADMIN` is like being `root` on a *NIX system, it will allow you perform any operation.

  Otherwise, individual privileges can be assigned to users for the various different functional areas of Trac (note that the privilege names are case-sensitive):

  === Repository Browser ===

  || `BROWSER_VIEW` || View directory listings in the [wiki:TracBrowser repository browser] ||
  || `LOG_VIEW` || View revision logs of files and directories in the [wiki:TracBrowser repository browser] ||
  || `FILE_VIEW` || View files in the [wiki:TracBrowser repository browser] ||
  || `CHANGESET_VIEW` || View [wiki:TracChangeset repository check-ins] ||

  === Ticket System ===

  || `TICKET_VIEW` || View existing [wiki:TracTickets tickets] and perform [wiki:TracQuery ticket queries] ||
  || `TICKET_CREATE` || Create new [wiki:TracTickets tickets] ||
  || `TICKET_APPEND` || Add comments or attachments to [wiki:TracTickets tickets] ||
  || `TICKET_CHGPROP` || Modify [wiki:TracTickets ticket] properties (priority, assignment, keywords, etc.) except description field ||
  || `TICKET_MODIFY` || Includes both `TICKET_APPEND` and `TICKET_CHGPROP`, and in addition allows resolving [wiki:TracTickets tickets] ||
  || `TICKET_ADMIN` || All `TICKET_*` permissions, plus the deletion of ticket attachments and modification of the description field ||

  === Roadmap ===

  || `MILESTONE_VIEW` || View a milestone ||
  || `MILESTONE_CREATE` || Create a new milestone ||
  || `MILESTONE_MODIFY` || Modify existing milestones ||
  || `MILESTONE_DELETE` || Delete milestones ||
  || `MILESTONE_ADMIN` || All `MILESTONE_*` permissions ||
  || `ROADMAP_VIEW` || View the [wiki:TracRoadmap roadmap] page ||

  === Reports ===

  || `REPORT_VIEW` || View [wiki:TracReports reports] ||
  || `REPORT_SQL_VIEW` || View the underlying SQL query of a [wiki:TracReports report] ||
  || `REPORT_CREATE` || Create new [wiki:TracReports reports] ||
  || `REPORT_MODIFY` || Modify existing [wiki:TracReports reports] ||
  || `REPORT_DELETE` || Delete [wiki:TracReports reports] ||
  || `REPORT_ADMIN` || All `REPORT_*` permissions ||

  === Wiki System ===

  || `WIKI_VIEW` || View existing [wiki:TracWiki wiki] pages ||
  || `WIKI_CREATE` || Create new [wiki:TracWiki wiki] pages ||
  || `WIKI_MODIFY` || Change [wiki:TracWiki wiki] pages ||
  || `WIKI_DELETE` || Delete [wiki:TracWiki wiki] pages and attachments ||
  || `WIKI_ADMIN` || All `WIKI_*` permissions, plus the management of ''readonly'' pages. ||

  === Others ===

  || `TIMELINE_VIEW` || View the [wiki:TracTimeline timeline] page ||
  || `SEARCH_VIEW` || View and execute [wiki:TracSearch search] queries ||
  || `CONFIG_VIEW` || Enables additional pages on ''About Trac'' that show the current configuration or the list of installed plugins ||

  == Granting Privileges ==

  You grant privileges to users using [wiki:TracAdmin trac-admin]. The current set of privileges can be listed with the following command:
  {{{
    $ trac-admin /path/to/projenv permission list
  }}}

  This command will allow the user ''bob'' to delete reports:
  {{{
    $ trac-admin /path/to/projenv permission add bob REPORT_DELETE
  }}}

  The `permission add` command also accepts multiple privilege names:
  {{{
    $ trac-admin /path/to/projenv permission add bob REPORT_DELETE WIKI_CREATE
  }}}

  == Permission Groups ==

  Permissions can be grouped together to form roles such as ''developer'', ''admin'', etc.
  {{{
    $ trac-admin /path/to/projenv permission add developer WIKI_ADMIN
    $ trac-admin /path/to/projenv permission add developer REPORT_ADMIN
    $ trac-admin /path/to/projenv permission add developer TICKET_MODIFY
    $ trac-admin /path/to/projenv permission add bob developer
    $ trac-admin /path/to/projenv permission add john developer
  }}}

  Group membership can be checked by doing a {{{permission list}}} with no further arguments; the resulting output will include group memberships. Use lowercase for group names, as uppercase is reserved for permissions.

  == Removing Permissions ==

  Permissions can be removed using the 'remove' command. For example:

  This command will prevent the user ''bob'' from deleting reports:
  {{{
    $ trac-admin /path/to/projenv permission remove bob REPORT_DELETE
  }}}

  Just like `permission add`, this command accepts multiple privilege names.

  You can also remove all privileges for a specific user:
  {{{
    $ trac-admin /path/to/projenv permission remove bob *
  }}}

  Or one privilege for all users:
  {{{
    $ trac-admin /path/to/projenv permission remove * REPORT_ADMIN
  }}}

  == Default Permissions ==

  Granting privileges to the special user ''anonymous'' can be used to control what an anonymous user can do before they have logged in.

  In the same way, privileges granted to the special user ''authenticated'' will apply to any authenticated (logged in) user.

  ----
  See also: TracAdmin, TracGuide and [http://trac.edgewall.org/wiki/FineGrainedPermissions FineGrainedPermissions]


name: InterTrac
author: trac
ipnr: 127.0.0.1
text:
  = InterTrac Links  =

  Trac supports a convenient way to refer to resources of other Trac servers, from within the Wiki markup, since version 0.10.

  == Definitions ==

  An InterTrac link can be seen as a scoped TracLinks.
  It is used for referring to a Trac resource 
  (Wiki page, changeset, ticket, ...) located in another
  Trac environment.

  == List of Active InterTrac Prefixes ==

  [[InterTrac]]

  == Link Syntax ==

  Simply use the name of the other Trac environment as a prefix, 
  followed by a colon, ending with the resource located in the other environment.

  {{{
  <target_environment>:<TracLinks>
  }}}

  The other resource is specified using a regular TracLinks, of any flavor.

  That target environment name is either the real name of the 
  environment, or an alias for it. 
  The aliases are defined in `trac.ini` (see below).
  The prefix is case insensitive.

  For convenience, there's also some alternative short-hand form, 
  where one can use an alias as an immediate prefix 
  for the identifier of a ticket, changeset or report:
  (e.g. `#T234`, `[T1508]`, `[trac 1508]`, ...)

  == Examples ==

  {{{
  #!comment
   Besides the other environments run by the same server process
   (called ''sibling'' environments), which are automatically detected,
  Support for sibling environments has been disabled.
  See http://thread.gmane.org/gmane.comp.version-control.subversion.trac.devel/157
  }}}

  It is necessary to setup a configuration for the InterTrac facility.
  This configuration has to be done in the TracIni file, `[intertrac]` section.

  Example configuration:
  {{{
  ...
  [intertrac]
  # -- Example of setting up an alias:
  t = trac

  # -- Link to an external Trac:
  trac.title = Edgewall's Trac for Trac
  trac.url = http://projects.edgewall.com/trac
  trac.compat = false
  }}}

  The `.url` is mandatory and is used for locating the other Trac.
  This can be a relative URL in case that Trac environment is located 
  on the same server.

  The `.title` information will be used for providing an useful tooltip
  when moving the cursor over an InterTrac links.

  Finally, the `.compat` option can be used to activate or disable
  a ''compatbility'' mode:
   * If the targeted Trac is running a version below milestone:0.10 
     (r3526 to be precise), then it doesn't know how to dispatch an InterTrac 
     link, and it's up to the local Trac to prepare the correct link. 
     Not all links will work that way, but the most common do. 
     This is called the compatibility mode, and is `true` by default. 
   * If you know that the remote Trac knows how to dispatch InterTrac links, 
     you can explicitely disable this compatibility mode and then ''any'' 
     TracLinks can become an InterTrac link.

  Now, given the above configuration, one could create the following links:
   * to this InterTrac page:
     * `trac:wiki:InterTrac` trac:wiki:InterTrac
     * `t:wiki:InterTrac` t:wiki:InterTrac
     * Keys are case insensitive: `T:wiki:InterTrac` T:wiki:InterTrac
   * to the ticket #234:
     * `trac:ticket:234` trac:ticket:234
     * `trac:#234` trac:#234 
     * `#T234` #T234
   * to the changeset [1912]:
     * `trac:changeset:1912` trac:changeset:1912
     * `[T1912]` [T1912]
   * to the log range [3300:3330]: '''(Note: the following ones need `trac.compat=false`)'''
     * `trac:log:@3300:3330` trac:log:@3300:3330  
     * `[trac 3300:3330]` [trac 3300:3330] 

  The generic form `intertrac_prefix:module:id` is translated
  to the corresponding URL `<remote>/module/id`, shorthand links
  are specific to some modules (e.g. !#T234 is processed by the
  ticket module) and for the rest (`intertrac_prefix:something`),
  we rely on the TracSearch#quickjump facility of the remote Trac.

  ----
  === Discussion ===

  I think that the `trac` prefix could even be set as a default in the `[intertrac]` TracIni section. --CB

  ----
  See also: TracLinks, InterWiki


name: TracBrowser
author: trac
ipnr: 127.0.0.1
text:
  = The Trac Repository Browser =
  [[TracGuideToc]]

  The Trac repository browser can be used to browse directories 
  and specific revisions of files stored in the repository of the configured
  version control system.

  Directory entries are displayed in a list with sortable columns. The list 
  entries can be sorted by ''name'', ''size'' or ''age'' by clicking on the column
  headers. The sort order can be reversed by clicking on a given column
  header again.

  The browser can be used to navigate through the directory structure 
  by clicking on the directory names. Clicking on a file name will show
  the contents of the file. Clicking on the revision number of a file or
  directory will take you to the TracRevisionLog for that file.
  Note that there's also a ''Revision Log'' navigation link that will do
  the same for the path currently being examined.

  It's also possible to browse directories or files as they were in history,
  at any given repository revision. The default behavior is to display the
  latest revision but another revision number can easily be selected using
  the ''View revision'' input field at the top of the page.

  ----
  See also: TracGuide, TracChangeset, FineGrainedPermissions


name: WikiStart
author: sandeeps
ipnr: 209.132.188.26
comment: WikiStart -- Initial page
text:
  = Pothana2000 and Vemana2000 Fonts Project =

  == Summary ==
  The project goal is to improve the existing offerings of the fonts - making sure the Pothana2000 and Vemana2000 fonts deliver the best available quality and functions to the community.

  == History ==
  Pothana2000 and Vemana2000 fonts are created by Dr. Tirumala Krishna Desikacharylu (or K.Desikachary for short) and is licensed under GNU GPL V.2 or later (with Font Exception).[[BR]]
  For more information please refer http://www.kavya-nandanam.com/.

  Now, Fedora Project and its contributors would take the responsibility to consolidate the further efforts towards improvement of the Pothana2000 and Vemana2000 fonts.

  == Installation in Fedora distribution ==

  === Fedora ===
  Fedora users can install rpms for Pothana2000 and Vemana2000 fonts with the following command:

  For Fedora 10 and above
  {{{
  yum install pothana2000-fonts vemana2000-fonts
  }}}

  == Mailing list ==
  Should you have any problem, please drop a mail to pothana_vemana-devel@lists.fedorahosted.org list

  === GIT ===
  FAS Group: gitpothana_vemana

  Commit access: 
  {{{
  git: ssh://git.fedorahosted.org/git/pothana_vemana.git
  }}}

  Anonymous access: git: git://git.fedorahosted.org/git/pothana_vemana.git

  === Tar Balls ===

  Note: [[BR]]

  1) Pothana2000 and Vemana2000fonts will be released in 2 tar ball for each languages. Following are the recent taraballs.

  '''Current releases: '''

  ||||'''Source'''||'''Size'''||     ||'''Binary'''||'''Size'''||
  ||Telugu||'''[https://fedorahosted.org/releases/~/pothana/N-V.tar.gz N-V.tar.gz]'''||XYZK||     ||'''[https://fedorahosted.org/releases/~/pothana/N-V.tar.gz N-V.tar.gz]'''||XYZK||

  Pothana2000 and Vemana2000 fonts are included in Fedora. [[BR]]

  == Contributors information ==
   * Please submit bugs and patches into [https://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Fedora&component=pothana2000-fonts pothana2000-fonts bugzilla component] and [https://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Fedora&component=vemana2000-fonts vemana2000-fonts bugzilla component].
   * Presently Open bugs against [https://bugzilla.redhat.com/buglist.cgi?query_format=advanced&bug_status=NEW&bug_status=ASSIGNED&component=pothana2000-fonts&component=pothana2000-fonts&product=Fedora&classification=Fedora pothana2000-fonts and vemana2000-fonts]
   * Edit fonts using [http://fontforge.sf.net fontforge]. It is available in Fedora repositories.  

  {{{ 
   yum install fontforge 

  }}}

   * Reuse glyphs if possible - this is the best way to keep the same look and feel, and it saves efforts.
   * All changes should be under the agreement of [http://fedoraproject.org/wiki/Legal/Licenses/CLA CLA]. Please read at [http://fedoraproject.org/wiki/Infrastructure/AccountSystem/CLAHowTo Howto] if you need help on signing the CLA.


name: WikiStart
author: sandeeps
ipnr: 209.132.188.26
text:
  = Pothana2000 and Vemana2000 Fonts Project =

  == Summary ==
  The project goal is to improve the existing offerings of the fonts - making sure the Pothana2000 and Vemana2000 fonts deliver the best available quality and functions to the community.

  == History ==
  Pothana2000 and Vemana2000 fonts are created by Dr. Tirumala Krishna Desikacharylu (or K.Desikachary for short) and is licensed under GNU GPL V.2 or later (with Font Exception).[[BR]]
  For more information please refer http://www.kavya-nandanam.com/.

  Now, Fedora Project and its contributors would take the responsibility to consolidate the further efforts towards improvement of the Pothana2000 and Vemana2000 fonts.

  == Installation in Fedora distribution ==

  === Fedora ===
  Fedora users can install rpms for Pothana2000 and Vemana2000 fonts with the following command:

  For Fedora 10 and above
  {{{
  yum install pothana2000-fonts vemana2000-fonts
  }}}

  == Mailing list ==
  Should you have any problem, please drop a mail to pothana_vemana-devel@lists.fedorahosted.org list

  === GIT ===
  FAS Group: gitpothana_vemana

  Commit access: 
  {{{
  git: ssh://git.fedorahosted.org/git/pothana_vemana.git
  }}}

  Anonymous access: git: git://git.fedorahosted.org/git/pothana_vemana.git

  === Tar Balls ===

  Note: [[BR]]

  1) Pothana2000 and Vemana2000fonts will be released in 2 tar ball for each languages. Following are the recent taraballs.

  '''Current releases: '''

  ||||'''Source'''||'''Size'''||     ||'''Binary'''||'''Size'''||
  ||pothana2000-fonts||'''[https://fedorahosted.org/releases/p/o/pothana_vemana/pothana2000-fonts-1.3.2-3.tar.gz pothana2000-fonts-1.3.2-3.tar.gz]'''||352K||     ||'''[https://fedorahosted.org/releases/p/o/pothana_vemana/pothana2000-fonts-ttf-1.3.2-3.tar.gz pothana2000-fonts-ttf-1.3.2-3.tar.gz]'''||116K||
  ||vemana2000-fonts||'''[https://fedorahosted.org/releases/p/o/pothana_vemana/vemana2000-fonts-1.1.2-3.tar.gz vemana2000-fonts-1.1.2-3.tar.gz]'''||356K||     ||'''[https://fedorahosted.org/releases/p/o/pothana_vemana/vemana2000-fonts-ttf-1.1.2-3.tar.gz vemana2000-fonts-ttf-1.1.2-3.tar.gz]'''||116K||

  Pothana2000 and Vemana2000 fonts are included in Fedora. [[BR]]

  == Contributors information ==
   * Please submit bugs and patches into [https://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Fedora&component=pothana2000-fonts pothana2000-fonts bugzilla component] and [https://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Fedora&component=vemana2000-fonts vemana2000-fonts bugzilla component].
   * Presently Open bugs against [https://bugzilla.redhat.com/buglist.cgi?query_format=advanced&bug_status=NEW&bug_status=ASSIGNED&component=pothana2000-fonts&component=pothana2000-fonts&product=Fedora&classification=Fedora pothana2000-fonts and vemana2000-fonts]
   * Edit fonts using [http://fontforge.sf.net fontforge]. It is available in Fedora repositories.  

  {{{ 
   yum install fontforge 

  }}}

   * Reuse glyphs if possible - this is the best way to keep the same look and feel, and it saves efforts.
   * All changes should be under the agreement of [http://fedoraproject.org/wiki/Legal/Licenses/CLA CLA]. Please read at [http://fedoraproject.org/wiki/Infrastructure/AccountSystem/CLAHowTo Howto] if you need help on signing the CLA.

comment:
  vemana2000-fonts-ttf-1.1.2-3.tar.gz -- Source and Size added for pothana2000-fonts and vemana2000-fonts


name: WikiStart
author: sandeeps
ipnr: 209.132.188.26
comment: WikiStart -- minor change
text:
  = Pothana2000 and Vemana2000 Fonts Project =

  == Summary ==
  The project goal is to improve the existing offerings of the fonts - making sure the Pothana2000 and Vemana2000 fonts deliver the best available quality and functions to the community.

  == History ==
  Pothana2000 and Vemana2000 fonts are created by Dr. Tirumala Krishna Desikacharylu (or K.Desikachary for short) and is licensed under GNU GPL V.2 or later (with Font Exception).[[BR]]
  For more information please refer http://www.kavya-nandanam.com/.

  Now, Fedora Project and its contributors would take the responsibility to consolidate the further efforts towards improvement of the Pothana2000 and Vemana2000 fonts.

  == Installation in Fedora distribution ==

  === Fedora ===
  Fedora users can install rpms for Pothana2000 and Vemana2000 fonts with the following command:

  For Fedora 10 and above
  {{{
  yum install pothana2000-fonts vemana2000-fonts
  }}}

  == Mailing list ==
  Should you face any problem, please drop a mail to pothana_vemana-devel@lists.fedorahosted.org list

  === GIT ===
  FAS Group: gitpothana_vemana

  Commit access: 
  {{{
  git: ssh://git.fedorahosted.org/git/pothana_vemana.git
  }}}

  Anonymous access: git: git://git.fedorahosted.org/git/pothana_vemana.git

  === Tar Balls ===

  Note: [[BR]]

  1) Pothana2000 and Vemana2000fonts will be released in 2 tarballs. Following are the recent tarballs.

  '''Current releases: '''

  ||||'''Source'''||'''Size'''||     ||'''Binary'''||'''Size'''||
  ||pothana2000-fonts||'''[https://fedorahosted.org/releases/p/o/pothana_vemana/pothana2000-fonts-1.3.2-3.tar.gz pothana2000-fonts-1.3.2-3.tar.gz]'''||352K||     ||'''[https://fedorahosted.org/releases/p/o/pothana_vemana/pothana2000-fonts-ttf-1.3.2-3.tar.gz pothana2000-fonts-ttf-1.3.2-3.tar.gz]'''||116K||
  ||vemana2000-fonts||'''[https://fedorahosted.org/releases/p/o/pothana_vemana/vemana2000-fonts-1.1.2-3.tar.gz vemana2000-fonts-1.1.2-3.tar.gz]'''||356K||     ||'''[https://fedorahosted.org/releases/p/o/pothana_vemana/vemana2000-fonts-ttf-1.1.2-3.tar.gz vemana2000-fonts-ttf-1.1.2-3.tar.gz]'''||116K||

  Pothana2000 and Vemana2000 fonts are included in Fedora. [[BR]]

  == Contributors information ==
   * Please submit bugs and patches into [https://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Fedora&component=pothana2000-fonts pothana2000-fonts bugzilla component] and [https://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Fedora&component=vemana2000-fonts vemana2000-fonts bugzilla component].
   * Presently Open bugs against [https://bugzilla.redhat.com/buglist.cgi?query_format=advanced&bug_status=NEW&bug_status=ASSIGNED&component=pothana2000-fonts&component=pothana2000-fonts&product=Fedora&classification=Fedora pothana2000-fonts and vemana2000-fonts]
   * Edit fonts using [http://fontforge.sf.net fontforge]. It is available in Fedora repositories.  

  {{{ 
   yum install fontforge 

  }}}

   * Reuse glyphs if possible - this is the best way to keep the same look and feel, and it saves efforts.
   * All changes should be under the agreement of [http://fedoraproject.org/wiki/Legal/Licenses/CLA CLA]. Please read at [http://fedoraproject.org/wiki/Infrastructure/AccountSystem/CLAHowTo Howto] if you need help on signing the CLA.


name: WikiStart
author: sandeeps
ipnr: 209.132.188.26
comment: pothana2000-fonts-1.3.2-3.tar.gz renamed to pothana2000-fonts-1.3.3.tar.gz
text:
  = Pothana2000 and Vemana2000 Fonts Project =

  == Summary ==
  The project goal is to improve the existing offerings of the fonts - making sure the Pothana2000 and Vemana2000 fonts deliver the best available quality and functions to the community.

  == History ==
  Pothana2000 and Vemana2000 fonts are created by Dr. Tirumala Krishna Desikacharylu (or K.Desikachary for short) and is licensed under GNU GPL V.2 or later (with Font Exception).[[BR]]
  For more information please refer http://www.kavya-nandanam.com/.

  Now, Fedora Project and its contributors would take the responsibility to consolidate the further efforts towards improvement of the Pothana2000 and Vemana2000 fonts.

  == Installation in Fedora distribution ==

  === Fedora ===
  Fedora users can install rpms for Pothana2000 and Vemana2000 fonts with the following command:

  For Fedora 10 and above
  {{{
  yum install pothana2000-fonts vemana2000-fonts
  }}}

  == Mailing list ==
  Should you face any problem, please drop a mail to pothana_vemana-devel@lists.fedorahosted.org list

  === GIT ===
  FAS Group: gitpothana_vemana

  Commit access: 
  {{{
  git: ssh://git.fedorahosted.org/git/pothana_vemana.git
  }}}

  Anonymous access: git: git://git.fedorahosted.org/git/pothana_vemana.git

  === Tar Balls ===

  Note: [[BR]]

  1) Pothana2000 and Vemana2000fonts will be released in 2 tarballs. Following are the recent tarballs.

  '''Current releases: '''

  ||||'''Source'''||'''Size'''||     ||'''Binary'''||'''Size'''||
  ||pothana2000-fonts||'''[https://fedorahosted.org/releases/p/o/pothana_vemana/pothana2000-fonts-1.3.3.tar.gz pothana2000-fonts-1.3.2-3.tar.gz]'''||352K||     ||'''[https://fedorahosted.org/releases/p/o/pothana_vemana/pothana2000-fonts-ttf-1.3.2-3.tar.gz pothana2000-fonts-ttf-1.3.2-3.tar.gz]'''||116K||
  ||vemana2000-fonts||'''[https://fedorahosted.org/releases/p/o/pothana_vemana/vemana2000-fonts-1.1.2-3.tar.gz vemana2000-fonts-1.1.2-3.tar.gz]'''||356K||     ||'''[https://fedorahosted.org/releases/p/o/pothana_vemana/vemana2000-fonts-ttf-1.1.2-3.tar.gz vemana2000-fonts-ttf-1.1.2-3.tar.gz]'''||116K||

  Pothana2000 and Vemana2000 fonts are included in Fedora. [[BR]]

  == Contributors information ==
   * Please submit bugs and patches into [https://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Fedora&component=pothana2000-fonts pothana2000-fonts bugzilla component] and [https://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Fedora&component=vemana2000-fonts vemana2000-fonts bugzilla component].
   * Presently Open bugs against [https://bugzilla.redhat.com/buglist.cgi?query_format=advanced&bug_status=NEW&bug_status=ASSIGNED&component=pothana2000-fonts&component=pothana2000-fonts&product=Fedora&classification=Fedora pothana2000-fonts and vemana2000-fonts]
   * Edit fonts using [http://fontforge.sf.net fontforge]. It is available in Fedora repositories.  

  {{{ 
   yum install fontforge 

  }}}

   * Reuse glyphs if possible - this is the best way to keep the same look and feel, and it saves efforts.
   * All changes should be under the agreement of [http://fedoraproject.org/wiki/Legal/Licenses/CLA CLA]. Please read at [http://fedoraproject.org/wiki/Infrastructure/AccountSystem/CLAHowTo Howto] if you need help on signing the CLA.


name: WikiStart
author: sandeeps
ipnr: 209.132.188.26
comment: WikiStart -- minor change
text:
  = Pothana2000 and Vemana2000 Fonts Project =

  == Summary ==
  The project goal is to improve the existing offerings of the fonts - making sure the Pothana2000 and Vemana2000 fonts deliver the best available quality and functions to the community.

  == History ==
  Pothana2000 and Vemana2000 fonts are created by Dr. Tirumala Krishna Desikacharylu (or K.Desikachary for short) and is licensed under GNU GPL V.2 or later (with Font Exception).[[BR]]
  For more information please refer http://www.kavya-nandanam.com/.

  Now, Fedora Project and its contributors would take the responsibility to consolidate the further efforts towards improvement of the Pothana2000 and Vemana2000 fonts.

  == Installation in Fedora distribution ==

  === Fedora ===
  Fedora users can install rpms for Pothana2000 and Vemana2000 fonts with the following command:

  For Fedora 10 and above
  {{{
  yum install pothana2000-fonts vemana2000-fonts
  }}}

  == Mailing list ==
  Should you face any problem, please drop a mail to pothana_vemana-devel@lists.fedorahosted.org list

  === GIT ===
  FAS Group: gitpothana_vemana

  Commit access: 
  {{{
  git: ssh://git.fedorahosted.org/git/pothana_vemana.git
  }}}

  Anonymous access: git: git://git.fedorahosted.org/git/pothana_vemana.git

  === Tar Balls ===

  Note: [[BR]]

  1) Pothana2000 and Vemana2000fonts will be released in 2 tarballs. Following are the recent tarballs.

  '''Current releases: '''

  ||||'''Source'''||'''Size'''||     ||'''Binary'''||'''Size'''||
  ||pothana2000-fonts||'''[https://fedorahosted.org/releases/p/o/pothana_vemana/pothana2000-fonts-1.3.3.tar.gz pothana2000-fonts-1.3.3.tar.gz]'''||352K||     ||'''[https://fedorahosted.org/releases/p/o/pothana_vemana/pothana2000-fonts-ttf-1.3.2-3.tar.gz pothana2000-fonts-ttf-1.3.2-3.tar.gz]'''||116K||
  ||vemana2000-fonts||'''[https://fedorahosted.org/releases/p/o/pothana_vemana/vemana2000-fonts-1.1.2-3.tar.gz vemana2000-fonts-1.1.2-3.tar.gz]'''||356K||     ||'''[https://fedorahosted.org/releases/p/o/pothana_vemana/vemana2000-fonts-ttf-1.1.2-3.tar.gz vemana2000-fonts-ttf-1.1.2-3.tar.gz]'''||116K||

  Pothana2000 and Vemana2000 fonts are included in Fedora. [[BR]]

  == Contributors information ==
   * Please submit bugs and patches into [https://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Fedora&component=pothana2000-fonts pothana2000-fonts bugzilla component] and [https://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Fedora&component=vemana2000-fonts vemana2000-fonts bugzilla component].
   * Presently Open bugs against [https://bugzilla.redhat.com/buglist.cgi?query_format=advanced&bug_status=NEW&bug_status=ASSIGNED&component=pothana2000-fonts&component=pothana2000-fonts&product=Fedora&classification=Fedora pothana2000-fonts and vemana2000-fonts]
   * Edit fonts using [http://fontforge.sf.net fontforge]. It is available in Fedora repositories.  

  {{{ 
   yum install fontforge 

  }}}

   * Reuse glyphs if possible - this is the best way to keep the same look and feel, and it saves efforts.
   * All changes should be under the agreement of [http://fedoraproject.org/wiki/Legal/Licenses/CLA CLA]. Please read at [http://fedoraproject.org/wiki/Infrastructure/AccountSystem/CLAHowTo Howto] if you need help on signing the CLA.


name: WikiStart
author: sandeeps
ipnr: 209.132.188.26
comment: changed to vemana2000-fonts-1.1.3.tar.gz from vemana2000-fonts-1.1.2-3.tar.gz
text:
  = Pothana2000 and Vemana2000 Fonts Project =

  == Summary ==
  The project goal is to improve the existing offerings of the fonts - making sure the Pothana2000 and Vemana2000 fonts deliver the best available quality and functions to the community.

  == History ==
  Pothana2000 and Vemana2000 fonts are created by Dr. Tirumala Krishna Desikacharylu (or K.Desikachary for short) and is licensed under GNU GPL V.2 or later (with Font Exception).[[BR]]
  For more information please refer http://www.kavya-nandanam.com/.

  Now, Fedora Project and its contributors would take the responsibility to consolidate the further efforts towards improvement of the Pothana2000 and Vemana2000 fonts.

  == Installation in Fedora distribution ==

  === Fedora ===
  Fedora users can install rpms for Pothana2000 and Vemana2000 fonts with the following command:

  For Fedora 10 and above
  {{{
  yum install pothana2000-fonts vemana2000-fonts
  }}}

  == Mailing list ==
  Should you face any problem, please drop a mail to pothana_vemana-devel@lists.fedorahosted.org list

  === GIT ===
  FAS Group: gitpothana_vemana

  Commit access: 
  {{{
  git: ssh://git.fedorahosted.org/git/pothana_vemana.git
  }}}

  Anonymous access: git: git://git.fedorahosted.org/git/pothana_vemana.git

  === Tar Balls ===

  Note: [[BR]]

  1) Pothana2000 and Vemana2000fonts will be released in 2 tarballs. Following are the recent tarballs.

  '''Current releases: '''

  ||||'''Source'''||'''Size'''||     ||'''Binary'''||'''Size'''||
  ||pothana2000-fonts||'''[https://fedorahosted.org/releases/p/o/pothana_vemana/pothana2000-fonts-1.3.3.tar.gz pothana2000-fonts-1.3.3.tar.gz]'''||352K||     ||'''[https://fedorahosted.org/releases/p/o/pothana_vemana/pothana2000-fonts-ttf-1.3.2-3.tar.gz pothana2000-fonts-ttf-1.3.2-3.tar.gz]'''||116K||
  ||vemana2000-fonts||'''[https://fedorahosted.org/releases/p/o/pothana_vemana/vemana2000-fonts-1.1.3.tar.gz vemana2000-fonts-1.1.3.tar.gz]'''||356K||     ||'''[https://fedorahosted.org/releases/p/o/pothana_vemana/vemana2000-fonts-ttf-1.1.2-3.tar.gz vemana2000-fonts-ttf-1.1.2-3.tar.gz]'''||116K||

  Pothana2000 and Vemana2000 fonts are included in Fedora. [[BR]]

  == Contributors information ==
   * Please submit bugs and patches into [https://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Fedora&component=pothana2000-fonts pothana2000-fonts bugzilla component] and [https://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Fedora&component=vemana2000-fonts vemana2000-fonts bugzilla component].
   * Presently Open bugs against [https://bugzilla.redhat.com/buglist.cgi?query_format=advanced&bug_status=NEW&bug_status=ASSIGNED&component=pothana2000-fonts&component=pothana2000-fonts&product=Fedora&classification=Fedora pothana2000-fonts and vemana2000-fonts]
   * Edit fonts using [http://fontforge.sf.net fontforge]. It is available in Fedora repositories.  

  {{{ 
   yum install fontforge 

  }}}

   * Reuse glyphs if possible - this is the best way to keep the same look and feel, and it saves efforts.
   * All changes should be under the agreement of [http://fedoraproject.org/wiki/Legal/Licenses/CLA CLA]. Please read at [http://fedoraproject.org/wiki/Infrastructure/AccountSystem/CLAHowTo Howto] if you need help on signing the CLA.


name: WikiStart
author: sandeeps
ipnr: 209.132.188.26
comment: WikiStart: download url for Binary under Current releases changed
text:
  = Pothana2000 and Vemana2000 Fonts Project =

  == Summary ==
  The project goal is to improve the existing offerings of the fonts - making sure the Pothana2000 and Vemana2000 fonts deliver the best available quality and functions to the community.

  == History ==
  Pothana2000 and Vemana2000 fonts are created by Dr. Tirumala Krishna Desikacharylu (or K.Desikachary for short) and is licensed under GNU GPL V.2 or later (with Font Exception).[[BR]]
  For more information please refer http://www.kavya-nandanam.com/.

  Now, Fedora Project and its contributors would take the responsibility to consolidate the further efforts towards improvement of the Pothana2000 and Vemana2000 fonts.

  == Installation in Fedora distribution ==

  === Fedora ===
  Fedora users can install rpms for Pothana2000 and Vemana2000 fonts with the following command:

  For Fedora 10 and above
  {{{
  yum install pothana2000-fonts vemana2000-fonts
  }}}

  == Mailing list ==
  Should you face any problem, please drop a mail to pothana_vemana-devel@lists.fedorahosted.org list

  === GIT ===
  FAS Group: gitpothana_vemana

  Commit access: 
  {{{
  git: ssh://git.fedorahosted.org/git/pothana_vemana.git
  }}}

  Anonymous access: git: git://git.fedorahosted.org/git/pothana_vemana.git

  === Tar Balls ===

  Note: [[BR]]

  1) Pothana2000 and Vemana2000fonts will be released in 2 tarballs. Following are the recent tarballs.

  '''Current releases: '''

  ||||'''Source'''||'''Size'''||     ||'''Binary'''||'''Size'''||
  ||pothana2000-fonts||'''[https://fedorahosted.org/releases/p/o/pothana_vemana/pothana2000-fonts-1.3.3.tar.gz pothana2000-fonts-1.3.3.tar.gz]'''||352K||     ||'''[https://fedorahosted.org/releases/p/o/pothana_vemana/pothana2000-fonts-ttf-1.3.3.tar.gz pothana2000-fonts-ttf-1.3.3.tar.gz]'''||116K||
  ||vemana2000-fonts||'''[https://fedorahosted.org/releases/p/o/pothana_vemana/vemana2000-fonts-1.1.3.tar.gz vemana2000-fonts-1.1.3.tar.gz]'''||356K||     ||'''[https://fedorahosted.org/releases/p/o/pothana_vemana/vemana2000-fonts-ttf-1.1.3.tar.gz vemana2000-fonts-ttf-1.1.3.tar.gz]'''||116K||

  Pothana2000 and Vemana2000 fonts are included in Fedora. [[BR]]

  == Contributors information ==
   * Please submit bugs and patches into [https://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Fedora&component=pothana2000-fonts pothana2000-fonts bugzilla component] and [https://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Fedora&component=vemana2000-fonts vemana2000-fonts bugzilla component].
   * Presently Open bugs against [https://bugzilla.redhat.com/buglist.cgi?query_format=advanced&bug_status=NEW&bug_status=ASSIGNED&component=pothana2000-fonts&component=pothana2000-fonts&product=Fedora&classification=Fedora pothana2000-fonts and vemana2000-fonts]
   * Edit fonts using [http://fontforge.sf.net fontforge]. It is available in Fedora repositories.  

  {{{ 
   yum install fontforge 

  }}}

   * Reuse glyphs if possible - this is the best way to keep the same look and feel, and it saves efforts.
   * All changes should be under the agreement of [http://fedoraproject.org/wiki/Legal/Licenses/CLA CLA]. Please read at [http://fedoraproject.org/wiki/Infrastructure/AccountSystem/CLAHowTo Howto] if you need help on signing the CLA.


name: WikiStart
author: sandeeps
ipnr: 209.132.188.26
comment: minor change in Contributors information
text:
  = Pothana2000 and Vemana2000 Fonts Project =

  == Summary ==
  The project goal is to improve the existing offerings of the fonts - making sure the Pothana2000 and Vemana2000 fonts deliver the best available quality and functions to the community.

  == History ==
  Pothana2000 and Vemana2000 fonts are created by Dr. Tirumala Krishna Desikacharylu (or K.Desikachary for short) and is licensed under GNU GPL V.2 or later (with Font Exception).[[BR]]
  For more information please refer http://www.kavya-nandanam.com/.

  Now, Fedora Project and its contributors would take the responsibility to consolidate the further efforts towards improvement of the Pothana2000 and Vemana2000 fonts.

  == Installation in Fedora distribution ==

  === Fedora ===
  Fedora users can install rpms for Pothana2000 and Vemana2000 fonts with the following command:

  For Fedora 10 and above
  {{{
  yum install pothana2000-fonts vemana2000-fonts
  }}}

  == Mailing list ==
  Should you face any problem, please drop a mail to pothana_vemana-devel@lists.fedorahosted.org list

  === GIT ===
  FAS Group: gitpothana_vemana

  Commit access: 
  {{{
  git: ssh://git.fedorahosted.org/git/pothana_vemana.git
  }}}

  Anonymous access: git: git://git.fedorahosted.org/git/pothana_vemana.git

  === Tar Balls ===

  Note: [[BR]]

  1) Pothana2000 and Vemana2000fonts will be released in 2 tarballs. Following are the recent tarballs.

  '''Current releases: '''

  ||||'''Source'''||'''Size'''||     ||'''Binary'''||'''Size'''||
  ||pothana2000-fonts||'''[https://fedorahosted.org/releases/p/o/pothana_vemana/pothana2000-fonts-1.3.3.tar.gz pothana2000-fonts-1.3.3.tar.gz]'''||352K||     ||'''[https://fedorahosted.org/releases/p/o/pothana_vemana/pothana2000-fonts-ttf-1.3.3.tar.gz pothana2000-fonts-ttf-1.3.3.tar.gz]'''||116K||
  ||vemana2000-fonts||'''[https://fedorahosted.org/releases/p/o/pothana_vemana/vemana2000-fonts-1.1.3.tar.gz vemana2000-fonts-1.1.3.tar.gz]'''||356K||     ||'''[https://fedorahosted.org/releases/p/o/pothana_vemana/vemana2000-fonts-ttf-1.1.3.tar.gz vemana2000-fonts-ttf-1.1.3.tar.gz]'''||116K||

  Pothana2000 and Vemana2000 fonts are included in Fedora. [[BR]]

  == Contributors information ==
   * Please submit bugs and patches into [https://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Fedora&component=pothana2000-fonts pothana2000-fonts bugzilla component] and [https://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Fedora&component=vemana2000-fonts vemana2000-fonts bugzilla component].
   * Presently Open bugs against [https://bugzilla.redhat.com/buglist.cgi?query_format=advanced&bug_status=NEW&bug_status=ASSIGNED&component=pothana2000-fonts&component=vemana2000-fonts&product=Fedora&classification=Fedora pothana2000-fonts and vemana2000-fonts]
   * Edit fonts using [http://fontforge.sf.net fontforge]. It is available in Fedora repositories.  

  {{{ 
   yum install fontforge 

  }}}

   * Reuse glyphs if possible - this is the best way to keep the same look and feel, and it saves efforts.
   * All changes should be under the agreement of [http://fedoraproject.org/wiki/Legal/Licenses/CLA CLA]. Please read at [http://fedoraproject.org/wiki/Infrastructure/AccountSystem/CLAHowTo Howto] if you need help on signing the CLA.


name: TracInterfaceCustomization
author: trac
ipnr: 127.0.0.1
text:
  = Customizing the Trac Interface =
  [[TracGuideToc]]

  == Introduction ==
  This page is meant to give users suggestions on how they can customize the look of Trac.  Topics on this page cover editing the HTML templates and CSS files, but not the program code itself.  The topics are intended to show users how they can modify the look of Trac to meet their specific needs.  Suggestions for changes to Trac's interface applicable to all users should be filed as tickets, not listed on this page.

  == Project Logo and Icon ==
  The easiest parts of the Trac interface to customize are the logo and the site icon.  Both of these can be configured with settings in [wiki:TracIni trac.ini].

  The logo or icon image should be put in a folder named "htdocs" in your project's environment folder.  (''Note: in projects created with a Trac version prior to 0.9 you will need to create this folder'')

   ''Note: you can actually put the logo and icon anywhere on your server (as long as it's accessible through the web server), and use their absolute or server-relative URLs in the configuration.''

  Now configure the appropriate section of your [wiki:TracIni trac.ini]:

  === Logo ===
  Change the `src` setting to `site/` followed by the name of your image file.  The `width` and `height` settings should be modified to match your image's dimensions (the Trac chrome handler uses "`site/`" for files within the project directory `htdocs` and "`common/`" for the common ones).

  {{{
  [header_logo]
  src = site/my_logo.gif
  alt = My Project
  width = 300
  height = 100
  }}}

  === Icon ===
  Icons should be a 16x16 image in `.gif` or `.ico` format.  Change the `icon` setting to `site/` followed by the name of your icon file.  Icons will typically be displayed by your web browser next to the site's URL and in the `Bookmarks` menu.

  {{{
  [project]
  icon = site/my_icon.ico
  }}}

  Note though that this icon is ignored by Internet Explorer, which only accepts a file named ``favicon.ico`` at the root of the host. To make the project icon work in both IE and other browsers, you can store the icon in the document root of the host, and reference it from ``trac.ini`` as follows:

  {{{
  [project]
  icon = /favicon.ico
  }}}

  Should your browser have issues with your favicon showing up in the address bar, you may put a "?" (less the quotation marks) after your favicon file extension. 

  {{{
  [project]
  icon = /favicon.ico?
  }}}

  == Custom Navigation Entries ==
  The new [mainnav] and [metanav] can now be used to customize the text and link used for the navigation items, or even to disable them (but not for adding new ones).

  In the following example, we rename the link to the Wiki start "Home", and hide the "Help/Guide". We also make the "View Tickets" entry link to a specific report .
  {{{
  [mainnav]
  wiki.label = Home
  tickets.href = /report/24

  [metanav]
  help = disabled
  }}}

  See also TracNavigation for a more detailed explanation of the mainnav and metanav terms.

  == Site Appearance == #SiteAppearance

  Trac is using [http://genshi.edgewall.org Genshi] as the templating engine. Documentation is yet to be written, in the meantime the following tip should work.

  Say you want to add a link to a custom stylesheet, and then your own
  header and footer. Save the following content as 'site.html' inside your projects templates directory (each Trac project can have their own site.html), e.g. {{{/path/to/env/templates/site.html}}}:

  {{{
  #!xml
  <html xmlns="http://www.w3.org/1999/xhtml"
        xmlns:py="http://genshi.edgewall.org/"
        py:strip="">

    <!--! Add site-specific style sheet -->
    <head py:match="head" py:attrs="select('@*')">
      ${select('*|comment()|text()')}
      <link rel="stylesheet" type="text/css"
            href="${href.chrome('site/style.css')}" />
    </head>

    <body py:match="body" py:attrs="select('@*')">
      <!--! Add site-specific header -->
      <div id="siteheader">
        <!--! Place your header content here... -->
      </div>

      ${select('*|text()')}

      <!--! Add site-specific footer -->
      <div id="sitefooter">
        <!--! Place your footer content here... -->
      </div>
    </body>
  </html>
  }}}

  Those who are familiar with XSLT may notice that Genshi templates bear some similarities. However, there are some Trac specific features - for example '''${href.chrome('site/style.css')}''' attribute references template placed into environment's ''htdocs/''  In a similar fashion '''${chrome.htdocs_location}''' is used to specify common ''htdocs/'' directory from Trac installation.

  `site.html` is one file to contain all your modifications. It usually works by the py:match (element or attribute), and it allows you to modify the page as it renders - the matches hook onto specific sections depending on what it tries to find
  and modify them.
  See [http://groups.google.com/group/trac-users/browse_thread/thread/70487fb2c406c937/ this thread] for a detailed explanation of the above example `site.html`.
  A site.html can contain any number of such py:match sections for whatever you need to modify. This is all [http://genshi.edgewall.org/ Genshi], so the docs on the exact syntax can be found there.


  Example snippet of adding introduction text to the new ticket form (hide when preview):

  {{{
  #!xml
  <form py:match="div[@id='content' and @class='ticket']/form" py:attrs="select('@*')">
    <py:if test="req.environ['PATH_INFO'] == '/newticket' and (not 'preview' in req.args)">
      <p>Please make sure to search for existing tickets before reporting a new one!</p>
    </py:if>
    ${select('*')} 
  </form>
  }}}

  This example illustrates a technique of using '''`req.environ['PATH_INFO']`''' to limit scope of changes to one view only. For instance, to make changes in site.html only for timeline and avoid modifying other sections - use  ''`req.environ['PATH_INFO'] == '/timeline'`'' condition in <py:if> test.

  More examples snippets for `site.html` can be found at [trac:wiki:CookBook/SiteHtml CookBook/SiteHtml].

  Example snippets for `style.css` can be found at [trac:wiki:CookBook/SiteStyleCss CookBook/SiteStyleCss].

  If the environment is upgraded from 0.10 and a `site_newticket.cs` file already exists, it can actually be loaded by using a workaround - providing it contains no ClearSilver processing. In addition, as only one element can be imported, the content needs some sort of wrapper such as a `<div>` block or other similar parent container. The XInclude namespace must be specified to allow includes, but that can be moved to document root along with the others:
  {{{
  #!xml
  <form py:match="div[@id='content' and @class='ticket']/form" py:attrs="select('@*')"
          xmlns:xi="http://www.w3.org/2001/XInclude">
    <py:if test="req.environ['PATH_INFO'] == '/newticket' and (not 'preview' in req.args)"> 
      <xi:include href="site_newticket.cs"><xi:fallback /></xi:include>
    </py:if>
    ${select('*')} 
  </form>
  }}}

  Also note that the `site.html` (despite its name) can be put in a common templates directory - see the `[inherit] templates_dir` option. This could provide easier maintainence (and a migration path from 0.10 for larger installations) as one new global `site.html` file can be made to include any existing header, footer and newticket snippets.

  == Project List == #ProjectList

  You can use a custom Genshi template to display the list of projects if you are using Trac with multiple projects.  

  The following is the basic template used by Trac to display a list of links to the projects.  For projects that could not be loaded it displays an error message. You can use this as a starting point for your own index template.

  {{{
  #!text/html
  <!DOCTYPE html
      PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml"
        xmlns:py="http://genshi.edgewall.org/"
        xmlns:xi="http://www.w3.org/2001/XInclude">
    <head>
      <title>Available Projects</title>
    </head>
    <body>
      <h1>Available Projects</h1>
      <ul>
        <li py:for="project in projects" py:choose="">
          <a py:when="project.href" href="$project.href"
             title="$project.description">$project.name</a>
          <py:otherwise>
            <small>$project.name: <em>Error</em> <br /> ($project.description)</small>
          </py:otherwise>
        </li>
      </ul>
    </body>
  </html>
  }}}

  Once you've created your custom template you will need to configure the webserver to tell Trac where the template is located (pls verify ... not yet changed to 0.11):

  For [wiki:TracModWSGI mod_wsgi]:
  {{{
  os.environ['TRAC_ENV_INDEX_TEMPLATE'] = '/path/to/template'
  }}}

  For [wiki:TracFastCgi FastCGI]:
  {{{
  FastCgiConfig -initial-env TRAC_ENV_PARENT_DIR=/parent/dir/of/projects \
                -initial-env TRAC_ENV_INDEX_TEMPLATE=/path/to/template
  }}}

  For [wiki:TracModPython mod_python]:
  {{{
  PythonOption TracEnvParentDir /parent/dir/of/projects
  PythonOption TracEnvIndexTemplate /path/to/template
  }}}

  For [wiki:TracCgi CGI]:
  {{{
  SetEnv TRAC_ENV_INDEX_TEMPLATE /path/to/template
  }}}

  For [wiki:TracStandalone], you'll need to set up the `TRAC_ENV_INDEX_TEMPLATE` environment variable in the shell used to launch tracd:
   - Unix
     {{{
  #!sh
  $ export TRAC_ENV_INDEX_TEMPLATE=/path/to/template
     }}}
   - Windows
     {{{
  #!sh
  $ set TRAC_ENV_INDEX_TEMPLATE=/path/to/template
     }}}

  == Project Templates ==

  The appearance of each individual Trac environment (that is, instance of a project) can be customized independently of other projects, even those hosted by the same server. The recommended way is to use a `site.html` template (see [#SiteAppearance]) whenever possible. Using `site.html` means changes are made to the original templates as they are rendered, and you should not normally need to redo modifications whenever Trac is upgraded. If you do make a copy of `theme.html` or any other Trac template, you need to migrate your modifiations to the newer version - if not, new Trac features or bug fixes may not work as expected.

  With that word of caution, any Trac template may be copied and customized. The default Trac templates are located inside the installed Trac egg (`/usr/lib/pythonVERSION/site-packages/Trac-VERSION.egg/trac/templates, .../trac/ticket/templates, .../trac/wiki/templates, ++`). The [#ProjectList] template file is called `index.html`, while the template responsible for main layout is called `theme.html`. Page assets such as images and CSS style sheets are located in the egg's `trac/htdocs` directory.

  However, do not edit templates or site resources inside the Trac egg - installing Trac again can completely delete your modifications. Instead use one of two alternatives:
   * For a modification to one project only, copy the template to project `templates` directory.
   * For a modification shared by several projects, copy the template to a shared location and have each project point to this location using the `[inherit] templates_dir =` trac.ini option.

  Trac resolves requests for a template by first looking inside the project, then in any inherited templates location, and finally inside the Trac egg.

  Trac caches templates in memory by default to improve performance. To apply a template you need to restart the server.
  ----
  See also TracGuide, TracIni


name: TracSearch
author: trac
ipnr: 127.0.0.1
text:
  = Using Search =

  Trac has a built-in search engine to allow finding occurrences of keywords and substrings in wiki pages, tickets and changeset properties (author, revision and log message).

  Using the Trac search facility is straightforward and its interface should be familiar to most users.

  Apart from the [search: Search module], you will also find a small search field above the navigation bar at all time. It provides convenient access to the search module from all pages.

  == "Quickjump" searches ==
  For quick access to various project resources, the quick-search field at the top of every page can be used to enter a [TracLinks wiki link], which will take you directly to the resource identified by that link.

  For example:

   * ![42] -- Opens change set 42
   * !#42 -- Opens ticket number 42
   * !{1} -- Opens report 1
   * /trunk -- Opens the browser for the `trunk` directory

  == Advanced ==

  === Disabling Quickjumps ===
  To disable the quickjump feature for a search keyword - for example when searching for occurences of the literal word !TracGuide - begin the query with an exclamation mark (!).

  === Search Links ===
  From the Wiki, it is possible to link to a specific search, using
  `search:` links:
   * `search:?q=crash` will search for the string "crash" 
   * `search:?q=trac+link&wiki=on` will search for "trac" and "link" 
     in wiki pages only

  ----
  See also: TracGuide, TracLinks, TracQuery


name: TracImport
author: trac
ipnr: 127.0.0.1
text:
  = Importing ticket data =

  == Bugzilla ==

  Ticket data can be imported from Bugzilla using the [http://trac.edgewall.org/browser/trunk/contrib/bugzilla2trac.py bugzilla2trac.py] script, available in the contrib/ directory of the Trac distribution.

  {{{
  $ bugzilla2trac.py
  bugzilla2trac - Imports a bug database from Bugzilla into Trac.

  Usage: bugzilla2trac.py [options]

  Available Options:
    --db <MySQL dbname>              - Bugzilla's database
    --tracenv /path/to/trac/env      - full path to Trac db environment
    -h | --host <MySQL hostname>     - Bugzilla's DNS host name
    -u | --user <MySQL username>     - effective Bugzilla's database user
    -p | --passwd <MySQL password>   - Bugzilla's user password
    -c | --clean                     - remove current Trac tickets before importing
    --help | help                    - this help info

  Additional configuration options can be defined directly in the script.
  }}}

  Currently, the following data is imported from Bugzilla:

    * bugs
    * bug activity (field changes)
    * bug attachments
    * user names and passwords (put into a htpasswd file)

  The script provides a number of features to ease the conversion, such as:

    * PRODUCT_KEYWORDS:  Trac doesn't have the concept of products, so the script provides the ability to attach a ticket keyword instead.

    * IGNORE_COMMENTS:  Don't import Bugzilla comments that match a certain regexp.

    * STATUS_KEYWORDS:  Attach ticket keywords for the Bugzilla statuses not available in Trac.  By default, the 'VERIFIED' and 'RELEASED' Bugzilla statuses are translated into Trac keywords.

  For more details on the available options, see the configuration section at the top of the script.

  == Sourceforge ==

  Ticket data can be imported from Sourceforge using the [http://trac.edgewall.org/browser/trunk/contrib/sourceforge2trac.py sourceforge2trac.py] script, available in the contrib/ directory of the Trac distribution.

  See #Trac3521 for an updated sourceforge2trac script.

  == Mantis ==

  The mantis2trac script now lives at http://trac-hacks.org/wiki/MantisImportScript. You can always get the latest version from http://trac-hacks.org/changeset/latest/mantisimportscript?old_path=/&filename=mantisimportscript&format=zip

  Mantis bugs can be imported using the attached script.

  Currently, the following data is imported from Mantis:
    * bugs
    * bug comments
    * bug activity (field changes)
    * attachments (as long as the files live in the mantis db, not on the filesystem) 

  If you use the script, please read the NOTES section (at the top of the file) and make sure you adjust the config parameters for your environment.

  mantis2trac.py has the same parameters as the bugzilla2trac.py script:
  {{{
  mantis2trac - Imports a bug database from Mantis into Trac.

  Usage: mantis2trac.py [options] 

  Available Options:
    --db <MySQL dbname>              - Mantis database
    --tracenv /path/to/trac/env      - Full path to Trac db environment
    -h | --host <MySQL hostname>     - Mantis DNS host name
    -u | --user <MySQL username>     - Effective Mantis database user
    -p | --passwd <MySQL password>   - Mantis database user password
    -c | --clean                     - Remove current Trac tickets before importing
    --help | help                    - This help info

  Additional configuration options can be defined directly in the script.
  }}} 

  == Jira ==

  The [http://trac-hacks.org/wiki/JiraToTracIntegration Jira2Trac plugin] provides you with tools to import Atlassian Jira backup files into Trac.

  The plugin consists of a Python 3.1 commandline tool that:

   - Parses the Jira backup XML file
   - Sends the imported Jira data and attachments to Trac using the [http://trac-hacks.org/wiki/XmlRpcPlugin XmlRpcPlugin]
   - Generates a htpasswd file containing the imported Jira users and their SHA-512 base64 encoded passwords

  == Other ==

  Since trac uses a SQL database to store the data, you can import from other systems by examining the database tables. Just go into [http://www.sqlite.org/sqlite.html sqlite] command line to look at the tables and import into them from your application.

  === Using a comma delimited file - CSV ===
  See [http://trac.edgewall.org/attachment/wiki/TracSynchronize/csv2trac.2.py] for details.  This approach is particularly useful if one needs to enter a large number of tickets by hand. (note that the ticket type type field, (task etc...) is also needed for this script to work with more recent Trac releases)
  Comments on script: The script has an error on line 168, ('Ticket' needs to be 'ticket').  Also, the listed values for severity and priority are swapped. 

  === Using an Excel (.xls) or comma delimited file (.csv) ===
  This plugin http://trac-hacks.org/wiki/TicketImportPlugin lets you import into Trac a series of tickets from a CSV file or (if the xlrd library is installed) from an Excel file.

  You can also use it to modify tickets in batch, by saving a report as CSV, editing the CSV file, and re-importing the tickets.

  This plugin is very useful when starting a new project: you can import a list of requirements that may have come from meeting notes, list of features, other ticketing systems... It's also great to review the tickets off-line, or to do massive changes to tickets.

  Based on the ticket id (or, if no id exists, on the summary) in the imported file, tickets are either created or updated. 


name: TracRepositoryAdmin
author: trac
ipnr: 127.0.0.1
text:
  = Repository Administration =
  [[PageOutline(2-3)]]

  == Quick start == #QuickStart

   * Manage repositories in the "Repository" admin panel, with `trac-admin` or in the `[repositories]` section of [wiki:TracIni#repositories-section trac.ini].
   * Set up a call to `trac-admin $ENV changeset added $REPO $REV` in the post-commit hook of each repository. Additionally, add a call to `trac-admin $ENV changeset modified $REPO $REV` in the post-revprop-change hook of repositories allowing revision property changes.
   * Set the `[trac] repository_sync_per_request` option to an empty value to disable per-request syncing.


  == Specifying repositories == #Repositories
  Starting with 0.12, Trac can handle more than one repository per environment. The pre-0.12 way of specifying the repository with the `repository_dir` and `repository_type` options in the `[trac]` section of [wiki:TracIni trac.ini] is still supported, but two new mechanisms allow including additional repositories into an environment.

  It is also possible to define aliases of repositories, that act as "pointers" to real repositories. This can be useful when renaming a repository, to avoid breaking all the links to the old name.

  A number of attributes can be associated with each repository, which define the repository's location, type, name and how it is displayed in the source browser. The following attributes are supported:

  ||='''Attribute''' =||='''Description''' =||
  ||`alias` ||\
  ||A repository having an `alias` attribute is an alias to a real repository. All TracLinks referencing the alias resolve to the aliased repository. Note that multiple indirection is not supported, so an alias must always point to a real repository. The `alias` and `dir` attributes are mutually exclusive. ||
  ||`description` ||\
  ||The text specified in the `description` attribute is displayed below the top-level entry for the repository in the source browser. It supports WikiFormatting. ||
  ||`dir` ||\
  ||The `dir` attribute specifies the location of the repository in the filesystem. It corresponds to the value previously specified in the option `[trac] repository_dir`. The `alias` and `dir` attributes are mutually exclusive. ||
  ||`hidden` ||When set to `true`, the repository is hidden from the repository index page in the source browser. Browsing the repository is still possible, and links referencing the repository remain valid. ||
  ||`name` ||The `name` attribute specifies the leading path element to the repository. ||
  ||`type` ||The `type` attribute sets the type of version control system used by the repository. Trac supports Subversion out-of-the-box, and plugins add support for many other systems. If `type` is not specified, it defaults to the value of the `[trac] repository_type` option. ||
  ||`url` ||The `url` attribute specifies the root URL to be used for checking out from the repository. When specified, a "Repository URL" link is added to the context navigation links in the source browser, that can be copied into the tool used for creating the working copy. ||

  The `name` attribute and one of `alias` or `dir` are mandatory. All others are optional.

  After adding a repository, the cache for that repository must be re-synchronized once with the `trac-admin $ENV repository resync` command.

   `repository resync <repos>`::
     Re-synchronize Trac with a repository.


  === In `trac.ini` === #ReposTracIni
  Repositories and repository attributes can be specified in the `[repositories]` section of [wiki:TracIni#repositories-section trac.ini]. Every attribute consists of a key structured as `{name}.{attribute}` and the corresponding value separated with an equal sign (`=`). The name of the default repository is empty.

  The main advantage of specifying repositories in `trac.ini` is that they can be inherited from a global configuration (see the [wiki:TracIni#GlobalConfiguration global configuration] section of TracIni). One drawback is that, due to limitations in the `ConfigParser` class used to parse `trac.ini`, the repository name is always all-lowercase.

  The following example defines two Subversion repositories named `project` and `lib`, and a hidden alias to `project` as the default repository. This is a typical use case where a Trac environment previously had a single repository (the `project` repository), and was converted to multiple repositories. The alias ensures that links predating the change continue to resolve to the `project` repository.
  {{{
  #!ini
  [repositories]
  project.dir = /var/repos/project
  project.description = This is the ''main'' project repository.
  project.type = svn
  project.url = http://example.com/svn/project
  lib.dir = /var/repos/lib
  lib.description = This is the secondary library code.
  lib.type = svn
  lib.url = http://example.com/svn/lib
  .alias = project
  .hidden = true
  }}}
  Note that `name.alias = target` makes `name` an alias for the `target` repo, not the other way around.

  === In the database === #ReposDatabase
  Repositories can also be specified in the database, using either the "Repositories" admin panel under "Version Control", or the `trac-admin $ENV repository` commands.

  The admin panel shows the list of all repositories defined in the Trac environment. It allows adding repositories and aliases, editing repository attributes and removing repositories. Note that repositories defined in `trac.ini` are displayed but cannot be edited.

  The following [wiki:TracAdmin trac-admin] commands can be used to perform repository operations from the command line.

   `repository add <repos> <dir> [type]`::
     Add a repository `<repos>` located at `<dir>`, and optionally specify its type.

   `repository alias <name> <target>`::
     Create an alias `<name>` for the repository `<target>`.

   `repository remove <repos>`::
     Remove the repository `<repos>`.

   `repository set <repos> <key> <value>`::
     Set the attribute `<key>` to `<value>` for the repository `<repos>`. 

  Note that the default repository has an empty name, so it will likely need to be quoted when running `trac-admin` from a shell. Alternatively, the name "`(default)`" can be used instead, for example when running `trac-admin` in interactive mode.


  == Repository synchronization == #Synchronization
  Prior to 0.12, Trac synchronized its cache with the repository on every HTTP request. This approach is not very efficient and not practical anymore with multiple repositories. For this reason, explicit synchronization through post-commit hooks was added. 

  There is also new functionality in the form of a repository listener extension point ''(IRepositoryChangeListener)'' that is triggered by the post-commit hook when a changeset is added or modified, and can be used by plugins to perform actions on commit.

  === Mercurial Repositories ===
  Please note that at the time of writing, no initial resynchronization or any hooks are necessary for Mercurial repositories - see [trac:#9485] for more information. 

  === Explicit synchronization === #ExplicitSync
  This is the preferred method of repository synchronization. It requires setting the `[trac]  repository_sync_per_request` option in [wiki:TracIni#trac-section trac.ini] to an empty value, and adding a call to `trac-admin` in the post-commit hook of each repository. Additionally, if a repository allows changing revision metadata, a call to `trac-admin` must be added to the post-revprop-change hook as well.

   `changeset added <repos> <rev> [...]`::
     Notify Trac that one or more changesets have been added to a repository.

   `changeset modified <repos> <rev> [...]`::
     Notify Trac that metadata on one or more changesets in a repository has been modified.

  The `<repos>` argument can be either a repository name (use "`(default)`" for the default repository) or the path to the repository.

  Note that you may have to set the environment variable PYTHON_EGG_CACHE to the same value as was used for the web server configuration before calling trac-admin, if you changed it from its default location. See [wiki:TracPlugins Trac Plugins] for more information.

  The following examples are complete post-commit and post-revprop-change scripts for Subversion. They should be edited for the specific environment, marked executable (where applicable) and placed in the `hooks` directory of each repository. On Unix (`post-commit`):
  {{{#!sh
  #!/bin/sh
  export PYTHON_EGG_CACHE="/path/to/dir"
  /usr/bin/trac-admin /path/to/env changeset added "$1" "$2"
  }}}
  On Windows (`post-commit.cmd`):
  {{{#!application/x-dos-batch
  @C:\Python26\Scripts\trac-admin.exe C:\path\to\env changeset added "%1" "%2"
  }}}

  The post-revprop-change hook for Subversion is very similar. On Unix (`post-revprop-change`):
  {{{#!sh
  #!/bin/sh
  export PYTHON_EGG_CACHE="/path/to/dir"
  /usr/bin/trac-admin /path/to/env changeset modified "$1" "$2"
  }}}
  On Windows (`post-revprop-change.cmd`):
  {{{#!application/x-dos-batch
  @C:\Python26\Scripts\trac-admin.exe C:\path\to\env changeset modified "%1" "%2"
  }}}

  The Unix variants above assume that the user running the Subversion commit has write access to the Trac environment, which is the case in the standard configuration where both the repository and Trac are served by the web server. If you access the repository through another means, for example `svn+ssh://`, you may have to run `trac-admin` with different privileges, for example by using `sudo`.

  Note that calling `trac-admin` in your Subversion hooks can slow down the commit and log editing operations on the client side. You might want to use the [trac:source:trunk/contrib/trac-svn-hook contrib/trac-svn-hook] script which starts `trac-admin` in an asynchronous way. The script also comes with a number of safety checks and usage advices which should make it easier to set up and test your hooks. There's no equivalent `trac-svn-hook.bat` for Windows yet, but the script can be run by Cygwin's bash.

  See the [http://svnbook.red-bean.com/en/1.5/svn.reposadmin.create.html#svn.reposadmin.create.hooks section about hooks] in the Subversion book for more information. Other repository types will require different hook setups. Please see the plugin documentation for specific instructions.

  === Per-request synchronization === #PerRequestSync
  If the post-commit hooks are not available, the environment can be set up for per-request synchronization. In that case, the `[trac] repository_sync_per_request` option in [wiki:TracIni#trac-section trac.ini] must be set to a comma-separated list of repository names to be synchronized.

  Note that in this case, the changeset listener extension point is not called, and therefore plugins using it will not work correctly.


  == Migration from a single-repository setup (Subversion) == #Migration
  The following procedure illustrates a typical migration from a Subversion single-repository setup to multiple repositories.

   1. Remove the default repository specification from the `[trac] repository_dir` option.
   1. Add the "main" repository as a named repository.
   1. Re-synchronize the main repository.
   1. Set up post-commit and post-revprop-change hooks on the main repository, and set `[trac] repository_sync_per_request` to an empty value.
   1. Add a hidden alias to the main repository as the default repository. This ensures that all links predating the migration still resolve to the main repository.
   1. Repeat steps 2, 3 and 4 to add other (named) repositories as needed.

  == Migration from a single-repository setup (Mercurial) == #MigrationMercurial
  The following procedure illustrates a typical migration from a Mercurial single-repository setup to multiple repositories. Please note that at the time of writing, no initial resynchronization or any hooks are necessary for Mercurial repositories - see #9485 for more information.

   1. Upgrade to the latest version of the TracMercurial plugin.
   1. Remove the default repository specification from the `[trac] repository_dir` option.
   1. Add the "main" repository as a named repository.
   1. Add a hidden alias to the main repository as the default repository. This ensures that all links predating the migration still resolve to the main repository.
   1. Repeat step 3 to add other (named) repositories as needed.

  == Troubleshooting ==

  === My trac-post-commit-hook doesn't work anymore === #trac-post-commit-hook

  You must now use the optional components from `tracopt.ticket.commit_updater.*`, which you can activate through the Plugins panel in the Administrative part of the web interface, or by directly modifying the [TracIni#components-section "[components]"] section in the trac.ini. Be sure to use [#ExplicitSync explicit synchronization] as explained above.


name: TracRevisionLog
author: trac
ipnr: 127.0.0.1
text:
  = Viewing Revision Logs =
  [[TracGuideToc]]

  When you browse the repository, it's always possible to query the 
  ''Revision Log'' view corresponding to the path you're currently seeing.
  This will display a list of the most recent changesets in which the 
  current path or any other path below it has been modified.

  == The Revision Log Form ==

  It's possible to set the revision at which the revision log should
  start, using the ''View log starting at'' field. An empty value
  or a value of ''head'' is taken to be the newest changeset. 

  It's also possible to specify the revision at which the log should
  stop, using the ''back to'' field. By default, it's left empty, 
  which means the revision log will stop as soon as 100 revisions have 
  been listed.

  Also, there are three modes of operation of the revision log.

  By default, the revision log ''stops on copy'', which means that 
  whenever an ''Add'', ''Copy'' or ''Rename'' operation is detected, 
  no older revision will be shown. That's very convenient when working
  with branches, as one only sees the history corresponding to what
  has been done on the branch.

  It's also possible to indicate that one wants to see what happened
  before a ''Copy'' or ''Rename'' change, by selecting the 
  ''Follow copies'' mode. This will cross all copies or renames changes.
  Each time the name of the path changes, there will be an additional
  indentation level. That way, the changes on the different paths
  are easily grouped together visually.

  It's even possible to go past an ''Add'' change, in order to see 
  if there has been a ''Delete'' change on that path, before 
  that ''Add''. This mode corresponds to the mode called 
  ''Show only adds, moves and deletes''. 
  While quite useful at times, be aware that this operation is quite 
  resource intensive.

  Finally, there's also a checkbox ''Show full log messages'',
  which controls whether the full content of the commit log message
  should be displayed for each change, or only a shortened version of it.

  == The Revision Log Information ==

  For each revision log entry, there are 7 columns:
   1. The first column contains a pair of radio buttons and should be used 
      for selecting the ''old'' and the ''new'' revisions that will be 
      used for [wiki:TracRevisionLog#viewingtheactualchanges viewing the actual changes].
   1. A color code (similar to the one used for the
      [wiki:TracChangeset#ChangesetHeader changesets]) indicating kind of change.
      Clicking on this column refreshes the revision log so that it restarts
      with this change.
   1. The '''Revision''' number, displayed as `@xyz`.
      This is a link to the TracBrowser, using the displayed revision as the base line.
   1. The '''Changeset''' number, displayed as `[xyz]`.
      This is a link to the TracChangeset view.
   1. The '''Date''' at which the change was made.
      The date is displayed as the time elapsed from the date of the revision. The time
      elapsed is displayed as the number of hours, days, weeks, months, or years.
   1. The '''Author''' of the change.
   1. The '''Log Message''', which contains either the truncated or full commit 
      log message, depending on the value of the ''Show full log messages'' 
      checkbox in the form above.
      

  == Inspecting Changes Between Revisions ==

  The ''View changes...'' buttons (placed above and below the list
  of changes, on the left side) will show the set of differences
  corresponding to the aggregated changes starting from the ''old''
  revision (first radio-button) to the ''new'' revision (second
  radio-button), in the TracChangeset view.

  Note that the ''old'' revision doesn't need to be actually 
  ''older'' than the ''new'' revision: it simply gives a base
  for the diff. It's therefore entirely possible to easily 
  generate a ''reverse diff'', for reverting what has been done
  in the given range of revisions.

  Finally, if the two revisions are identical, the corresponding
  changeset will be shown (same effect as clicking on the !ChangeSet number).

  == Alternative Formats ==

  === The !ChangeLog Text ===

  At the bottom of the page, there's a ''!ChangeLog'' link
  that will show the range of revisions as currently shown,
  but as a simple text, matching the usual conventions for
  !ChangeLog files.

  === RSS Support ===

  The revision log also provides a RSS feed to monitor the changes.
  To subscribe to a RSS feed for a file or directory, open its
  revision log in the browser and click the orange 'XML' icon at the bottom
  of the page. For more information on RSS support in Trac, see TracRss.

  ----
  See also: TracBrowser, TracChangeset, TracGuide


name: TracRss
author: trac
ipnr: 127.0.0.1
text:
  = Using RSS with Trac =
  [[TracGuideToc]]

  Several of the Trac modules support content syndication using the RSS (Really Simple Syndication) XML format.
  Using the RSS subscription feature in Trac, you can easily monitor progress of the project, a set of issues or even changes to a single file.

  Trac supports RSS feeds in:

   * TracTimeline —  Use the RSS feed to '''subscribe to project events'''.[[br]]Monitor overall project progress in your favorite RSS reader.
   * TracTickets, TracReports, and TracQuery — Allows syndication of report and ticket query results.[[br]]Be notified about important and relevant issue tickets.
   * TracBrowser and TracRevisionLog — Syndication of file changes.[[br]]Stay up to date with changes to a specific file or directory.

  == How to access RSS data ==
  Anywhere in Trac where RSS is available, you should find a small orange '''XML''' icon, typically placed at the bottom of the page. Clicking the icon will access the RSS feed for that specific resource.

  '''Note:''' Different modules provide different data in their RSS feeds. Usually, the syndicated information corresponds to the current view. For example, if you click the RSS link on a report page, the feed will be based on that report. It might be explained by thinking of the RSS feeds as an ''alternate view of the data currently displayed''.

  == Links ==
   * ''Specifications:''
     * http://blogs.law.harvard.edu/tech/rss — RSS 2.0 Specification

   * ''Multi-platform RSS readers:''
     * http://www.rssowl.org/ — Open source, Eclipse-based, RSS reader for Linux, Mac and Windows systems that supports https and authenticated feeds.

   * ''Linux/BSD/*n*x systems:''
     * http://pim.kde.org/users.php — [http://kde.org KDE] RSS Reader for Linux/BSD/*n*x systems
     * http://liferea.sourceforge.net/ — Open source GTK2 RSS Reader for Linux
     * http://akregator.sourceforge.net/ — Open source KDE RSS Reader (part of KDE-PIM)

   * ''Mac OS X systems:''
     * http://ranchero.com/netnewswire/ — An excellent RSS reader for Mac OS X (has both free and pay versions)
     * http://www.utsire.com/shrook/ — An RSS reader for Max OS X that supports https (even with self signed certificates) and authenticated feeds.
     * http://vienna-rss.sourceforge.net/ — Open source Feed Reader for Mac OS X with smart folders support
     * http://www.mesadynamics.com/Tickershock.html — Non-intrusive "news ticker" style RSS reader for Mac OS X

   * ''Windows systems:''
     * http://www.rssreader.com/ — Free and powerful RSS Reader for Windows
     * http://www.sharpreader.net/ — A free RSS Reader written in .NET for Windows

   * ''Firefox:''
     * http://www.mozilla.org/products/firefox/ — Mozilla Firefox supports [http://www.mozilla.org/products/firefox/live-bookmarks.html live bookmarks] using RSS
     * http://sage.mozdev.org — Sage RSS and Atom feed aggregator for Mozilla Firefox
     * http://www.wizzrss.com/Welcome.php — WizzRSS Feed Reader for Firefox

  ----
  See also: TracGuide, TracTimeline, TracReports, TracBrowser


name: TracLogging
author: trac
ipnr: 127.0.0.1
text:
  = Trac Logging =
  [[TracGuideToc]]

  Trac supports logging of system messages using the standard [http://docs.python.org/lib/module-logging.html logging module] that comes with Python.

  Logging is configured in the `[logging]` section in [wiki:TracIni#logging-section trac.ini].

  == Supported Logging Methods ==

  The log method is set using the `log_type` option in [wiki:TracIni#logging-section trac.ini], which takes any of the following values:

   '''none'':: Suppress all log messages.
   '''file''':: Log messages to a file, specified with the `log_file` option in [wiki:TracIni#logging-section trac.ini]. Relative paths in `log_file` are resolved relative to the `log` directory of the environment.
   '''stderr''':: Output all log entries to console ([wiki:TracStandalone tracd] only).
   '''syslog''':: (UNIX) Send all log messages to the local syslogd via named pipe `/dev/log`. By default, syslog will write them to the file /var/log/messages.
   '''eventlog''':: (Windows) Use the system's NT Event Log for Trac logging.

  == Log Levels ==

  The verbosity level of logged messages can be set using the `log_level` option in [wiki:TracIni#logging-section trac.ini]. The log level defines the minimum level of urgency required for a message to be logged, and those levels are:

   '''CRITICAL''':: Log only the most critical (typically fatal) errors.
   '''ERROR''':: Log failures, bugs and errors. 
   '''WARN''':: Log warnings, non-interrupting events.
   '''INFO''':: Diagnostic information, log information about all processing.
   '''DEBUG''':: Trace messages, profiling, etc.

  Note that starting with Trac 0.11.5 you can in addition enable logging of SQL statements, at debug level. This is turned off by default, as it's very verbose (set `[trac] debug_sql = yes` in TracIni to activate).

  == Log Format ==

  Starting with Trac 0.10.4 (see [trac:#2844 #2844]), it is possible to set the output format for log entries. This can be done through the `log_format` option in [wiki:TracIni#logging-section trac.ini]. The format is a string which can contain any of the [http://docs.python.org/lib/node422.html Python logging Formatter variables]. Additonally, the following Trac-specific variables can be used:
   '''$(basename)s''':: The last path component of the current environment.
   '''$(path)s''':: The absolute path for the current environment.
   '''$(project)s''':: The originating project's name.

  Note that variables are identified using a dollar sign (`$(...)s`) instead of percent sign (`%(...)s`).

  The default format is:
  {{{
  log_format = Trac[$(module)s] $(levelname)s: $(message)s
  }}}

  In a multi-project environment where all logs are sent to the same place (e.g. `syslog`), it makes sense to add the project name. In this example we use `basename` since that can generally be used to identify a project:
  {{{
  log_format = Trac[$(basename)s:$(module)s] $(levelname)s: $(message)s
  }}}

  ----
  See also: TracIni, TracGuide, TracEnvironment


name: WikiPageNames
author: trac
ipnr: 127.0.0.1
text:
  = Wiki Page Names =
  [[TracGuideToc]]

  Wiki page names commonly use the CamelCase convention. Within wiki text, any word in CamelCase automatically becomes a hyperlink to the wiki page with that name.

  CamelCase page names must follow these rules:

   1. The name must consist of '''alphabetic characters only'''. No digits, spaces, punctuation, or underscores are allowed.
   2. A name must have at least two capital letters.
   3. The first character must be capitalized.
   4. Every capital letter must be followed by one or more lower-case letters. 
   5. The use of slash ( / ) is permitted in page names (possibly representing a hierarchy).

  If you want to create a wiki page that doesn't follow CamelCase rules you can use the following syntax:
  {{{
   * [wiki:Wiki_page], [wiki:ISO9000],
     and with a label: [wiki:ISO9000 ISO 9000 standard]
   * [wiki:"Space Matters"]
     and with a label: [wiki:"Space Matters" all about white space]
   * or simply: ["WikiPageName"]s
   * even better, the new [[WikiCreole link style]]
     and with a label: [[WikiCreole link style|WikiCreole style links]]
  }}}

  This will be rendered as:
   * [wiki:Wiki_page], [wiki:ISO9000],
     and with a label: [wiki:ISO9000 ISO 9000 standard]
   * [wiki:"Space Matters"] ''(that page name embeds space characters)''
     and with a label: [wiki:"Space Matters" all about white space]
   * or simply: ["WikiPageName"]s ''(old !MoinMoin's internal free links style)''
   * even better, the new [[WikiCreole link style]]
     and with a label: [[WikiCreole link style|WikiCreole style links]]
     ''(since 0.12, also now adopted by !MoinMoin)''


  Starting with Trac 0.11, it's also possible to link to a specific ''version'' of a Wiki page, as you would do for a specific version of a file, for example: WikiStart@1.

  You can also prevent a CamelCase name to be interpreted as a TracLinks, by quoting it. See TracLinks#EscapingLinks.

  As visible in the example above, one can also append an anchor to a Wiki page name, in order to link to a specific section within that page. The anchor can easily be seen by hovering the mouse over a section heading, then clicking on the [[html(&para;)]] sign that appears at its end. The anchor is usually generated automatically, but it's also possible to specify it explicitly: see WikiFormatting#using-explicit-id-in-heading.
  ----
  See also: WikiNewPage, WikiFormatting, TracWiki, TracLinks


name: WikiRestructuredText
author: trac
ipnr: 127.0.0.1
text:
  = reStructuredText Support in Trac =

  Trac supports using ''reStructuredText'' (RST) as an alternative to wiki markup in any context WikiFormatting is used.

  From the reStucturedText webpage:
   "''reStructuredText is an easy-to-read, what-you-see-is-what-you-get plaintext markup syntax and parser   system. It is useful for in-line program documentation (such as Python docstrings), for quickly creating  simple web pages, and for standalone documents. reStructuredText is designed for extensibility for  specific application domains. ''"

  If you want a file from your Subversion repository be displayed as reStructuredText in Trac's source browser, set `text/x-rst` as value for the Subversion property `svn:mime-type`. See [trac:source:/trunk/INSTALL this example].

  === Requirements ===
  Note that to activate RST support in Trac, the python docutils package must be installed. 
  If not already available on your operating system, you can download it at the [http://docutils.sourceforge.net/rst.html RST Website].

  Install docutils using `easy_install docutils`. Do not use the package manager of your OS (e.g. `apt-get install python-docutils`), because Trac will not find docutils then.

  === More information on RST ===

   * reStructuredText Website -- http://docutils.sourceforge.net/rst.html
   * RST Quick Reference -- http://docutils.sourceforge.net/docs/rst/quickref.html

  ----

  == Using RST in Trac ==
  To specify that a block of text should be parsed using RST, use the ''rst'' processor. 

  === TracLinks in reStructuredText ===

   * Trac provides a custom RST directive `trac::` to allow TracLinks from within RST text.

   Example:
   {{{
   {{{
   #!rst
   This is a reference to |a ticket|

   .. |a ticket| trac:: #42
   }}}
   }}}

   * Trac allows an even easier way of creating TracLinks in RST, using the custom `:trac:` role.

   Example:
   {{{
   {{{
   #!rst
   This is a reference to ticket `#12`:trac:

   To learn how to use Trac, see `TracGuide`:trac:
   }}}
   }}}

   For a complete example of all uses of the `:trac:` role, please see WikiRestructuredTextLinks. 


  === Syntax highlighting in reStructuredText ===

  There is a directive for doing TracSyntaxColoring in RST as well. The directive is called
  code-block

  Example

  {{{
  {{{
  #!rst

  .. code-block:: python

   class Test:

      def TestFunction(self):
          pass

  }}}
  }}}

  Will result in the below.

  {{{
  #!rst

  .. code-block:: python

   class Test:

      def TestFunction(self):
          pass

  }}}

  === Wiki Macros in reStructuredText ===

  For doing [WikiMacros Wiki Macros] in RST you use the same directive as for syntax highlighting i.e code-block.

  === Wiki Macro Example ===

  {{{
  {{{
  #!rst

  .. code-block:: RecentChanges

     Trac,3

  }}}
  }}}

  Will result in the below:

       [[RecentChanges(Trac,3)]]

  Or a more concise Wiki Macro like syntax is also available:

  {{{
  {{{
  #!rst

  :code-block:`RecentChanges:Trac,3`
  }}}
  }}}

  === Bigger RST Example ===
  The example below should be mostly self-explanatory:
  {{{
  #!html
  <pre class="wiki">{{{
  #!rst
  FooBar Header
  =============
  reStructuredText is **nice**. It has its own webpage_.

  A table:

  =====  =====  ======
     Inputs     Output
  ------------  ------
    A      B    A or B
  =====  =====  ======
  False  False  False
  True   False  True
  False  True   True
  True   True   True
  =====  =====  ======

  RST TracLinks
  -------------

  See also ticket `#42`:trac:.

  .. _webpage: http://docutils.sourceforge.net/rst.html
  }}}</pre>
  }}}


  Results in:
  {{{
  #!rst
  FooBar Header
  =============
  reStructuredText is **nice**. It has its own webpage_.

  A table:

  =====  =====  ======
     Inputs     Output
  ------------  ------
    A      B    A or B
  =====  =====  ======
  False  False  False
  True   False  True
  False  True   True
  True   True   True
  =====  =====  ======

  RST TracLinks
  -------------

  See also ticket `#42`:trac:.

  .. _webpage: http://docutils.sourceforge.net/rst.html
  }}}


  ----
  See also: WikiRestructuredTextLinks, WikiProcessors, WikiFormatting


name: TracPermissions
author: trac
ipnr: 127.0.0.1
text:
  = Trac Permissions =
  [[TracGuideToc]]

  Trac uses a simple, case sensitive, permission system to control what users can and can't access.

  Permission privileges are managed using the [TracAdmin trac-admin] tool or (new in version 0.11) the ''General / Permissions'' panel in the ''Admin'' tab of the web interface.

  In addition to the default permission policy described in this page, it is possible to activate additional permission policies by enabling plugins and listing them in the `[trac] permission_policies` configuration entry in the TracIni. See TracFineGrainedPermissions for more details.

  Non-authenticated users accessing the system are assigned the name "anonymous". Assign permissions to the "anonymous" user to set privileges for anonymous/guest users. The parts of Trac that a user does not have the privileges for will not be displayed in the navigation.
  In addition to these privileges, users can be granted additional individual rights in effect when authenticated and logged into the system. All logged in users belong to the virtual group "authenticated", which inherits permissions from "anonymous".

  == Graphical Admin Tab ==
  ''This feature is new in version 0.11.''

  To access this tab, a user must have `TRAC_ADMIN privileges`. This can be performed as follows (more on the trac-admin script below):
  {{{
    $ trac-admin /path/to/projenv permission add bob TRAC_ADMIN
  }}}

  Then, the user `bob` will be able to see the Admin tab, and can then access the permissions menu. This menu will allow you to perform all the following actions, but from the browser without requiring root access to the server (just the correct permissions for your user account).

   1. [[Image(htdocs:../common/guide/admin.png)]]
   1. [[Image(htdocs:../common/guide/admin-permissions.png)]]
   1. [[Image(htdocs:../common/guide/admin-permissions-TICKET_ADMIN.png)]]

  An easy way to quickly secure a new Trac install is to run the above command on the anonymous user, install the [http://trac-hacks.org/wiki/AccountManagerPlugin AccountManagerPlugin], create a new admin account graphically and then remove the TRAC_ADMIN permission from the anonymous user.

  == Available Privileges ==

  To enable all privileges for a user, use the `TRAC_ADMIN` permission. Having `TRAC_ADMIN` is like being `root` on a *NIX system: it will allow you to perform any operation.

  Otherwise, individual privileges can be assigned to users for the various different functional areas of Trac ('''note that the privilege names are case-sensitive'''):

  === Repository Browser ===

  || `BROWSER_VIEW` || View directory listings in the [wiki:TracBrowser repository browser] ||
  || `LOG_VIEW` || View revision logs of files and directories in the [wiki:TracBrowser repository browser] ||
  || `FILE_VIEW` || View files in the [wiki:TracBrowser repository browser] ||
  || `CHANGESET_VIEW` || View [wiki:TracChangeset repository check-ins] ||

  === Ticket System ===

  || `TICKET_VIEW` || View existing [wiki:TracTickets tickets] and perform [wiki:TracQuery ticket queries] ||
  || `TICKET_CREATE` || Create new [wiki:TracTickets tickets] ||
  || `TICKET_APPEND` || Add comments or attachments to [wiki:TracTickets tickets] ||
  || `TICKET_CHGPROP` || Modify [wiki:TracTickets ticket] properties (priority, assignment, keywords, etc.) with the following exceptions: edit description field, add/remove other users from cc field when logged in, and set email to pref ||
  || `TICKET_MODIFY` || Includes both `TICKET_APPEND` and `TICKET_CHGPROP`, and in addition allows resolving [wiki:TracTickets tickets]. Tickets can be assigned to users through a [TracTickets#Assign-toasDrop-DownList drop-down list] when the list of possible owners has been restricted. ||
  || `TICKET_EDIT_CC` || Full modify cc field ||
  || `TICKET_EDIT_DESCRIPTION` || Modify description field ||
  || `TICKET_EDIT_COMMENT` || Modify comments ||
  || `TICKET_ADMIN` || All `TICKET_*` permissions, plus the deletion of ticket attachments and modification of the reporter and description fields. It also allows managing ticket properties in the WebAdmin panel. ||

  Attention: the "view tickets" button appears with the `REPORT_VIEW` permission.

  === Roadmap ===

  || `MILESTONE_VIEW` || View milestones and assign tickets to milestones. ||
  || `MILESTONE_CREATE` || Create a new milestone ||
  || `MILESTONE_MODIFY` || Modify existing milestones ||
  || `MILESTONE_DELETE` || Delete milestones ||
  || `MILESTONE_ADMIN` || All `MILESTONE_*` permissions ||
  || `ROADMAP_VIEW` || View the [wiki:TracRoadmap roadmap] page, is not (yet) the same as MILESTONE_VIEW, see [trac:#4292 #4292] ||
  || `ROADMAP_ADMIN` || to be removed with [trac:#3022 #3022], replaced by MILESTONE_ADMIN ||

  === Reports ===

  || `REPORT_VIEW` || View [wiki:TracReports reports], i.e. the "view tickets" link. ||
  || `REPORT_SQL_VIEW` || View the underlying SQL query of a [wiki:TracReports report] ||
  || `REPORT_CREATE` || Create new [wiki:TracReports reports] ||
  || `REPORT_MODIFY` || Modify existing [wiki:TracReports reports] ||
  || `REPORT_DELETE` || Delete [wiki:TracReports reports] ||
  || `REPORT_ADMIN` || All `REPORT_*` permissions ||

  === Wiki System ===

  || `WIKI_VIEW` || View existing [wiki:TracWiki wiki] pages ||
  || `WIKI_CREATE` || Create new [wiki:TracWiki wiki] pages ||
  || `WIKI_MODIFY` || Change [wiki:TracWiki wiki] pages ||
  || `WIKI_RENAME` || Rename [wiki:TracWiki wiki] pages ||
  || `WIKI_DELETE` || Delete [wiki:TracWiki wiki] pages and attachments ||
  || `WIKI_ADMIN` || All `WIKI_*` permissions, plus the management of ''readonly'' pages. ||

  === Permissions ===

  || `PERMISSION_GRANT` || add/grant a permission ||
  || `PERMISSION_REVOKE` || remove/revoke a permission ||
  || `PERMISSION_ADMIN` || All `PERMISSION_*` permissions ||


  === Others ===

  || `TIMELINE_VIEW` || View the [wiki:TracTimeline timeline] page ||
  || `SEARCH_VIEW` || View and execute [wiki:TracSearch search] queries ||
  || `CONFIG_VIEW` || Enables additional pages on ''About Trac'' that show the current configuration or the list of installed plugins ||
  || `EMAIL_VIEW` || Shows email addresses even if [trac:wiki:0.11/TracIni trac show_email_addresses configuration option is false] ||

  == Granting Privileges ==

  You grant privileges to users using [wiki:TracAdmin trac-admin]. The current set of privileges can be listed with the following command:
  {{{
    $ trac-admin /path/to/projenv permission list
  }}}

  This command will allow the user ''bob'' to delete reports:
  {{{
    $ trac-admin /path/to/projenv permission add bob REPORT_DELETE
  }}}

  The `permission add` command also accepts multiple privilege names:
  {{{
    $ trac-admin /path/to/projenv permission add bob REPORT_DELETE WIKI_CREATE
  }}}

  Or add all privileges:
  {{{
    $ trac-admin /path/to/projenv permission add bob TRAC_ADMIN
  }}}

  == Permission Groups ==

  There are two built-in groups, "authenticated" and "anonymous".
  Any user who has not logged in is automatically in the "anonymous" group.
  Any user who has logged in is also in the "authenticated" group.
  The "authenticated" group inherits permissions from the "anonymous" group.
  For example, if the "anonymous" group has permission WIKI_MODIFY, 
  it is not necessary to add the WIKI_MODIFY permission to the "authenticated" group as well.

  Custom groups may be defined that inherit permissions from the two built-in groups.

  Permissions can be grouped together to form roles such as ''developer'', ''admin'', etc.
  {{{
    $ trac-admin /path/to/projenv permission add developer WIKI_ADMIN
    $ trac-admin /path/to/projenv permission add developer REPORT_ADMIN
    $ trac-admin /path/to/projenv permission add developer TICKET_MODIFY
    $ trac-admin /path/to/projenv permission add bob developer
    $ trac-admin /path/to/projenv permission add john developer
  }}}

  Group membership can be checked by doing a {{{permission list}}} with no further arguments; the resulting output will include group memberships. '''Use at least one lowercase character in group names, as all-uppercase names are reserved for permissions'''.

  == Adding a New Group and Permissions ==
  Permission groups can be created by assigning a user to a group you wish to create, then assign permissions to that group.

  The following will add ''bob'' to the new group called ''beta_testers'' and then will assign WIKI_ADMIN permissions to that group. (Thus, ''bob'' will inherit the WIKI_ADMIN permission)
  {{{ 
     $ trac-admin /path/to/projenv permission add bob beta_testers
     $ trac-admin /path/to/projenv permission add beta_testers WIKI_ADMIN

  }}}

  == Removing Permissions ==

  Permissions can be removed using the 'remove' command. For example:

  This command will prevent the user ''bob'' from deleting reports:
  {{{
    $ trac-admin /path/to/projenv permission remove bob REPORT_DELETE
  }}}

  Just like `permission add`, this command accepts multiple privilege names.

  You can also remove all privileges for a specific user:
  {{{
    $ trac-admin /path/to/projenv permission remove bob '*'
  }}}

  Or one privilege for all users:
  {{{
    $ trac-admin /path/to/projenv permission remove '*' REPORT_ADMIN
  }}}

  == Default Permissions ==

  By default on a new Trac installation, the `anonymous` user will have ''view'' access to everything in Trac, but will not be able to create or modify anything.
  On the other hand, the `authenticated` users will have the permissions to ''create and modify tickets and wiki pages''.

  '''anonymous'''
  {{{
   BROWSER_VIEW 
   CHANGESET_VIEW 
   FILE_VIEW 
   LOG_VIEW 
   MILESTONE_VIEW 
   REPORT_SQL_VIEW 
   REPORT_VIEW 
   ROADMAP_VIEW 
   SEARCH_VIEW 
   TICKET_VIEW 
   TIMELINE_VIEW
   WIKI_VIEW
  }}}

  '''authenticated'''
  {{{
   TICKET_CREATE 
   TICKET_MODIFY 
   WIKI_CREATE 
   WIKI_MODIFY  
  }}}
  ----
  See also: TracAdmin, TracGuide and TracFineGrainedPermissions


name: TracInstall
author: trac
ipnr: 127.0.0.1
text:
  = Trac Installation Guide for 0.12 = 
  [[TracGuideToc]]

  Trac is written in the Python programming language and needs a database, [http://sqlite.org/ SQLite], [http://www.postgresql.org/ PostgreSQL], or [http://mysql.com/ MySQL]. For HTML rendering, Trac uses the [http://genshi.edgewall.org Genshi] templating system.

  Since version 0.12, Trac can also be localized, and there's probably a translation available for your language. If you want to be able to use the Trac interface in other languages, then make sure you **first** have installed the optional package [#OtherPythonPackages Babel]. Lacking Babel, you will only get the default english version, as usual. If you install Babel later on, you will need to re-install Trac.

  If you're interested in contributing new translations for other languages or enhance the existing translations, then please have a look at [trac:wiki:TracL10N TracL10N].

  What follows are generic instructions for installing and setting up Trac and its requirements. While you may find instructions for installing Trac on specific systems at TracInstallPlatforms on the main Trac site, please be sure to '''first read through these general instructions''' to get a good understanding of the tasks involved.

  [[PageOutline(2-3,Installation Steps,inline)]]

  == Dependencies ==
  === Mandatory Dependencies
  To install Trac, the following software packages must be installed:

   * [http://www.python.org/ Python], version >= 2.4 and < 3.0
     (note that we dropped the support for Python 2.3 in this release)
   * [http://peak.telecommunity.com/DevCenter/setuptools setuptools], version >= 0.6
   * [http://genshi.edgewall.org/wiki/Download Genshi], version >= 0.6

  You also need a database system and the corresponding python bindings.
  The database can be either SQLite, PostgreSQL or MySQL.

  ==== For the SQLite database #ForSQLite

  If you're using Python 2.5 or 2.6, you already have everything you need.

  If you're using Python 2.4 and need pysqlite, you can download from 
  [http://code.google.com/p/pysqlite/downloads/list google code] the Windows installers or the tar.gz archive for building from source: 
  {{{
  $ tar xvfz <version>.tar.gz 
  $ cd <version> 
  $ python setup.py build_static install 
  }}}
   
  This will extract the SQLite code and build the bindings. 

  To install SQLite, your system may require the development headers. Without these you will get various GCC related errors when attempting to build:

  {{{
  $ apt-get install libsqlite3-dev
  }}}

  SQLite 2.x is no longer supported, and neither is !PySqlite 1.1.x.

  A known bug !PySqlite versions 2.5.2-4 prohibits upgrade of trac databases
  from 0.11.x to 0.12. Please use versions 2.5.5 and newer or 2.5.1 and
  older. See [trac:#9434] for more detail.

  See additional information in [trac:PySqlite].

  ==== For the PostgreSQL database #ForPostgreSQL

  You need to install the database and its Python bindings:
   * [http://www.postgresql.org/ PostgreSQL]
   * [http://pypi.python.org/pypi/psycopg2 psycopg2]

  See [trac:DatabaseBackend#Postgresql DatabaseBackend] for details.


  ==== For the MySQL database #ForMySQL

  Trac can now work quite well with MySQL, provided you follow the guidelines.

   * [http://mysql.com/ MySQL], version 5.0 or later
   * [http://sf.net/projects/mysql-python MySQLdb], version 1.2.2 or later

  It is '''very''' important to read carefully the  [trac:MySqlDb] page before creating the database.

  === Optional Dependencies

  ==== Version Control System ====

  ===== Subversion =====
   * [http://subversion.apache.org/ Subversion], 1.5.x or 1.6.x and the '''''corresponding''''' Python bindings. Older versions starting from 1.0, like 1.2.4, 1.3.2 or 1.4.2, etc. should still work. For troubleshooting information, check the [trac:TracSubversion#Troubleshooting TracSubversion] page.

  There are [http://subversion.apache.org/packages.html pre-compiled SWIG bindings] available for various platforms. (Good luck finding precompiled SWIG bindings for any Windows package at that listing. TracSubversion points you to [http://alagazam.net Algazam], which works for me under Python 2.6.)

  Note that Trac '''doesn't''' use [http://pysvn.tigris.org/ PySVN], neither does it work yet with the newer `ctype`-style bindings. [Is there a ticket for implementing ctype bindings?]


  '''Please note:''' if using Subversion, Trac must be installed on the '''same machine'''. Remote repositories are currently [trac:ticket:493 not supported].


  ===== Others =====

  Support for other version control systems is provided via third-parties. See [trac:PluginList] and [trac:VersioningSystemBackend].

  ==== Web Server ====
  A web server is optional because Trac is shipped with a server included, see the [#RunningtheStandaloneServer Running the Standalone Server ] section below.

  Alternatively you configure Trac to run in any of the following environments.
   * [http://httpd.apache.org/ Apache] with 
     - [http://code.google.com/p/modwsgi/ mod_wsgi], see [wiki:TracModWSGI] and 
       http://code.google.com/p/modwsgi/wiki/IntegrationWithTrac
     - [http://modpython.org/ mod_python 3.3.1], deprecated: see TracModPython)
   * a [http://www.fastcgi.com/ FastCGI]-capable web server (see TracFastCgi)
   * an [http://tomcat.apache.org/connectors-doc/ajp/ajpv13a.html AJP]-capable web
     server (see [trac:TracOnWindowsIisAjp])
   * a CGI-capable web server (see TracCgi), '''but usage of Trac as a cgi script 
     is highly discouraged''', better use one of the previous options. 
     

  ==== Other Python Packages ====

   * [http://babel.edgewall.org Babel], version >= 0.9.5, 
     needed for localization support[[BR]]
     ''Note: '' If you want to be able to use the Trac interface in other languages, then make sure you first have installed the optional package Babel. Lacking Babel, you will only get the default english version, as usual. If you install Babel later on, you will need to re-install Trac. 
   * [http://docutils.sourceforge.net/ docutils], version >= 0.3.9 
     for WikiRestructuredText.
   * [http://pygments.pocoo.org Pygments] for 
     [wiki:TracSyntaxColoring syntax highlighting].
     [http://silvercity.sourceforge.net/ SilverCity] and/or 
     [http://gnu.org/software/enscript/enscript.html Enscript] may still be used
     but are deprecated and you really should be using Pygments.
   * [http://pytz.sf.net pytz] to get a complete list of time zones,
     otherwise Trac will fall back on a shorter list from 
     an internal time zone implementation.

  '''Attention''': The various available versions of these dependencies are not necessarily interchangable, so please pay attention to the version numbers above. If you are having trouble getting Trac to work please double-check all the dependencies before asking for help on the [trac:MailingList] or [trac:IrcChannel].

  Please refer to the documentation of these packages to find out how they are best installed. In addition, most of the [trac:TracInstallPlatforms platform-specific instructions] also describe the installation of the dependencies. Keep in mind however that the information there ''probably concern older versions of Trac than the one you're installing'' (there are even some pages that are still talking about Trac 0.8!).


  == Installing Trac ==
  === Using `easy_install`
  One way to install Trac is using [http://pypi.python.org/pypi/setuptools setuptools].
  With setuptools you can install Trac from the subversion repository; 

  A few examples:

   - install Trac 0.12:
     {{{
     easy_install Trac==0.12
     }}}

   - install latest development version 0.12dev:
     {{{
     easy_install Trac==dev
     }}}
     Note that in this case you won't have the possibility to run a localized version of Trac;
     either use a released version or install from source 

  === Using `pip`
  'pip' is an easy_install replacement that is very useful to quickly install python packages.
  To get a trac installation up and running in less than 5 minutes:

  Assuming you want to have your entire pip installation in /opt/user/trac

   - 
  {{{
  pip -E /opt/user/trac install trac psycopg2 
  }}}
  or
   - 
  {{{
  pip -E /opt/user/trac install trac mysql-python 
  }}}

  Make sure your OS specific headers are available for pip to automatically build PostgreSQL (libpq-dev) or MySQL (libmysqlclient-dev) bindings.

  pip will automatically resolve all dependencies (like Genshi, pygments, etc.) and download the latest packages on pypi.python.org and create a self contained installation in /opt/user/trac 

  All commands (tracd, trac-admin) are available in /opt/user/trac/bin . This can also be leveraged for mod_python (using PythonHandler directive) and mod_wsgi (using WSGIDaemonProcess directive)

  Additionally, you can install several trac plugins (listed [http://pypi.python.org/pypi?:action=search&term=trac&submit=search here]) through pip.



  === From source
  Of course, using the python-typical setup at the top of the source directory also works.

  You can obtain the source for a .tar.gz or .zip file corresponding to a release (e.g. Trac-0.12.tar.gz), or you can get the source directly from the repository (see [trac:SubversionRepository] for details).

  {{{
  $ python ./setup.py install
  }}}

  ''You'll need root permissions or equivalent for this step.''

  This will byte-compile the python source code and install it as an .egg file or folder in the `site-packages` directory
  of your Python installation. The .egg will also contain all other resources needed by standard Trac, such as htdocs and templates.

  The script will also install the [wiki:TracAdmin trac-admin] command-line tool, used to create and maintain [wiki:TracEnvironment project environments], as well as the [wiki:TracStandalone tracd] standalone server.

  If you install from source and want to make Trac available in other languages, make sure  Babel is installed. Only then, perform the `install` (or simply redo the `install` once again afterwards if you realize Babel was not yet installed):
  {{{
  $ python ./setup.py install
  }}}
  Alternatively, you can do a `bdist_egg` and copy the .egg from dist/ to the place of your choice, or you can create a Windows installer (`bdist_wininst`).

  === Advanced Options ===

  To install Trac to a custom location, or find out about other advanced installation options, run:
  {{{
  easy_install --help
  }}}

  Also see [http://docs.python.org/inst/inst.html Installing Python Modules] for detailed information.

  Specifically, you might be interested in:
  {{{
  easy_install --prefix=/path/to/installdir
  }}}
  or, if installing Trac to a Mac OS X system:
  {{{
  easy_install --prefix=/usr/local --install-dir=/Library/Python/2.5/site-packages
  }}}
  Note: If installing on Mac OS X 10.6 running {{{ easy_install http://svn.edgewall.org/repos/trac/trunk }}} will install into {{{ /usr/local }}} and {{{ /Library/Python/2.6/site-packages }}} by default

  The above will place your `tracd` and `trac-admin` commands into `/usr/local/bin` and will install the Trac libraries and dependencies into `/Library/Python/2.5/site-packages`, which is Apple's preferred location for third-party Python application installations.


  == Creating a Project Environment ==

  A [TracEnvironment Trac environment] is the backend storage where Trac stores information like wiki pages, tickets, reports, settings, etc. An environment is basically a directory that contains a human-readable [TracIni configuration file], and various other files and directories.

  A new environment is created using [wiki:TracAdmin trac-admin]:
  {{{
  $ trac-admin /path/to/myproject initenv
  }}}

  [TracAdmin trac-admin] will prompt you for the information it needs to create the environment, such as the name of the project and the [TracEnvironment#DatabaseConnectionStrings database connection string]. If you're not sure what to specify for one of these options, just press `<Enter>` to use the default value. 

  Using the default database connection string in particular will always work as long as you have SQLite installed.
  For the other [DatabaseBackend database backends] you should plan ahead and already have a database ready to use at this point.

  Since 0.12, Trac doesn't ask for a [TracEnvironment#SourceCodeRepository source code repository] anymore when creating an environment. Repositories can be [TracRepositoryAdmin added] afterward, or the version control support can be disabled completely if you don't need it.

  Also note that the values you specify here can be changed later by directly editing the [TracIni conf/trac.ini] configuration file.

  Finally, make sure the user account under which the web front-end runs will have '''write permissions''' to the environment directory and all the files inside. This will be the case if you run `trac-admin ... initenv` as this user. If not, you should set the correct user afterwards. For example on Linux, with the web server running as user `apache` and group `apache`, enter:
  {{{
  # chown -R apache.apache /path/to/myproject
  }}}

  == Running the Standalone Server ==

  After having created a Trac environment, you can easily try the web interface by running the standalone server [wiki:TracStandalone tracd]:
  {{{
  $ tracd --port 8000 /path/to/myproject
  }}}

  Then, fire up a browser and visit `http://localhost:8000/`. You should get a simple listing of all environments that `tracd` knows about. Follow the link to the environment you just created, and you should see Trac in action. If you only plan on managing a single project with Trac you can have the standalone server skip the environment list by starting it like this:
  {{{
  $ tracd -s --port 8000 /path/to/myproject
  }}}

  == Running Trac on a Web Server ==

  Trac provides various options for connecting to a "real" web server: [wiki:TracCgi CGI], [wiki:TracFastCgi FastCGI], [wiki:TracModWSGI mod_wsgi] and [wiki:TracModPython mod_python]. For decent performance, it is recommended that you use either FastCGI or mod_wsgi.

  Trac also supports [trac:TracOnWindowsIisAjp AJP] which may be your choice if you want to connect to IIS.

  ==== Generating the Trac cgi-bin directory ====

  In order for Trac to function properly with FastCGI you need to have a `trac.fcgi` file and for mod_wsgi a `trac.wsgi` file. These are Python scripts which load the appropriate Python code. They can be generated using the `deploy` option of [wiki:TracAdmin trac-admin].

  There is, however, a bit of a chicken-and-egg problem. The [wiki:TracAdmin trac-admin] command requires an existing environment to function, but complains if the deploy directory already exists. This is a problem, because environments are often stored in a subdirectory of the deploy. The solution is to do something like this:
  {{{
  mkdir -p /usr/share/trac/projects/my-project
  trac-admin /usr/share/trac/projects/my-project initenv
  trac-admin /usr/share/trac/projects/my-project deploy /tmp/deploy
  mv /tmp/deploy/* /usr/share/trac
  }}}

  ==== Setting up the Plugin Cache ====

  Some Python plugins need to be extracted to a cache directory. By default the cache resides in the home directory of the current user. When running Trac on a Web Server as a dedicated user (which is highly recommended) who has no home directory, this might prevent the plugins from starting. To override the cache location you can set the PYTHON_EGG_CACHE environment variable. Refer to your server documentation for detailed instructions on how to set environment variables.

  == Configuring Authentication ==

  The process of adding, removing, and configuring user accounts for authentication depends on the specific way you run Trac. The basic procedure is described in the [wiki:TracCgi#AddingAuthentication "Adding Authentication"] section on the TracCgi page. To learn how to setup authentication for the frontend you're using, please refer to one of the following pages:

   * TracStandalone if you use the standalone server, `tracd`.
   * TracCgi if you use the CGI or FastCGI web front ends.
   * [wiki:TracModWSGI] if you use the Apache mod_wsgi web front end.
   * TracModPython if you use the Apache mod_python web front end.


  == Automatic reference to the SVN changesets in Trac tickets ==

  You can configure SVN to automatically add a reference to the changeset into the ticket comments, whenever changes are committed to the repository. The description of the commit needs to contain one of the following formulas:
   * '''`Refs #123`''' - to reference this changeset in `#123` ticket
   * '''`Fixes #123`''' - to reference this changeset and close `#123` ticket with the default status ''fixed''

  This functionality requires a post-commit hook to be installed as described in [wiki:TracRepositoryAdmin#ExplicitSync TracRepositoryAdmin], and enabling the optional commit updater components by adding the following line to the `[components]` section of your [wiki:TracIni#components-section trac.ini], or enabling the components in the "Plugins" admin panel.
  {{{
  tracopt.ticket.commit_updater.* = enabled
  }}}
  For more information, see the documentation of the `CommitTicketUpdater` component in the "Plugins" admin panel.

  == Using Trac ==

  Once you have your Trac site up and running, you should be able to create tickets, view the timeline, browse your version control repository if configured, etc.

  Keep in mind that anonymous (not logged in) users can by default access most but not all of the features. You will need to configure authentication and grant additional [wiki:TracPermissions permissions] to authenticated users to see the full set of features.

  '' Enjoy! ''

  [trac:TracTeam The Trac Team]

  ----
  See also: [trac:TracInstallPlatforms TracInstallPlatforms], TracGuide, TracCgi, TracFastCgi, TracModPython, [wiki:TracModWSGI], TracUpgrade, TracPermissions


name: TracLinks
author: trac
ipnr: 127.0.0.1
text:
  = Trac Links =
  [[TracGuideToc]]

  TracLinks are a fundamental feature of Trac, because they allow easy hyperlinking between the various entities in the system—such as tickets, reports, changesets, Wiki pages, milestones, and source files—from anywhere WikiFormatting is used.

  TracLinks are generally of the form '''type:id''' (where ''id'' represents the
  number, name or path of the item) though some frequently used kinds of items
  also have short-hand notations.

  == Where to use TracLinks ==
  You can use TracLinks in:

   * Source code (Subversion) commit messages
   * Wiki pages
   * Full descriptions for tickets, reports and milestones

  and any other text fields explicitly marked as supporting WikiFormatting.

  == Overview ==

  ||= Wiki Markup =||= Display =||
  {{{#!td
   Wiki pages :: `CamelCase` or `wiki:CamelCase`
   Parent page :: `[..]`
   Tickets :: `#1` or `ticket:1`
   Ticket comments :: `comment:1:ticket:2`
   Reports :: `{1}` or `report:1`
   Milestones :: `milestone:1.0`
   Attachment :: `attachment:example.tgz` (for current page attachment), `attachment:attachment.1073.diff:ticket:944` (absolute path)
   Changesets :: `r1`, `[1]`, `changeset:1` or (restricted) `[1/trunk]`, `changeset:1/trunk`
   Revision log :: `r1:3`, `[1:3]` or `log:@1:3`, `log:trunk@1:3`, `[2:5/trunk]`
   Diffs :: `diff:@1:3`, `diff:tags/trac-0.9.2/wiki-default//tags/trac-0.9.3/wiki-default` 
            or `diff:trunk/trac@3538//sandbox/vc-refactoring@3539`
   Files :: `source:trunk/COPYING`, `source:/trunk/COPYING@200` (at version 200), `source:/trunk/COPYING@200#L25` (at version 200, line 25)
  }}}
  {{{#!td
   Wiki pages :: CamelCase or wiki:CamelCase
   Parent page :: [..]
   Tickets :: #1 or ticket:1
   Ticket comments :: comment:1:ticket:2 
   Reports :: {1} or report:1
   Milestones :: milestone:1.0
   Attachment :: attachment:example.tgz (for current page attachment), attachment:attachment.1073.diff:ticket:944 (absolute path)
   Changesets :: r1, [1], changeset:1 or (restricted) [1/trunk], changeset:1/trunk
   Revision log :: r1:3, [1:3] or log:@1:3, log:trunk@1:3, [2:5/trunk]
   Diffs :: diff:@1:3, diff:tags/trac-0.9.2/wiki-default//tags/trac-0.9.3/wiki-default 
            or diff:trunk/trac@3538//sandbox/vc-refactoring@3539
   Files :: source:trunk/COPYING, source:/trunk/COPYING@200 (at version 200), source:/trunk/COPYING@200#L25 (at version 200, line 25)
  }}}

  '''Note:''' The wiki:CamelCase form is rarely used, but it can be convenient to refer to
  pages whose names do not follow WikiPageNames rules, i.e., single words,
  non-alphabetic characters, etc. See WikiPageNames for more about features specific
  to links to Wiki page names.


  {{{#!table class=""
  |||| Trac links using the full (non-shorthand) notation can also be given a custom link title like this: ||
  {{{#!td
  {{{
  [ticket:1 This is a link to ticket number one] or
  [[ticket:1|This is another link to ticket number one]].
  }}}
  }}}
  {{{#!td
  [ticket:1 This is a link to ticket number one] or
  [[ticket:1|This is another link to ticket number one]].
  }}}
  |--------------------------------------------------------------------------------------
  |||| If the title is omitted, only the id (the part after the colon) is displayed:  ||
  {{{#!td
  {{{
  [ticket:1] or [[ticket:2]]
  }}}
  }}}
  {{{#!td
  [ticket:1] or [[ticket:2]]
  }}}
  |--------------------------------------------------------------------------------------
  |||| `wiki` is the default if the namespace part of a full link is omitted:  || 
  {{{#!td
  {{{
  [SandBox the sandbox] or
  [[SandBox|the sandbox]]
  }}}
  }}}
  {{{#!td
  [SandBox the sandbox] or
  [[SandBox|the sandbox]]
  }}}
  |--------------------------------------------------------------------------------------
  |||| The short form ''realm:target'' can also be wrapped within a <...> pair, [[br]] which allow for arbitrary characters (i.e. anything but >)  ||
  {{{#!td
  {{{
  <wiki:Strange(page@!)>
  }}}
  }}}
  {{{#!td
  <wiki:Strange(page@!)>
  }}}
  }}}

  TracLinks are a very simple idea, but actually allow quite a complex network of information. In practice, it's very intuitive and simple to use, and we've found the "link trail" extremely helpful to better understand what's happening in a project or why a particular change was made.


  == Advanced use of TracLinks ==

  === Relative links ===

  To create a link to a specific anchor in a page, use '#':
  {{{
   [#Relativelinks relative links] or [[#Relativelinks|relative links]]
  }}}
  Displays:
    [#Relativelinks relative links] or [[#Relativelinks|relative links]]

  Hint: when you move your mouse over the title of a section, a '¶' character will be displayed. This is a link to that specific section and you can use this to copy the `#...` part inside a relative link to an anchor.

  To create a link to a [trac:SubWiki SubWiki]-page just use a '/':
  {{{
   WikiPage/SubWikiPage or ./SubWikiPage
  }}}

  To link from a [trac:SubWiki SubWiki] page to a parent, simply use a '..':
  {{{
    [..] or [[..]]
  }}}
    [..] or [[..]]

  To link from a [trac:SubWiki SubWiki] page to a [=#sibling sibling] page, use a '../':
  {{{
    [../Sibling see next sibling] or [[../Sibling|see next sibling]]
  }}}
    [../Sibling see next sibling] or [[../Sibling|see next sibling]]

  But in practice you often won't need to add the `../` prefix to link to a sibling page.
  For resolving the location of a wiki link, it's the target page closest in the hierarchy
  to the page where the link is written which will be selected. So for example, within 
  a sub-hierarchy, a sibling page will be targeted in preference to a toplevel page.
  This makes it easy to copy or move pages to a sub-hierarchy by [[WikiNewPage#renaming|renaming]] without having to adapt the links.

  In order to link explicitly to a [=#toplevel toplevel] Wiki page,
  use the `wiki:/` prefix.
  Be careful **not** to use the `/` prefix alone, as this corresponds to the
  [#Server-relativelinks] syntax and with such a link you will lack the `/wiki/` 
  part in the resulting URL.

  ''(Changed in 0.11)'' Note that in Trac 0.10, using e.g. `[../newticket]`  may have worked for linking to the `/newticket` top-level URL, but since 0.11, such a link will stay in the wiki namespace and therefore link to a sibling page. 
  See [#Server-relativelinks] for the new syntax.

  === InterWiki links ===

  Other prefixes can be defined freely and made to point to resources in other Web applications. The definition of those prefixes as well as the URLs of the corresponding Web applications is defined in a special Wiki page, the InterMapTxt page. Note that while this could be used to create links to other Trac environments, there's a more specialized way to register other Trac environments which offers greater flexibility.

  === InterTrac links ===

  This can be seen as a kind of InterWiki link specialized for targeting other Trac projects.

  Any type of Trac link can be written in one Trac environment and actually refer to resources in another Trac environment. All that is required is to prefix the Trac link with the name of the other Trac environment followed by a colon. The other Trac environment must be registered on the InterTrac page. 

  A distinctive advantage of InterTrac links over InterWiki links is that the shorthand form of Trac links (e.g. `{}`, `r`, `#`) can also be used. For example if T was set as an alias for Trac, links to Trac tickets can be written #T234, links to Trac changesets can be written [trac 1508].
  See InterTrac for the complete details. 

  === Server-relative links ===

  It is often useful to be able to link to objects in your project that
  have no built-in Trac linking mechanism, such as static resources, `newticket`,
  a shared `/register` page on the server, etc.

  To link to resources inside the project, use either an absolute path from the project root, 
  or a relative link from the URL of the current page (''Changed in 0.11''):

  {{{
  [/newticket Create a new ticket] or [[//newticket|Create a new ticket]]
  [/ home] or [[/|home]]
  }}}

  Display: [/newticket Create a new ticket] or [[//newticket|Create a new ticket]]
  [/ home] or [[/|home]]

  To link to another location on the server (possibly outside the project but on the same host), use the `//` prefix (''Changed in 0.11''):

  {{{
  [//register Register Here] or [[//register|Register Here]]
  }}}

  Display: [//register Register Here] or [[//register|Register Here]]

  === Quoting space in TracLinks ===

  Immediately after a TracLinks prefix, targets containing space characters should
  be enclosed in a pair of quotes or double quotes.
  Examples:
   * !wiki:"The whitespace convention"
   * !attachment:'the file.txt' or
   * !attachment:"the file.txt" 
   * !attachment:"the file.txt:ticket:123" 

  Note that by using [trac:WikiCreole] style links, it's quite natural to write links containing spaces:
   * ![[The whitespace convention]]
   * ![[attachment:the file.txt]]

  === Escaping Links ===

  To prevent parsing of a !TracLink, you can escape it by preceding it with a '!' (exclamation mark).
  {{{
   !NoLinkHere.
   ![42] is not a link either.
  }}}

  Display:
   !NoLinkHere.
   ![42] is not a link either.


  === Parameterized Trac links ===

  Many Trac resources have more than one way to be rendered, depending on some extra parameters. For example, a Wiki page can accept a `version` or a `format` parameter, a report can make use of dynamic variables, etc.

  Trac links can support an arbitrary set of parameters, written in the same way as they would be for the corresponding URL. Some examples:
   - `wiki:WikiStart?format=txt`
   - `ticket:1?version=1`
   - `[/newticket?component=module1 create a ticket for module1]`
   - `[/newticket?summary=Add+short+description+here create a ticket with URL with spaces]`


  == TracLinks Reference ==
  The following sections describe the individual link types in detail, as well as notes on advanced usage of links.

  === attachment: links ===

  The link syntax for attachments is as follows:
   * !attachment:the_file.txt creates a link to the attachment the_file.txt of the current object
   * !attachment:the_file.txt:wiki:MyPage creates a link to the attachment the_file.txt of the !MyPage wiki page
   * !attachment:the_file.txt:ticket:753 creates a link to the attachment the_file.txt of the ticket 753

  Note that the older way, putting the filename at the end, is still supported: !attachment:ticket:753:the_file.txt.

  If you'd like to create a direct link to the content of the attached file instead of a link to the attachment page, simply use `raw-attachment:` instead of `attachment:`.

  This can be useful for pointing directly to an HTML document, for example. Note that for this use case, you'd have to allow the web browser to render the content by setting `[attachment] render_unsafe_content = yes` (see TracIni#attachment-section). Caveat: only do that in environments for which you're 100% confident you can trust the people who are able to attach files, as otherwise this would open up your site to [wikipedia:Cross-site_scripting cross-site scripting] attacks.

  See also [#export:links].

  === comment: links ===

  When you're inside a given ticket, you can simply write e.g. !comment:3 to link to the third change comment.
  It is possible to link to a comment of a specific ticket from anywhere using one of the following syntax:
   - `comment:3:ticket:123` 
   - `ticket:123#comment:3` (note that you can't write `#123#!comment:3`!)
  It is also possible to link to the ticket's description using one of the following syntax:
   - `comment:description` (within the ticket)
   - `comment:description:ticket:123`
   - `ticket:123#comment:description`

  === query: links ===

  See TracQuery#UsingTracLinks and [#ticket:links].

  === search: links ===

  See TracSearch#SearchLinks 

  === ticket: links ===
   ''alias:'' `bug:`

  Besides the obvious `ticket:id` form, it is also possible to specify a list of tickets or even a range of tickets instead of the `id`. This generates a link to a custom query view containing this fixed set of tickets.

  Example: 
   - `ticket:5000-6000`
   - `ticket:1,150`

  ''(since Trac 0.11)''

  === timeline: links ===

  Links to the timeline can be created by specifying a date in the ISO:8601 format. The date can be optionally followed by a time specification. The time is interpreted as being UTC time, but alternatively you can specify your local time, followed by your timezone if you don't want to compute the UTC time.

  Examples:
   - `timeline:2008-01-29`
   - `timeline:2008-01-29T15:48`
   - `timeline:2008-01-29T15:48Z`
   - `timeline:2008-01-29T16:48+01`

  ''(since Trac 0.11)''

  === wiki: links ===

  See WikiPageNames and [#QuotingspaceinTracLinks quoting space in TracLinks] above.

  === Version Control related links ===

  It should be noted that multiple repository support works by creating a kind of virtual namespace for versioned files in which the toplevel folders correspond to the repository names. Therefore, in presence of multiple repositories, a ''/path'' specification in the syntax of links detailed below should start with the name of the repository. If omitted, the default repository is used. In case a toplevel folder of the default repository has the same name as a repository, the latter "wins". One can always access such folder by fully qualifying it (the default repository can be an alias of a named repository, or conversely, it is always possible to create an alias for the default repository, ask your Trac administrator).

  For example, `source:/trunk/COPYING` targets the path `/trunk/COPYING` in the default repository, whereas `source:/projectA/trunk/COPYING` targets the path `/trunk/COPYING` in the repository named `projectA`. This can be the same file if `'projectA'` is an alias to the default repository or if `''` (the default repository) is an alias to `'projectA'`.

  ==== source: links ====
   ''aliases:'' `browser:`, `repos:`

  The default behavior for a source:/some/path link is to open the browser in that directory directory 
  if the path points to a directory or to show the latest content of the file.

  It's also possible to link directly to a specific revision of a file like this:
   - `source:/some/file@123` - link to the file's revision 123
   - `source:/some/file@head` - link explicitly to the latest revision of the file

  If the revision is specified, one can even link to a specific line number:
   - `source:/some/file@123#L10`
   - `source:/tag/0.10@head#L10`

  Finally, one can also highlight an arbitrary set of lines:
   - `source:/some/file@123:10-20,100,103#L99` - highlight lines 10 to 20, and lines 100 and 103.
     ''(since 0.11)''

  Note that in presence of multiple repositories, the name of the repository is simply integrated in the path you specify for `source:` (e.g. `source:reponame/trunk/README`). ''(since 0.12)''

  ==== export: links ====

  To force the download of a file in the repository, as opposed to displaying it in the browser, use the `export` link.  Several forms are available:
   * `export:/some/file` - get the HEAD revision of the specified file
   * `export:123:/some/file` - get revision 123 of the specified file
   * `export:/some/file@123` - get revision 123 of the specified file

  This can be very useful for displaying XML or HTML documentation with correct stylesheets and images, in case that has been checked in into the repository. Note that for this use case, you'd have to allow the web browser to render the content by setting `[browser] render_unsafe_content = yes` (see TracIni#browser-section), otherwise Trac will force the files to be downloaded as attachments for security concerns. 

  If the path is to a directory in the repository instead of a specific file, the source browser will be used to display the directory (identical to the result of `source:/some/dir`).

  ==== log: links ====

  The `log:` links are used to display revision ranges. In its simplest form, it can link to the latest revisions of the specified path, but it can also support displaying an arbitrary set of revisions.
   - `log:/` - the latest revisions starting at the root of the repository
   - `log:/trunk/tools` - the latest revisions in `trunk/tools`
   - `log:/trunk/tools@10000` - the revisions in `trunk/tools` starting from  revision 10000
   - `log:@20788,20791:20795` - list revision 20788 and the revisions from 20791 to 20795 
   - `log:/trunk/tools@20788,20791:20795` - list revision 20788 and the revisions from 20791 to 20795 which affect the given path

  There are short forms for revision ranges as well:
   - `[20788,20791:20795]`
   - `[20788,20791:20795/trunk/tools]`
   - `r20791:20795` (but not `r20788,20791:20795` nor `r20791:20795/trunk`)

  Finally, note that in all of the above, a revision range can be written either as `x:y` or `x-y`.

  In the presence of multiple repositories, the name of the repository should be specified as the first part of the path, e.g. `log:repos/branches` or `[20-40/repos]`.

  ----
  See also: WikiFormatting, TracWiki, WikiPageNames, InterTrac, InterWiki
   


name: TracModWSGI
author: trac
ipnr: 127.0.0.1
text:
  = Trac and mod_wsgi =

  '''Important note:''' ''Please use either version 1.6, 2.4 or later of `mod_wsgi`. Versions prior to 2.4 in the 2.X branch have problems with some Apache configurations that use WSGI file wrapper extension. This extension is used in Trac to serve up attachments and static media files such as style sheets. If you are affected by this problem attachments will appear to be empty and formatting of HTML pages will appear not to work due to style sheet files not loading properly. See mod_wsgi tickets [http://code.google.com/p/modwsgi/issues/detail?id=100 #100] and [http://code.google.com/p/modwsgi/issues/detail?id=132 #132].''

  [http://code.google.com/p/modwsgi/ mod_wsgi] is an Apache module for running WSGI-compatible Python applications directly on top of Apache. The mod_wsgi adapter is written completely in C and provides significantly better performance than using existing WSGI adapters for mod_python or CGI.

  Trac can be run on top of mod_wsgi with the help of the following application script, which is just a Python file, though usually saved with a .wsgi extension). This file can be created using '''trac-admin <env> deploy <dir>''' command which automatically substitutes required paths.

  {{{
  #!python
  import os

  os.environ['TRAC_ENV'] = '/usr/local/trac/mysite'
  os.environ['PYTHON_EGG_CACHE'] = '/usr/local/trac/mysite/eggs'

  import trac.web.main
  application = trac.web.main.dispatch_request
  }}}

  The `TRAC_ENV` variable should naturally be the directory for your Trac environment (if you have several Trac environments in a directory, you can also use `TRAC_ENV_PARENT_DIR` instead), while the `PYTHON_EGG_CACHE` should be a directory where Python can temporarily extract Python eggs.

  '''Important note:''' If you're using multiple `.wsgi` files (for example one per Trac environment) you must ''not'' use `os.environ['TRAC_ENV']` to set the path to the Trac environment. Using this method may lead to Trac delivering the content of another Trac environment. (The variable may be filled with the path of a previously viewed Trac environment.) To solve this problem, use the following `.wsgi` file instead:

  {{{
  #!python
  import os

  os.environ['PYTHON_EGG_CACHE'] = '/usr/local/trac/mysite/eggs'

  import trac.web.main
  def application(environ, start_response):
    environ['trac.env_path'] = '/usr/local/trac/mysite' 
    return trac.web.main.dispatch_request(environ, start_response)
  }}}

  For clarity, you should give this file a `.wsgi` extension. You should probably put the file in it's own directory, since you will open up its directory to Apache. You can create a .wsgi files which handles all this for you by running the TracAdmin command `deploy`.

  If you have installed trac and eggs in a path different from the standard one you should add that path by adding the following code on top of the wsgi script:

  {{{
  #!python
  import site
  site.addsitedir('/usr/local/trac/lib/python2.4/site-packages')
  }}}

  Change it according to the path you installed the trac libs at.

  After you've done preparing your wsgi-script, add the following to your httpd.conf.

  {{{
  WSGIScriptAlias /trac /usr/local/trac/mysite/apache/mysite.wsgi

  <Directory /usr/local/trac/mysite/apache>
      WSGIApplicationGroup %{GLOBAL}
      Order deny,allow
      Allow from all
  </Directory>
  }}}

  Here, the script is in a subdirectory of the Trac environment. In order to let Apache run the script, access to the directory in which the script resides is opened up to all of Apache. Additionally, the {{{WSGIApplicationGroup}}} directive ensures that Trac is always run in the first Python interpreter created by mod_wsgi; this is necessary because the Subversion Python bindings, which are used by Trac, don't always work in other subinterpreters and may cause requests to hang or cause Apache to crash as a result. After adding this configuration, restart Apache, and then it should work.

  To test the setup of Apache, mod_wsgi and Python itself (ie. without involving Trac and dependencies), this simple wsgi application can be used to make sure that requests gets served (use as only content in your .wsgi script):

  {{{
  def application(environ, start_response):
          start_response('200 OK',[('Content-type','text/html')])
          return ['<html><body>Hello World!</body></html>']
  }}}

  See also the mod_wsgi [http://code.google.com/p/modwsgi/wiki/IntegrationWithTrac installation instructions] for Trac.

  For troubleshooting tips, see the [TracModPython#Troubleshooting mod_python troubleshooting] section, as most Apache-related issues are quite similar, plus discussion of potential [http://code.google.com/p/modwsgi/wiki/ApplicationIssues application issues] when using mod_wsgi.

  ''Note: using mod_wsgi 2.5 and Python 2.6.1 gave an Internal Server Error on my system (Apache 2.2.11 and Trac 0.11.2.1). Upgrading to Python 2.6.2 (as suggested [http://www.mail-archive.com/modwsgi@googlegroups.com/msg01917.html here]) solved this for me[[BR]]-- Graham Shanks''

  == Apache Basic Authentication for Trac thru mod_wsgi ==

  Per the mod_wsgi documentation linked to above, here is an example Apache configuration that a) serves the trac from a virtualhost subdomain and b) uses Apache basic authentication for Trac authentication.


  If you want your trac to be served from e.g. !http://trac.my-proj.my-site.org, then from the folder e.g. {{{/home/trac-for-my-proj}}}, if you used the command {{{trac-admin the-env initenv}}} to create a folder {{{the-env}}}, and you used {{{trac-admin the-env deploy the-deploy}}} to create a folder {{{the-deploy}}}, then:

  create the htpasswd file:
  {{{
  cd /home/trac-for-my-proj/the-env
  htpasswd -c htpasswd firstuser
  ### and add more users to it as needed:
  htpasswd htpasswd seconduser
  }}}
  (for security keep the file above your document root)

  create this file e.g. (ubuntu) {{{/etc/apache2/sites-enabled/trac.my-proj.my-site.org.conf}}} with these contents:

  {{{
  <Directory /home/trac-for-my-proj/the-deploy/cgi-bin/trac.wsgi>
    WSGIApplicationGroup %{GLOBAL}
    Order deny,allow
    Allow from all
  </Directory>

  <VirtualHost *:80>
    ServerName trac.my-proj.my-site.org
    DocumentRoot /home/trac-for-my-proj/the-env/htdocs/
    WSGIScriptAlias / /home/trac-for-my-proj/the-deploy/cgi-bin/trac.wsgi
    <Location '/'>
      AuthType Basic
      AuthName "Trac"
      AuthUserFile /home/trac-for-my-proj/the-env/htpasswd
      Require valid-user
    </Location>
  </VirtualHost>

  }}}


  (for subdomains to work you would probably also need to alter /etc/hosts and add A-Records to your host's DNS.)

  == Trac with PostgreSQL ==

  When using the mod_wsgi adapter with multiple Trac instances and PostgreSQL (or MySQL?) as a database back-end the server can get a lot of open database connections. (and thus PostgreSQL processes)

  A workable solution is to disabled connection pooling in Trac. This is done by setting poolable = False in trac.db.postgres_backend on the PostgreSQLConnection class.

  But it's not necessary to edit the source of trac, the following lines in trac.wsgi will also work:

  {{{
  import trac.db.postgres_backend
  trac.db.postgres_backend.PostgreSQLConnection.poolable = False
  }}}

  Now Trac drops the connection after serving a page and the connection count on the database will be kept minimal.

  == Getting Trac to work nicely with SSPI and 'Require Group' ==
  If like me you've set Trac up on Apache, Win32 and configured SSPI, but added a 'Require group' option to your apache configuration, then the SSPIOmitDomain option is probably not working.  If its not working your usernames in trac are probably looking like 'DOMAIN\user' rather than 'user'.

  This WSGI script 'fixes' things, hope it helps:
  {{{
  import os
  import trac.web.main

  os.environ['TRAC_ENV'] = '/usr/local/trac/mysite'
  os.environ['PYTHON_EGG_CACHE'] = '/usr/local/trac/mysite/eggs'

  def application(environ, start_response):
      if "\\" in environ['REMOTE_USER']:
          environ['REMOTE_USER'] = environ['REMOTE_USER'].split("\\", 1)[1]
      return trac.web.main.dispatch_request(environ, start_response)
  }}}
  ----
  See also:  TracGuide, TracInstall, [wiki:TracFastCgi FastCGI], [wiki:TracModPython ModPython], [trac:TracNginxRecipe TracNginxRecipe]


name: InterWiki
author: trac
ipnr: 127.0.0.1
text:
  = Support for InterWiki links =

  ''(since [trac:milestone:0.10 0.10])''

  == Definition ==

  An InterWiki link can be used for referring to a Wiki page
  located in another Wiki system, and by extension, to any object
  located in any other Web application, provided a simple URL 
  mapping can be done.

  At the extreme, InterWiki prefixes can even be used to simply introduce
  links to new protocols, such as `tsvn:` used by [trac:TortoiseSvn TortoiseSvn].

  == Link Syntax ==

  {{{
  <target_wiki>(:<identifier>)+
  }}}

  The link is composed by the targeted Wiki (or system) name,
  followed by a colon (e.g. `MeatBall:`),
  followed by a page specification in the target.
  Note that, as for InterTrac prefixes, '''InterWiki prefixes are case insensitive'''.

  The target Wiki URL is looked up in the InterMapTxt wiki page, 
  modelled after MeatBall:InterMapTxt.

  In addition to traditional InterWiki links, where the target
  is simply ''appended'' to the URL, 
  Trac supports parametric InterWiki URLs:
  identifiers `$1`, `$2`, ... in the URL
  will be replaced by corresponding arguments.
  The argument list is formed by splitting the page identifier
  using the ":" separator.

  == Examples ==

  If the following is an excerpt of the InterMapTxt page:

  {{{
  = InterMapTxt =
  == This is the place for defining InterWiki prefixes ==

  Currently active prefixes: [[InterWiki]]

  This page is modelled after the MeatBall:InterMapTxt page.
  In addition, an optional comment is allowed after the mapping.
  ----
  {{{
  PEP      http://www.python.org/peps/pep-$1.html           # Python Enhancement Proposal $1 
  Trac-ML  http://thread.gmane.org/gmane.comp.version-control.subversion.trac.general/$1  # Message $1 in Trac Mailing List

  tsvn     tsvn:                                            # Interact with TortoiseSvn
  ...
  MeatBall http://www.usemod.com/cgi-bin/mb.pl?
  MetaWiki http://sunir.org/apps/meta.pl?
  MetaWikiPedia http://meta.wikipedia.org/wiki/
  MoinMoin http://moinmoin.wikiwikiweb.de/
  ...
  }}}
  }}}

  Then, 
   * `MoinMoin:InterWikiMap` should be rendered as MoinMoin:InterWikiMap
     and the ''title'' for that link would be "!InterWikiMap in !MoinMoin"
   * `Trac-ML:4346` should be rendered as Trac-ML:4346
     and the ''title'' for that link would be "Message 4346 in Trac Mailing List"

  ----
  See also: InterTrac, InterMapTxt


name: TracQuery
author: trac
ipnr: 127.0.0.1
text:
  = Trac Ticket Queries =
  [[TracGuideToc]]

  In addition to [wiki:TracReports reports], Trac provides support for ''custom ticket queries'', used to display lists of tickets meeting a specified set of criteria. 

  To configure and execute a custom query, switch to the ''View Tickets'' module from the navigation bar, and select the ''Custom Query'' link.

  == Filters ==

  When you first go to the query page the default filter will display tickets relevant to you:
   * If logged in then all open tickets it will display open tickets assigned to you.
   * If not logged in but you have specified a name or email address in the preferences then it will display all open tickets where your email (or name if email not defined) is in the CC list.
   * If not logged and no name/email defined in the preferences then all open issues are displayed.

  Current filters can be removed by clicking the button to the right with the minus sign on the label.  New filters are added from the pulldown lists at the bottom corners of the filters box ('And' conditions on the left, 'Or' conditions on the right).  Filters with either a text box or a pulldown menu of options can be added multiple times to perform an ''or'' of the criteria.

  You can use the fields just below the filters box to group the results based on a field, or display the full description for each ticket.

  Once you've edited your filters click the ''Update'' button to refresh your results.

  == Navigating Tickets ==
  Clicking on one of the query results will take you to that ticket.  You can navigate through the results by clicking the ''Next Ticket'' or ''Previous Ticket'' links just below the main menu bar, or click the ''Back to Query'' link to return to the query page.  

  You can safely edit any of the tickets and continue to navigate through the results using the ''!Next/Previous/Back to Query'' links after saving your results.  When you return to the query ''any tickets which were edited'' will be displayed with italicized text.  If one of the tickets was edited such that [[html(<span style="color: grey">it no longer matches the query criteria </span>)]] the text will also be greyed. Lastly, if '''a new ticket matching the query criteria has been created''', it will be shown in bold. 

  The query results can be refreshed and cleared of these status indicators by clicking the ''Update'' button again.

  == Saving Queries ==

  Trac allows you to save the query as a named query accessible from the reports module. To save a query ensure that you have ''Updated'' the view and then click the ''Save query'' button displayed beneath the results.
  You can also save references to queries in Wiki content, as described below.

  ''Note:'' one way to easily build queries like the ones below, you can build and test the queries in the Custom report module and when ready - click ''Save query''. This will build the query string for you. All you need to do is remove the extra line breaks.

  === Using TracLinks ===

  You may want to save some queries so that you can come back to them later.  You can do this by making a link to the query from any Wiki page.
  {{{
  [query:status=new|assigned|reopened&version=1.0 Active tickets against 1.0]
  }}}

  Which is displayed as:
    [query:status=new|assigned|reopened&version=1.0 Active tickets against 1.0]

  This uses a very simple query language to specify the criteria (see [wiki:TracQuery#QueryLanguage Query Language]).

  Alternatively, you can copy the query string of a query and paste that into the Wiki link, including the leading `?` character:
  {{{
  [query:?status=new&status=assigned&status=reopened&group=owner Assigned tickets by owner]
  }}}

  Which is displayed as:
    [query:?status=new&status=assigned&status=reopened&group=owner Assigned tickets by owner]

  === Using the `[[TicketQuery]]` Macro ===

  The [trac:TicketQuery TicketQuery] macro lets you display lists of tickets matching certain criteria anywhere you can use WikiFormatting.

  Example:
  {{{
  [[TicketQuery(version=0.6|0.7&resolution=duplicate)]]
  }}}

  This is displayed as:
    [[TicketQuery(version=0.6|0.7&resolution=duplicate)]]

  Just like the [wiki:TracQuery#UsingTracLinks query: wiki links], the parameter of this macro expects a query string formatted according to the rules of the simple [wiki:TracQuery#QueryLanguage ticket query language].

  A more compact representation without the ticket summaries is also available:
  {{{
  [[TicketQuery(version=0.6|0.7&resolution=duplicate, compact)]]
  }}}

  This is displayed as:
    [[TicketQuery(version=0.6|0.7&resolution=duplicate, compact)]]

  Finally if you wish to receive only the number of defects that match the query using the ``count`` parameter.

  {{{
  [[TicketQuery(version=0.6|0.7&resolution=duplicate, count)]]
  }}}

  This is displayed as:
    [[TicketQuery(version=0.6|0.7&resolution=duplicate, count)]]

  === Customizing the ''table'' format ===
  You can also customize the columns displayed in the table format (''format=table'') by using ''col=<field>'' - you can specify multiple fields and what order they are displayed by placing pipes (`|`) between the columns like below:

  {{{
  [[TicketQuery(max=3,status=closed,order=id,desc=1,format=table,col=resolution|summary|owner|reporter)]]
  }}}

  This is displayed as:
  [[TicketQuery(max=3,status=closed,order=id,desc=1,format=table,col=resolution|summary|owner|reporter)]]

  ==== Full rows ====
  In ''table'' format you can also have full rows by using ''rows=<field>'' like below:

  {{{
  [[TicketQuery(max=3,status=closed,order=id,desc=1,format=table,col=resolution|summary|owner|reporter,rows=description)]]
  }}}

  This is displayed as:
  [[TicketQuery(max=3,status=closed,order=id,desc=1,format=table,col=resolution|summary|owner|reporter,rows=description)]]


  === Query Language ===

  `query:` TracLinks and the `[[TicketQuery]]` macro both use a mini “query language” for specifying query filters. Basically, the filters are separated by ampersands (`&`). Each filter then consists of the ticket field name, an operator, and one or more values. More than one value are separated by a pipe (`|`), meaning that the filter matches any of the values. To include a litteral `&` or `|` in a value, escape the character with a backslash (`\`).

  The available operators are:
  || '''`=`''' || the field content exactly matches the one of the values ||
  || '''`~=`''' || the field content contains one or more of the values ||
  || '''`^=`''' || the field content starts with one of the values ||
  || '''`$=`''' || the field content ends with one of the values ||

  All of these operators can also be negated:
  || '''`!=`''' || the field content matches none of the values ||
  || '''`!~=`''' || the field content does not contain any of the values ||
  || '''`!^=`''' || the field content does not start with any of the values ||
  || '''`!$=`''' || the field content does not end with any of the values ||

  The date fields `created` and `modified` can be constrained by using the `=` operator and specifying a value containing two dates separated by two dots (`..`). Either end of the date range can be left empty, meaning that the corresponding end of the range is open. The date parser understands a few natural date specifications like "3 weeks ago", "last month" and "now", as well as Bugzilla-style date specifications like "1d", "2w", "3m" or "4y" for 1 day, 2 weeks, 3 months and 4 years, respectively. Spaces in date specifications can be left out to avoid having to quote the query string. 
  || '''`created=2007-01-01..2008-01-01`''' || query tickets created in 2007 ||
  || '''`created=lastmonth..thismonth`''' || query tickets created during the previous month ||
  || '''`modified=1weekago..`''' || query tickets that have been modified in the last week ||
  || '''`modified=..30daysago`''' || query tickets that have been inactive for the last 30 days ||

  ----
  See also: TracTickets, TracReports, TracGuide


name: TracTicketsCustomFields
author: trac
ipnr: 127.0.0.1
text:
  = Custom Ticket Fields =
  Trac supports adding custom, user-defined fields to the ticket module. Using custom fields, you can add typed, site-specific properties to tickets.

  == Configuration ==
  Configuring custom ticket fields is done in the [wiki:TracIni trac.ini] file. All field definitions should be under a section named `[ticket-custom]`.

  The syntax of each field definition is:
  {{{
   FIELD_NAME = TYPE
   (FIELD_NAME.OPTION = VALUE)
   ...
  }}}
  The example below should help to explain the syntax.

  === Available Field Types and Options ===
   * '''text''': A simple (one line) text field.
     * label: Descriptive label.
     * value: Default value.
     * order: Sort order placement. (Determines relative placement in forms with respect to other custom fields.)
     * format: Either `plain` for plain text or `wiki` to interpret the content as WikiFormatting. (''since 0.11.3'')
   * '''checkbox''': A boolean value check box.
     * label: Descriptive label.
     * value: Default value (0 or 1).
     * order: Sort order placement.
   * '''select''': Drop-down select box. Uses a list of values.
     * label: Descriptive label.
     * options: List of values, separated by '''|''' (vertical pipe).
     * value: Default value (one of the values from options).
     * order: Sort order placement.
   * '''radio''': Radio buttons. Essentially the same as '''select'''.
     * label: Descriptive label.
     * options: List of values, separated by '''|''' (vertical pipe).
     * value: Default value (one of the values from options).
     * order: Sort order placement.
   * '''textarea''': Multi-line text area.
     * label: Descriptive label.
     * value: Default text.
     * cols: Width in columns.
     * rows: Height in lines.
     * order: Sort order placement.
     * format: Either `plain` for plain text or `wiki` to interpret the content as WikiFormatting. (''since 0.11.3'')

  === Sample Config ===
  {{{
  [ticket-custom]

  test_one = text
  test_one.label = Just a text box

  test_two = text
  test_two.label = Another text-box
  test_two.value = Default [mailto:joe@nospam.com owner]
  test_two.format = wiki

  test_three = checkbox
  test_three.label = Some checkbox
  test_three.value = 1

  test_four = select
  test_four.label = My selectbox
  test_four.options = one|two|third option|four
  test_four.value = two

  test_five = radio
  test_five.label = Radio buttons are fun
  test_five.options = uno|dos|tres|cuatro|cinco
  test_five.value = dos

  test_six = textarea
  test_six.label = This is a large textarea
  test_six.value = Default text
  test_six.cols = 60
  test_six.rows = 30
  }}}

  ''Note: To make entering an option for a `select` type field optional, specify a leading `|` in the `fieldname.options` option.''

  === Reports Involving Custom Fields ===

  Custom ticket fields are stored in the `ticket_custom` table, not in the `ticket` table. So to display the values from custom fields in a report, you will need a join on the 2 tables. Let's use an example with a custom ticket field called `progress`.

  {{{
  #!sql
  SELECT p.value AS __color__,
     id AS ticket, summary, owner, c.value AS progress
    FROM ticket t, enum p, ticket_custom c
    WHERE status IN ('assigned') AND t.id = c.ticket AND c.name = 'progress'
  AND p.name = t.priority AND p.type = 'priority'
    ORDER BY p.value
  }}}
  '''Note''' that this will only show tickets that have progress set in them, which is '''not the same as showing all tickets'''. If you created this custom ticket field ''after'' you have already created some tickets, they will not have that field defined, and thus they will never show up on this ticket query. If you go back and modify those tickets, the field will be defined, and they will appear in the query. If that's all you want, you're set.

  However, if you want to show all ticket entries (with progress defined and without), you need to use a `JOIN` for every custom field that is in the query.
  {{{
  #!sql
  SELECT p.value AS __color__,
     id AS ticket, summary, component, version, milestone, severity,
     (CASE status WHEN 'assigned' THEN owner||' *' ELSE owner END) AS owner,
     time AS created,
     changetime AS _changetime, description AS _description,
     reporter AS _reporter,
    (CASE WHEN c.value = '0' THEN 'None' ELSE c.value END) AS progress
    FROM ticket t
       LEFT OUTER JOIN ticket_custom c ON (t.id = c.ticket AND c.name = 'progress')
       JOIN enum p ON p.name = t.priority AND p.type='priority'
    WHERE status IN ('new', 'assigned', 'reopened')
    ORDER BY p.value, milestone, severity, time
  }}}

  Note in particular the `LEFT OUTER JOIN` statement here.

  === Updating the database ===

  As noted above, any tickets created before a custom field has been defined will not have a value for that field. Here's a bit of SQL (tested with SQLite) that you can run directly on the Trac database to set an initial value for custom ticket fields. Inserts the default value of 'None' into a custom field called 'request_source' for all tickets that have no existing value:

  {{{
  #!sql
  INSERT INTO ticket_custom
     (ticket, name, value)
     SELECT 
        id AS ticket,
        'request_source' AS name,
        'None' AS value
     FROM ticket 
     WHERE id NOT IN (
        SELECT ticket FROM ticket_custom
     );
  }}}

  If you added multiple custom fields at different points in time, you should be more specific in the subquery on table {{{ticket}}} by adding the exact custom field name to the query:

  {{{
  #!sql
  INSERT INTO ticket_custom
     (ticket, name, value)
     SELECT 
        id AS ticket,
        'request_source' AS name,
        'None' AS value
     FROM ticket 
     WHERE id NOT IN (
        SELECT ticket FROM ticket_custom WHERE name = 'request_source'
     );
  }}}

  ----
  See also: TracTickets, TracIni


name: TracFastCgi
author: trac
ipnr: 127.0.0.1
text:
  = Trac with FastCGI =

  [http://www.fastcgi.com/ FastCGI] interface allows Trac to remain resident much like with [wiki:TracModPython mod_python]. It is faster than external CGI interfaces which must start a new process for each request. However, unlike mod_python, FastCGI supports [http://httpd.apache.org/docs/suexec.html Apache SuEXEC], i.e. run with different permissions than web server. Additionally, it is supported by much wider variety of web servers.

  '''Note for Windows:''' Trac's FastCGI does not run under Windows, as Windows does not implement `Socket.fromfd`, which is used by `_fcgi.py`. If you want to connect to IIS, you may want to try [trac:TracOnWindowsIisAjp AJP].

  == Simple Apache configuration ==

  There are two FastCGI modules commonly available for Apache: `mod_fastcgi` and
  `mod_fcgid` (preferred). The latter is more up-to-date.

  ==== setup with `mod_fastcgi` ====
  `mod_fastcgi` uses `FastCgiIpcDir` and `FastCgiConfig` directives that should be added to an appropriate Apache configuration file:
  {{{
  # Enable fastcgi for .fcgi files
  # (If you're using a distro package for mod_fcgi, something like
  # this is probably already present)
  <IfModule mod_fastcgi.c>
     AddHandler fastcgi-script .fcgi
     FastCgiIpcDir /var/lib/apache2/fastcgi 
  </IfModule>
  LoadModule fastcgi_module /usr/lib/apache2/modules/mod_fastcgi.so
  }}}
  Setting `FastCgiIpcDir` is optional if the default is suitable. Note that the `LoadModule` line must be after the `IfModule` group.

  Configure `ScriptAlias` or similar options as described in TracCgi, but
  calling `trac.fcgi` instead of `trac.cgi`.

  You can set up the `TRAC_ENV` as an overall default:
  {{{
  FastCgiConfig -initial-env TRAC_ENV=/path/to/env/trac
  }}}

  Or you can serve multiple Trac projects in a directory like:
  {{{
  FastCgiConfig -initial-env TRAC_ENV_PARENT_DIR=/parent/dir/of/projects
  }}}

  ==== setup with `mod_fcgid` ====
  Configure `ScriptAlias` (see TracCgi for details), but call `trac.fcgi`
  instead of `trac.cgi`. Note that slash at the end - it is important.
  {{{
  ScriptAlias /trac /path/to/www/trac/cgi-bin/trac.fcgi/
  }}}

  To setup Trac environment for `mod_fcgid` it is necessary to use
  `DefaultInitEnv` directive. It cannot be used in `Directory` or
  `Location` context, so if you need to support multiple projects, try
  alternative environment setup below.

  {{{
  DefaultInitEnv TRAC_ENV /path/to/env/trac/
  }}}

  ==== alternative environment setup ====
  A better method to specify path to Trac environment it to embed the path
  into `trac.fcgi` script itself. That doesn't require configuration of server
  environment variables, works for both FastCgi modules
  (and for [http://www.lighttpd.net/ lighttpd] and CGI as well):
  {{{
  import os
  os.environ['TRAC_ENV'] = "/path/to/projectenv"
  }}}
  or
  {{{
  import os
  os.environ['TRAC_ENV_PARENT_DIR'] = "/path/to/project/parent/dir"
  }}}

  With this method different projects can be supported by using different
  `.fcgi` scripts with different `ScriptAliases`.

  See [https://coderanger.net/~coderanger/httpd/fcgi_example.conf this fcgid example config] which uses a !ScriptAlias directive with trac.fcgi with a trailing / like this:
  {{{
  ScriptAlias / /srv/tracsite/cgi-bin/trac.fcgi/
  }}}

  == Simple Cherokee Configuration ==

  The configuration on Cherokee's side is quite simple. You will only need to know that you can spawn Trac as an SCGI process.
  You can either start it manually, or better yet, automatically by letting Cherokee spawn the server whenever it is down.
  First set up an information source in cherokee-admin with a local interpreter.

  {{{
  Host:
  localhost:4433

  Interpreter:
  /usr/bin/tracd —single-env —daemonize —protocol=scgi —hostname=localhost —port=4433 /path/to/project/
  }}}

  If the port was not reachable, the interpreter command would be launched. Note that, in the definition of the information source, you will have to manually launch the spawner if you use a ''Remote host'' as ''Information source'' instead of a ''Local interpreter''.

  After doing this, we will just have to create a new rule managed by the SCGI handler to access Trac. It can be created in a new virtual server, trac.example.net for instance, and will only need two rules. The '''default''' one will use the SCGI handler associated to the previously created information source.
  The second rule will be there to serve the few static files needed to correctly display the Trac interface. Create it as ''Directory rule'' for ''/chrome/common'' and just set it to the ''Static files'' handler and with a ''Document root'' that points to the appropriate files: ''/usr/share/trac/htdocs/''

  == Simple Lighttpd Configuration ==

  The FastCGI front-end was developed primarily for use with alternative webservers, such as [http://www.lighttpd.net/ lighttpd].

  lighttpd is a secure, fast, compliant and very flexible web-server that has been optimized for high-performance
  environments.  It has a very low memory footprint compared to other web servers and takes care of CPU load.

  For using `trac.fcgi`(prior to 0.11) / fcgi_frontend.py (0.11) with lighttpd add the following to your lighttpd.conf:
  {{{
  #var.fcgi_binary="/usr/bin/python /path/to/fcgi_frontend.py" # 0.11 if installed with easy_setup, it is inside the egg directory
  var.fcgi_binary="/path/to/cgi-bin/trac.fcgi" # 0.10 name of prior fcgi executable
  fastcgi.server = ("/trac" =>
     
                     ("trac" =>
                       ("socket" => "/tmp/trac-fastcgi.sock",
                        "bin-path" => fcgi_binary,
                        "check-local" => "disable",
                        "bin-environment" =>
                          ("TRAC_ENV" => "/path/to/projenv")
                       )
                     )
                   )
  }}}

  Note that you will need to add a new entry to `fastcgi.server` for each separate Trac instance that you wish to run. Alternatively, you may use the `TRAC_ENV_PARENT_DIR` variable instead of `TRAC_ENV` as described above,
  and you may set one of the two in `trac.fcgi` instead of in `lighttpd.conf`
  using `bin-environment` (as in the section above on Apache configuration).

  Note that lighttpd has a bug related to 'SCRIPT_NAME' and 'PATH_INFO' when the uri of fastcgi.server is '/' instead of '/trac' in this example, see #Trac2418. This should be fixed since lighttpd 1.4.23, and you may need to add `"fix-root-scriptname" => "enable"` as parameter of fastcgi.server.

  For using two projects with lighttpd add the following to your `lighttpd.conf`:
  {{{
  fastcgi.server = ("/first" =>
                     ("first" =>
                      ("socket" => "/tmp/trac-fastcgi-first.sock",
                       "bin-path" => fcgi_binary,
                       "check-local" => "disable",
                       "bin-environment" =>
                         ("TRAC_ENV" => "/path/to/projenv-first")
                      )
                    ),
                    "/second" =>
                      ("second" =>
                      ("socket" => "/tmp/trac-fastcgi-second.sock",
                       "bin-path" => fcgi_binary,
                       "check-local" => "disable",
                       "bin-environment" =>
                         ("TRAC_ENV" => "/path/to/projenv-second")
                      )
                    )
                  )
  }}}
  Note that field values are different.  If you prefer setting the environment
  variables in the `.fcgi` scripts, then copy/rename `trac.fcgi`, e.g., to
  `first.fcgi` and `second.fcgi`, and reference them in the above settings.
  Note that the above will result in different processes in any event, even
  if both are running from the same `trac.fcgi` script.
  {{{
  #!div class=important
  '''Note''' It's very important the order on which server.modules are loaded, if mod_auth is not loaded '''BEFORE''' mod_fastcgi, then the server will fail to authenticate the user.
  }}}
  For authentication you should enable mod_auth in lighttpd.conf 'server.modules', select auth.backend and auth rules:
  {{{
  server.modules              = (
  ...
    "mod_auth",
  ...
  )

  auth.backend               = "htpasswd"

  # Separated password files for each project
  # See "Conditional Configuration" in
  # http://trac.lighttpd.net/trac/file/branches/lighttpd-merge-1.4.x/doc/configuration.txt

  $HTTP["url"] =~ "^/first/" {
    auth.backend.htpasswd.userfile = "/path/to/projenv-first/htpasswd.htaccess"
  }
  $HTTP["url"] =~ "^/second/" {
    auth.backend.htpasswd.userfile = "/path/to/projenv-second/htpasswd.htaccess"
  }

  # Enable auth on trac URLs, see
  # http://trac.lighttpd.net/trac/file/branches/lighttpd-merge-1.4.x/doc/authentication.txt

  auth.require = ("/first/login" =>
                  ("method"  => "basic",
                   "realm"   => "First project",
                   "require" => "valid-user"
                  ),
                  "/second/login" =>
                  ("method"  => "basic",
                   "realm"   => "Second project",
                   "require" => "valid-user"
                  )
                 )


  }}}
  Note that lighttpd (I use version 1.4.3) stopped if password file doesn't exist.

  Note that lighttpd doesn't support 'valid-user' in versions prior to 1.3.16.

  Conditional configuration is also useful for mapping static resources, i.e. serving out images and CSS directly instead of through FastCGI:
  {{{
  # Aliasing functionality is needed
  server.modules += ("mod_alias")

  # Setup an alias for the static resources
  alias.url = ("/trac/chrome/common" => "/usr/share/trac/htdocs")

  # Use negative lookahead, matching all requests that ask for any resource under /trac, EXCEPT in
  # /trac/chrome/common, and use FastCGI for those
  $HTTP["url"] =~ "^/trac(?!/chrome/common)" {
  # Even if you have other fastcgi.server declarations for applications other than Trac, do NOT use += here
  fastcgi.server = ("/trac" =>
                     ("trac" =>
                       ("socket" => "/tmp/trac-fastcgi.sock",
                        "bin-path" => fcgi_binary,
                        "check-local" => "disable",
                        "bin-environment" =>
                          ("TRAC_ENV" => "/path/to/projenv")
                       )
                     )
                   )
  }
  }}}
  The technique can be easily adapted for use with multiple projects by creating aliases for each of them, and wrapping the fastcgi.server declarations inside conditional configuration blocks.
  Also there is another way to handle multiple projects and it's to use TRAC_ENV_PARENT_DIR instead of TRAC_ENV and use global auth, let's see an example:
  {{{
  #  This is for handling multiple projects
    alias.url       = ( "/trac/" => "/path/to/trac/htdocs/" )

    fastcgi.server += ("/projects"  =>
                        ("trac" =>
                          (
                            "socket" => "/tmp/trac.sock",
                            "bin-path" => fcgi_binary,
                            "check-local" => "disable",
                            "bin-environment" =>
                              ("TRAC_ENV_PARENT_DIR" => "/path/to/parent/dir/of/projects/" )
                          )
                        )
                      )
  #And here starts the global auth configuration
    auth.backend = "htpasswd"
    auth.backend.htpasswd.userfile = "/path/to/unique/htpassword/file/trac.htpasswd"
    $HTTP["url"] =~ "^/projects/.*/login$" {
      auth.require = ("/" =>
                       (
                         "method"  => "basic",
                         "realm"   => "trac",
                         "require" => "valid-user"
                       )
                     )
    }
  }}}

  Changing date/time format also supported by lighttpd over environment variable LC_TIME
  {{{
  fastcgi.server = ("/trac" =>
                     ("trac" =>
                       ("socket" => "/tmp/trac-fastcgi.sock",
                        "bin-path" => fcgi_binary,
                        "check-local" => "disable",
                        "bin-environment" =>
                          ("TRAC_ENV" => "/path/to/projenv",
                          "LC_TIME" => "ru_RU")
                       )
                     )
                   )
  }}}
  For details about languages specification see [trac:TracFaq TracFaq] question 2.13.

  Other important information like [http://trac.lighttpd.net/trac/wiki/TracInstall this updated TracInstall page], [wiki:TracCgi#MappingStaticResources and this] are useful for non-fastcgi specific installation aspects.

  If you use trac-0.9, read [http://lists.edgewall.com/archive/trac/2005-November/005311.html about small bug]

  Relaunch lighttpd, and browse to `http://yourhost.example.org/trac` to access Trac.

  Note about running lighttpd with reduced permissions:

    If nothing else helps and trac.fcgi doesn't start with lighttpd settings `server.username = "www-data"`, `server.groupname = "www-data"`, then in the `bin-environment` section set `PYTHON_EGG_CACHE` to the home directory of `www-data` or some other directory accessible to this account for writing.


  == Simple !LiteSpeed Configuration ==

  The FastCGI front-end was developed primarily for use with alternative webservers, such as [http://www.litespeedtech.com/ LiteSpeed].

  !LiteSpeed web server is an event-driven asynchronous Apache replacement designed from the ground-up to be secure, scalable, and operate with minimal resources. !LiteSpeed can operate directly from an Apache config file and is targeted for business-critical environments.

  === Setup ===

   1. Please make sure you have first have a working install of a Trac project. Test install with “tracd” first.

   2. Create a Virtual Host for this setup. From now on we will refer to this vhost as !TracVhost. For this tutorial we will be assuming that your trac project will be accessible via:

  {{{
  http://yourdomain.com/trac/
  }}}

   3. Go “!TracVhost → External Apps” tab and create a new “External Application”.

  {{{
  Name: MyTracFCGI	
  Address: uds://tmp/lshttpd/mytracfcgi.sock
  Max Connections: 10
  Environment: TRAC_ENV=/fullpathto/mytracproject/ <--- path to root folder of trac project
  Initial Request Timeout (secs): 30
  Retry Timeout (secs): 0
  Persistent Connection	Yes
  Connection Keepalive Timeout: 30
  Response Bufferring: No	
  Auto Start: Yes
  Command: /usr/share/trac/cgi-bin/trac.fcgi  <--- path to trac.fcgi
  Back Log: 50
  Instances: 10
  }}}

   4. Optional. If you need to use htpasswd based authentication. Go to “!TracVhost → Security” tab and create a new security “Realm”.

  {{{
  DB Type: Password File
  Realm Name: MyTracUserDB               <--- any name you wish and referenced later
  User DB Location: /fullpathto/htpasswd <--- path to your htpasswd file
  }}}

  If you don’t have a htpasswd file or don’t know how to create the entries within one, go to http://sherylcanter.com/encrypt.php, to generate the user:password combos.

   5. Go to “!PythonVhost → Contexts” and create a new “FCGI Context”.

  {{{
  URI: /trac/                              <--- URI path to bind to python fcgi app we created	
  Fast CGI App: [VHost Level] MyTractFCGI  <--- select the trac fcgi extapp we just created
  Realm: TracUserDB                        <--- only if (4) is set. select realm created in (4)
  }}}

   6. Modify `/fullpathto/mytracproject/conf/trac.ini`

  {{{
  #find/set base_rul, url, and link variables
  base_url = http://yourdomain.com/trac/ <--- base url to generate correct links to
  url = http://yourdomain.com/trac/      <--- link of project
  link = http://yourdomain.com/trac/     <--- link of graphic logo
  }}}

   7. Restart !LiteSpeed, “lswsctrl restart”, and access your new Trac project at: 

  {{{
  http://yourdomain.com/trac/
  }}}

  == Simple Nginx Configuration ==

   1. Nginx configuration snippet - confirmed to work on 0.6.32
  {{{
      server {
          listen       10.9.8.7:443;
          server_name  trac.example;

          ssl                  on;
          ssl_certificate      /etc/ssl/trac.example.crt;
          ssl_certificate_key  /etc/ssl/trac.example.key;

          ssl_session_timeout  5m;

          ssl_protocols  SSLv2 SSLv3 TLSv1;
          ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
          ssl_prefer_server_ciphers   on;

          # (Or ``^/some/prefix/(.*)``.
          if ($uri ~ ^/(.*)) {
               set $path_info /$1;
          }

          # You can copy this whole location to ``location [/some/prefix]/login``
          # and remove the auth entries below if you want Trac to enforce
          # authorization where appropriate instead of needing to authenticate
          # for accessing the whole site.
          # (Or ``location /some/prefix``.)
          location / {
              auth_basic            "trac realm";
              auth_basic_user_file /home/trac/htpasswd;

              # socket address
              fastcgi_pass   unix:/home/trac/run/instance.sock;

              # python - wsgi specific
              fastcgi_param HTTPS on;

              ## WSGI REQUIRED VARIABLES
              # WSGI application name - trac instance prefix.
  	    # (Or ``fastcgi_param  SCRIPT_NAME  /some/prefix``.)
              fastcgi_param  SCRIPT_NAME        "";
              fastcgi_param  PATH_INFO          $path_info;

              ## WSGI NEEDED VARIABLES - trac warns about them
              fastcgi_param  REQUEST_METHOD     $request_method;
              fastcgi_param  SERVER_NAME        $server_name;
              fastcgi_param  SERVER_PORT        $server_port;
              fastcgi_param  SERVER_PROTOCOL    $server_protocol;
              fastcgi_param  QUERY_STRING     $query_string;

              # for authentication to work
              fastcgi_param  AUTH_USER          $remote_user;
              fastcgi_param  REMOTE_USER        $remote_user;
          }
      }
  }}}

   2. Modified trac.fcgi:

  {{{
  #!/usr/bin/env python
  import os
  sockaddr = '/home/trac/run/instance.sock'
  os.environ['TRAC_ENV'] = '/home/trac/instance'

  try:
       from trac.web.main import dispatch_request
       import trac.web._fcgi

       fcgiserv = trac.web._fcgi.WSGIServer(dispatch_request, 
            bindAddress = sockaddr, umask = 7)
       fcgiserv.run()

  except SystemExit:
      raise
  except Exception, e:
      print 'Content-Type: text/plain\r\n\r\n',
      print 'Oops...'
      print
      print 'Trac detected an internal error:'
      print
      print e
      print
      import traceback
      import StringIO
      tb = StringIO.StringIO()
      traceback.print_exc(file=tb)
      print tb.getvalue()

  }}}

   3. reload nginx and launch trac.fcgi like that:

  {{{
  trac@trac.example ~ $ ./trac-standalone-fcgi.py 
  }}}

  The above assumes that:
   * There is a user named 'trac' for running trac instances and keeping trac environments in its home directory.
   * `/home/trac/instance` contains a trac environment
   * `/home/trac/htpasswd` contains authentication information
   * `/home/trac/run` is owned by the same group the nginx runs under
    * and if your system is Linux the `/home/trac/run` has setgid bit set (`chmod g+s run`)
    * and patch from ticket #T7239 is applied, or you'll have to fix the socket file permissions every time

  Unfortunately nginx does not support variable expansion in fastcgi_pass directive. 
  Thus it is not possible to serve multiple trac instances from one server block. 

  If you worry enough about security, run trac instances under separate users. 

  Another way to run trac as a FCGI external application is offered in ticket #T6224

  ----
  See also:  TracGuide, TracInstall, [wiki:TracModWSGI ModWSGI], [wiki:TracCgi CGI], [wiki:TracModPython ModPython], [trac:TracNginxRecipe TracNginxRecipe]


