]> sourceware.org Git - lvm2.git/blob - scripts/last_cvs_update.sh
.
[lvm2.git] / scripts / last_cvs_update.sh
1 #!/bin/bash
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
This page took 0.041361 seconds and 5 git commands to generate.