Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 24 Mar 2003 23:45:13 +0100
From:      "Peter Klausner" <peter.klausner@systor.com>
To:        freebsd-cvsweb@FreeBSD.org
Subject:   More complex links to PR database
Message-ID:  <OF1F74A825.C2FEAA63-ON41256CF3.007CFD4F-41256CF3.007CFD9D@systor.com>

next in thread | raw e-mail | index | archive | help
Cvsweb has a feature to link the comment text to
a (web-based) problem report database like GNAT.

Below is a small patch, which allows you to configure
a _routine_ to link to your PR/CR/MR/whatever system.
The example pr_link() implements the existing behaviour
plus links to T-Wiki pages.

Of course, it is more difficult to configure such a routine,
than the existing variables.  But I guess, that admins,
who actually use this feature, will appreciate the flexibility.

HTH + Bye
Peter Klausner



Index: cvsweb.conf
===================================================================
RCS file: /var/cvs/cgi-bin/cvsweb.conf,v
retrieving revision 1.3
diff -c -r1.3 cvsweb.conf
*** cvsweb.conf 2003/03/14 13:55:56     1.3
--- cvsweb.conf 2003/03/17 17:42:37
***************
*** 9,15 ****
  #          based on work by Bill Fenner  <fenner@FreeBSD.org>
  #
  # $FreeBSD: projects/cvsweb/cvsweb.conf,v 1.43 2002/11/16 00:01:01 scop
Exp $
! # $Id: cvsweb.conf,v 1.3 2003/03/14 13:55:56 peter Exp $
  # $Idaemons: /home/cvs/cvsweb/cvsweb.conf,v 1.27 2001/08/01 09:48:39 knu
Exp $
  #
  ###
--- 9,15 ----
  #          based on work by Bill Fenner  <fenner@FreeBSD.org>
  #
  # $FreeBSD: projects/cvsweb/cvsweb.conf,v 1.43 2002/11/16 00:01:01 scop
Exp $
! # $Id: cvsweb.conf,v 1.4 2003/03/14 18:01:40 peter Exp $
  # $Idaemons: /home/cvs/cvsweb/cvsweb.conf,v 1.27 2001/08/01 09:48:39 knu
Exp $
  #
  ###
***************
*** 66,94 ****
  # you enter the page
  $cvstreedefault = $CVSrepositories[2 * 0];    # The first one

- ##############
- # Bug tracking system options
- # ("PR" means Problem Report, as in GNATS)
- ##############
- #@prcategories = qw(
- #    advocacy
- #    alpha
- #    bin
- #    conf
- #    docs
- #    gnu
- #    i386
- #    kern
- #    misc
- #    pending
- #    ports
- #    sparc
- #);

! #
! #$prcgi = "http://www.FreeBSD.org/cgi/query-pr.cgi?pr=%s";
  #
! #$prkeyword = "PR";

  ##############
  # Manual gateway
--- 66,90 ----
  # you enter the page
  $cvstreedefault = $CVSrepositories[2 * 0];    # The first one


! # Bug tracking system options:
! # Define a subroutine to scan cvs comment for linkable patterns.
  #
! sub pr_link
! {
!   my $comment = $_[0];        # return this comment with links
!
!   $comment =~ s|\bPR[#: ]*(\d+)\b|<a href=/cgi-bin/pr.cgi?$1>PR#$1</a>|g;
!   $comment =~ s(\b(advocacy|alpha|bin|conf|docs|gnu|i386)/(\d+)\b)
!                (<a href=/cgi-bin/pr.cgi?$2>$1/$2</a>)g;
!
!   $comment =~ m/^(.*?)([A-Z][A-Za-z0-9_-]+)(.*)$/s;   # a wiki word?
!   return "$1<a href=/twiki/view/Aproject/$2>$2</a>$3"
!                                       if -f
"/var/twiki/data/Aproject/$2.txt";
!   return "$1<a href=/twiki/view/Bproject/$2>$2</a>$3"
!                                       if -f
"/var/twiki/data/Bproject/$2.txt";
!   return $comment;
! }
!

  ##############
  # Manual gateway


Index: cvsweb.cgi
===================================================================
RCS file: /var/cvs/cgi-bin/cvsweb.cgi,v
retrieving revision 1.4
retrieving revision 1.5
diff -c -r1.4 -r1.5
*** cvsweb.cgi  2003/03/14 13:55:56     1.4
--- cvsweb.cgi  2003/03/14 18:01:40     1.5
***************
*** 47,53 ****
  #
  # $Zeller: cvsweb.cgi,v 1.112 2001/07/24 13:03:16 hzeller Exp $
  # $FreeBSD: projects/cvsweb/cvsweb.cgi,v 1.137 2002/11/24 16:29:13 scop
Exp $
! # @(#)$Id: cvsweb.cgi,v 1.4 2003/03/14 13:55:56 peter Exp $
  #
  ###

--- 47,53 ----
  #
  # $Zeller: cvsweb.cgi,v 1.112 2001/07/24 13:03:16 hzeller Exp $
  # $FreeBSD: projects/cvsweb/cvsweb.cgi,v 1.137 2002/11/24 16:29:13 scop
Exp $
! # @(#)$Id: cvsweb.cgi,v 1.5 2003/03/14 18:01:40 peter Exp $
  #
  ###

***************
*** 498,506 ****
  }
  undef $config_cvstree;

- $re_prcategories  = '(?:' . join ('|', @prcategories) . ')' if
@prcategories;
- $re_prkeyword     = quotemeta($prkeyword) if defined($prkeyword);
- $prcgi           .= '%s' if defined($prcgi) && $prcgi !~ /%s/;

  $fullname         = "$cvsroot/$where";
  $mimetype         = &getMimeTypeFromSuffix($fullname);
--- 498,503 ----
***************
*** 1256,1295 ****
       >egix;
    } $_;

!   if ($extra) {

!     # get PR #'s as link: "PR#nnnn" "PR: nnnn, ..." "PR nnnn, ..."
"bin/nnnn"
!     if (defined($prcgi) && defined($re_prkeyword)) {
!       my $prev;
!
!       do {
!         $prev = $_;
!
!         $_ = htmlify_sub {
!           s{
!             (\b$re_prkeyword[:\#]?\s*
!              (?:
!               \#?
!               \d+[,\s]\s*
!              )*
!              \#?)
!             (\d+)\b
!            }{
!              $1 . &link($2, sprintf($prcgi, $2))
!            }egix;
!         } $_;
!       } while ($_ ne $prev);
!
!       if (defined($re_prcategories)) {
!         $_ = htmlify_sub {
!           s{
!             (\b$re_prcategories/(\d+)\b)
!            }{
!              &link($1, sprintf($prcgi, $2))
!            }egox;
!         } $_;
!       }
!     }

      # get manpage specs as link: "foo.1" "foo(1)"
      if (defined($mancgi)) {
--- 1253,1261 ----
       >egix;
    } $_;

!   $_ = pr_link($_) or die "pr_link fehlt!?";

!   if ($extra) {

      # get manpage specs as link: "foo.1" "foo(1)"
      if (defined($mancgi)) {






To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-cvsweb" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?OF1F74A825.C2FEAA63-ON41256CF3.007CFD4F-41256CF3.007CFD9D>