]>
Commit | Line | Data |
---|---|---|
75153387 | 1 | #!/bin/bash |
b6534045 AL |
2 | #$Header$ |
3 | ################################################################################ | |
4 | ## | |
5 | ## Copyright 2001 Sistina Software, Inc. | |
6 | ## | |
7 | ## This is free software released under the GNU General Public License. | |
8 | ## There is no warranty for this software. See the file COPYING for | |
9 | ## details. | |
10 | ## | |
11 | ## See the file CONTRIBUTORS for a list of contributors. | |
12 | ## | |
13 | ## This file is maintained by: | |
14 | ## AJ Lewis <lewis@sistina.com> | |
15 | ## | |
16 | ## File name: last_cvs_update.sh | |
17 | ## | |
18 | ## Description: displays the last file updated by CVS commands and the date | |
19 | ## it was updated. May be given a relative or absolute path. | |
20 | ## Based on this information, you should be able to do a | |
21 | ## cvs co -D $date GFS and get the same version of the source | |
22 | ## tree as this tool was run on. | |
23 | ## | |
24 | ## Will also give you the CVS tag the source tree is based off | |
25 | ## off when appropriate | |
26 | ## | |
27 | ## Output format: | |
28 | ## [Tag: $TAG] | |
29 | ## The last file updated by CVS was: | |
30 | ## $path/$file | |
31 | ## on | |
32 | ## $date | |
33 | ## | |
34 | ################################################################################ | |
35 | ||
36 | if [[ -z $1 ]]; | |
37 | then path=.; | |
38 | else | |
39 | if [[ $1 == "-h" ]]; | |
40 | then echo "usage: $0 [ -h | path ]" | |
41 | exit 0; | |
42 | else | |
43 | if [[ -d $1 ]] | |
44 | then path=$1; | |
45 | else | |
46 | echo "usage: $0 [ -h | path ]" | |
47 | exit 0; | |
48 | fi | |
49 | fi | |
50 | fi | |
51 | ||
52 | # grab the tag from the path passed in | |
53 | if [[ -f $path/CVS/Tag ]]; | |
54 | then echo "Tag: " `cat $path/CVS/Tag | sed -e 's/^[NT]//'` | |
55 | fi | |
56 | ||
57 | awk ' | |
58 | BEGIN { | |
59 | FS = "/" | |
60 | } | |
61 | { | |
62 | # find the path for the Entries file | |
63 | path = FILENAME | |
64 | sub(/^\.\//, "", path) | |
65 | ||
66 | # remove the CVS part of it | |
67 | sub(/CVS\/Entries/, "", path) | |
68 | ||
69 | # add the path the the filename that was modified, and put the date it was | |
70 | # modified in as well | |
71 | print path $2 " " $4 | |
72 | ||
73 | }' `find $path -name "Entries" -printf "%h/%f "` | awk ' | |
74 | # converts string name of month the a numeral | |
75 | function cvt_month(month) { | |
76 | if(month == "Jan") | |
77 | return 0 | |
78 | if(month == "Feb") | |
79 | return 1 | |
80 | if(month == "Mar") | |
81 | return 2 | |
82 | if(month == "Apr") | |
83 | return 3 | |
84 | if(month == "May") | |
85 | return 4 | |
86 | if(month == "Jun") | |
87 | return 5 | |
88 | if(month == "Jul") | |
89 | return 6 | |
90 | if(month == "Aug") | |
91 | return 7 | |
92 | if(month == "Sep") | |
93 | return 8 | |
94 | if(month == "Oct") | |
95 | return 9 | |
96 | if(month == "Nov") | |
97 | return 10 | |
98 | if(month == "Dec") | |
99 | return 11 | |
100 | return -1 | |
101 | } | |
102 | BEGIN { | |
103 | FS = " " | |
104 | latest="" | |
105 | maxyear = 0 | |
106 | maxdate = 0 | |
107 | maxmonth = "Jan" | |
108 | maxtime = "00:00:00" | |
109 | } | |
110 | { | |
111 | # check year first | |
112 | if (maxyear < $6) { | |
113 | date = $2 " " $3 " " $4 " " $5 " " $6 | |
114 | file = $1 | |
115 | maxyear = $6 | |
116 | maxmonth = $3 | |
117 | maxdate = $4 | |
118 | maxtime = $5 | |
119 | } | |
120 | else { | |
121 | if (maxyear == $6) { | |
122 | # then month if year is the same | |
123 | if (cvt_month(maxmonth) < cvt_month($3)) { | |
124 | date = $2 " " $3 " " $4 " " $5 " " $6 | |
125 | file = $1 | |
126 | maxmonth = $3 | |
127 | maxdate = $4 | |
128 | maxtime = $5 | |
129 | } | |
130 | else { | |
131 | if (cvt_month(maxmonth) == cvt_month($3)) { | |
132 | #then date if month is the same | |
133 | if (maxdate < $4) { | |
134 | date = $2 " " $3 " " $4 " " $5 " " $6 | |
135 | file = $1 | |
136 | maxdate = $4 | |
137 | maxtime = $5 | |
138 | } | |
139 | else { | |
140 | if (maxdate == $4) { | |
141 | # then time if date is the same | |
142 | if (maxtime < $5) { | |
143 | date = $2 " " $3 " " $4 " " $5 " " $6 | |
144 | file = $1 | |
145 | maxtime = $5 | |
146 | } | |
147 | } | |
148 | } | |
149 | } | |
150 | } | |
151 | } | |
152 | } | |
153 | } | |
154 | ||
155 | END { | |
156 | # strip leading "./" from filename | |
157 | sub(/^\.\//, "", file) | |
158 | print "The last file updated by CVS was:" | |
159 | print file | |
160 | print "on" | |
161 | print date " GMT" | |
162 | }' | |
163 |