Quick Search:

View

Revision:
Expand:  
Changeset: MAIN:root:20071002121801

Diff

Diff from 1.1 to:

Annotations

Annotate by Age | Author | Mixed | None
/fisheye/browse/pcc/CVSROOT/commit_prep

Annotated File View

root
1.1
1 #! /usr/pkg/bin/perl
2 # -*-Perl-*-
3 #
4 # Copyright (c) 2006 The NetBSD Foundation, Inc.
5 # All rights reserved.
6 #
7 # Redistribution and use in source and binary forms, with or without
8 # modification, are permitted provided that the following conditions
9 # are met:
10 # 1. Redistributions of source code must retain the above copyright
11 #    notice, this list of conditions and the following disclaimer.
12 # 2. Redistributions in binary form must reproduce the above copyright
13 #    notice, this list of conditions and the following disclaimer in the
14 #    documentation and/or other materials provided with the distribution.
15 # 3. All advertising materials mentioning features or use of this software
16 #    must display the following acknowledgement:
17 #        This product includes software developed by the NetBSD
18 #        Foundation, Inc. and its contributors.
19 # 4. Neither the name of The NetBSD Foundation nor the names of its
20 #    contributors may be used to endorse or promote products derived
21 #    from this software without specific prior written permission.
22 #
23 # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
24 # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
25 # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
26 # PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
27 # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
28 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
29 # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
30 # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
31 # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
32 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33 # POSSIBILITY OF SUCH DAMAGE.
34 #
35 #ident  "@(#)cvs/contrib:$NetBSD: commit_prep,v 1.9 2006/02/16 15:55:29 christos Exp $"
36 #
37 # Perl filter to handle pre-commit checking of files.  This program
38 # records the last directory where commits will be taking place for
39 # use by the log_accum.pl script.  Also check for unresolved merge
40 # conflicts.
41 #
42 # Contributed by David Hampton <hampton@cisco.com>
43 # Hacked on lots by Greg A. Woods <woods@web.net>
44 # Further hacked by Charles M. Hannum <mycroft@netbsd.org>
45
46 #
47 #       Configurable options
48 #
49
50 # Check each file (except dot files)
51 #
52 $check_conflicts = 0;
53
54 # Constants (remember to protect strings from RCS keyword substitution)
55 #
56 $LAST_FILE     = "/tmp/#cvs.lastdir"; # must match name in log_accum.pl
57
58 #
59 #       Subroutines
60 #
61
62 sub write_line {
63     local($filename, $line) = @_;
64
65     open(FILE, ">$filename") || die("Cannot open $filename, stopped");
66     print(FILE $line, "\n");
67     close(FILE);
68 }
69
70 sub check_conflicts {
71     local($directory, $filename) = @_;
72
73     if (open(FILE, "<$filename")) {
74         while (<FILE>) {
75             if (/^<<<<<<<$/ || /^>>>>>>>$/) {
76                 print $directory . "/" . $filename . ":\n";
77                 print "  This file contains unresolved merge conflicts.\n";
78                 return(1);
79             }
80         }
81     }
82     close(FILE);
83     return(0);
84 }
85
86 #
87 #       Main Body       
88 #
89
90 $id = getpgrp();                # You *must* use a shell that does setpgrp()!
91
92 # Record the directory for later use by the log_accumulate stript.
93 #
94 $record_directory = 0;
95
96 # Get the root of the CVS tree.
97 #
98 $cvsroot = $ENV{'CVSROOT'};
99 #printf "root = " . $cvsroot . "\n";
100
101 # parse command line arguments
102 #
103 while (@ARGV) {
104     $arg = shift @ARGV;
105
106     if ($arg eq '-d') {
107         $debug = 1;
108         print STDERR "Debug turned on...\n";
109     } elsif ($arg eq '-c') {
110         $check_conflicts = 1;
111     } elsif ($arg eq '-r') {
112         $record_directory = 1;
113     } else {
114         push(@files, split(' ', $arg));
115     }
116 }
117
118 $directory = shift @files;
119 $directory =~ s,$cvsroot/,,;
120
121 if ($debug != 0) {
122     print STDERR "dir   - ", $directory, "\n";
123     print STDERR "files - ", join(":", @files), "\n";
124     print STDERR "id    - ", $id, "\n";
125 }
126
127 # Now check each file name passed in for unresolved merge conflicts.
128 #
129 if ($check_conflicts != 0) {
130     $failed = 0;
131     foreach $filename (@files) {
132         $failed += &check_conflicts($directory, $filename);
133     }
134     if ($failed != 0) {
135         exit(1);
136     }
137 }
138
139 # Record this directory as the last one checked.  This will be used
140 # by the log_accumulate script to determine when it is processing
141 # the final directory of a multi-directory commit.
142 #
143 if ($record_directory != 0) {
144     &write_line("$LAST_FILE.$id", $directory);
145 }
146
147 exit(0);
FishEye: Open Source License registered to PCC.
Your maintenance has expired. You can renew your license at http://www.atlassian.com/fisheye/renew
Atlassian FishEye, CVS analysis. (Version:1.6.3 Build:build-336 2008-11-04) - Administration - Page generated 2014-09-16 06:56 +0200