summaryrefslogtreecommitdiffstats
path: root/gnu/usr.bin/cvs/contrib/cvscheck
blob: 1c66688cbd3475920620c6c3e004b4a1e7e8e2ac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#! /bin/sh
# $Id: cvscheck,v 1.2 1992/04/10 03:04:19 berliner Exp $
#
# cvscheck - identify files added, changed, or removed 
#            in CVS working directory
#
# Contributed by Lowell Skoog <fluke!lowell@uunet.uu.net>
# 
# This program should be run in a working directory that has been
# checked out using CVS.  It identifies files that have been added,
# changed, or removed in the working directory, but not "cvs
# committed".  It also determines whether the files have been "cvs
# added" or "cvs removed".  For directories, it is only practical to
# determine whether they have been added.

name=cvscheck
changes=0

# If we can't run CVS commands in this directory
cvs status . > /dev/null 2>&1
if [ $? != 0 ] ; then

    # Bail out
    echo "$name: there is no version here; bailing out" 1>&2
    exit 1
fi

# Identify files added to working directory
for file in .* * ; do

    # Skip '.' and '..'
    if [ $file = '.' -o $file = '..' ] ; then
	continue
    fi

    # If a regular file
    if [ -f $file ] ; then
	if cvs status $file | grep -s '^From:[ 	]*New file' ; then
	    echo "file added:      $file - not CVS committed"
	    changes=`expr $changes + 1`
	elif cvs status $file | grep -s '^From:[ 	]*no entry for' ; then
	    echo "file added:      $file - not CVS added, not CVS committed"
	    changes=`expr $changes + 1`
	fi

    # Else if a directory
    elif [ -d $file -a $file != CVS.adm ] ; then

	# Move into it
	cd $file

	# If CVS commands don't work inside
	cvs status . > /dev/null 2>&1
	if [ $? != 0 ] ; then
	    echo "directory added: $file - not CVS added"
	    changes=`expr $changes + 1`
	fi

	# Move back up
	cd ..
    fi
done

# Identify changed files
changedfiles=`cvs diff | egrep '^diff' | awk '{print $3}'`
for file in $changedfiles ; do
    echo "file changed:    $file - not CVS committed"
    changes=`expr $changes + 1`
done

# Identify files removed from working directory
removedfiles=`cvs status | egrep '^File:[ 	]*no file' | awk '{print $4}'`

# Determine whether each file has been cvs removed
for file in $removedfiles ; do
    if cvs status $file | grep -s '^From:[ 	]*-' ; then
	echo "file removed:    $file - not CVS committed"
    else
	echo "file removed:    $file - not CVS removed, not CVS committed"
    fi
    changes=`expr $changes + 1`
done

exit $changes
OpenPOWER on IntegriCloud