- #!/usr/bin/perl -w
- # -*- perl -*-
- use P4CGI ;
- use strict ;
- #
- #################################################################
- # CONFIGURATION INFORMATION
- # All config info should be in P4CGI.pm
- #
- #################################################################
- #
- # P4 change browser
- # View list of changes for selected part of depot
- #
- #################################################################
- # Get file spec argument
- my $filespec = P4CGI::cgi()->param("FSPC") ;
- $filespec = "//..." unless defined $filespec ;
- # Get label argument
- my $label = P4CGI::cgi()->param("LABEL") ;
- if(defined $label and $label eq "-") { $label = undef ; } ;
- # Get spec of files to exclude from list of changes
- my $exfiles = P4CGI::cgi()->param("EXFSPC") ;
- if(defined $exfiles and $exfiles eq "-") { $exfiles = undef ; } ;
- # Get label to exclude
- my $exlabel = P4CGI::cgi()->param("EXLABEL") ;
- if(defined $exlabel and $exlabel eq "-") { $exlabel = undef ; } ;
- # Get status
- my $status = P4CGI::cgi()->param("STATUS") ;
- unless(defined $status) { $status = "submitted" ; } ;
- # Get max changes to show
- my $maxchanges = P4CGI::cgi()->param("MAXCH") ;
- if(defined $maxchanges && $maxchanges =~ /^\d+$/) {
- $maxchanges = "-m $maxchanges" ;
- }
- else {
- $maxchanges = "" ;
- }
- # Assume filespec is a file spec, set title
- my $title = "Changes for $filespec" ;
- if(defined $label) {
- if($filespec eq "//...") {
- $title ="Changes for label <code>$label</code>";
- $filespec .= "\@$label" ;
- }
- else {
- $title .= " and label $label" ;
- $filespec =~ s/ /@$label / ;
- $filespec .= "\@$label" ;
- }
- }
- # Get list of changes to exclude
- my @exclude;
- if(defined $exlabel) {
- if(defined $exfiles) {
- $exfiles .= "\@$exlabel" ;
- }
- else {
- $exfiles = "//...\@$exlabel" ;
- }
- }
- local *P4 ;
- if(defined $exfiles) {
- &P4CGI::p4call(*P4,"changes $exfiles") ;
- $title .= " <br>excluding changes in <code>$exfiles</code>" ;
- while(<P4>) {
- /^Change (\d+)/ ;
- push @exclude,$1 ;
- }
- close P4 ;
- push @exclude,0 ;
- }
- if($status eq "pending") {
- $title = "Pending changes" ;
- $filespec = "" ;
- } ;
- &P4CGI::p4call(*P4,"changes -l $maxchanges -s $status $filespec") ;
- "",
- &P4CGI::start_page($title,
- &P4CGI::ul_list("<b>Change No.</b> -- see details of change")) ;
- my $nextToExclude = shift @exclude ;
- if(!defined $nextToExclude) { $nextToExclude = 0 ; } ;
- my ( $change, $misc ) ;
- my $skipped=0 ;
- my $skip;
- print "<dl>" ;
- while (<P4>) {
- $_ = &P4CGI::fixSpecChar($_) ;
- if(/^Change (\d+) (.*)$/) {
- $skip="no" ;
- ( $change, $misc ) = ($1,$2) ;
- while($nextToExclude > $change) {
- if($skipped>0) {
- "<dt><font color=green><hr>\n",
- "$skipped change" ,
- $skipped > 1 ? "s":"",
- "<hr></font>\n";
- };
- $skipped=0 ;
- "<dt>",
- &P4CGI::ahref("-url",P4CGI::CHV_URL(),
- "CH=$nextToExclude",
- "<font color=red>Change $nextToExclude only in $exfiles</font>"),
- "<dd> ";
- $nextToExclude = shift @exclude ;
- }
- if ($change == $nextToExclude) {
- $nextToExclude = shift @exclude ;
- $skip="yes" ;
- $skipped++ ;
- next ;
- }
- # last if ($fromChange != 0) and ($change <= $fromChange) ;
- if($skipped>0) {
- "<dt><font color=green><hr>\n",
- "$skipped change" ,
- $skipped > 1 ? "s":"",
- "<hr></font>\n";
- }
- $skipped=0 ;
- "<dt>",
- &P4CGI::ahref("-url",P4CGI::CHV_URL(),
- "CH=$change",
- "Change $change "),
- "$misc<dd>\n";
- }
- else {
- next if $skip eq "yes";
- chop;
- print &P4CGI::magic("<tt>$_</tt><br>\n") ;
- }
- }
- close P4;
- print "</dl>\n",&P4CGI::end_page();
- #
- # That's it folks
- #
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 5093 | Hari Krishna Dara |
Populating perforce branch. I will be adding p4admin files to it. |
20 years ago | |
//guest/perforce_software/utils/p4db/P4DB_0/chb.cgi | |||||
#1 | 1885 | rmg | For posterity: Make the old version appear in a "P4DB_0" subdirectory. (I'd have called i...t 0.99, but I'm not sure it really *is* 0.99!) « |
23 years ago | |
//guest/perforce_software/utils/p4db/chb.cgi | |||||
#2 | 12 | Perforce maintenance | P4DB now browses all depot root paths, not just "//depot/...". (Note: This breaks the "...Browse depot tree" function on the main form -- will fix later.) « |
26 years ago | |
#1 | 11 | Perforce maintenance | Add Fredric Fredricson's depot browser, P4DB. | 26 years ago |