July 24, 2008

command line quizzes part 3

Q: Given that svn log -q | grep '^r' gives you a list of all commits and their owners, one per line. Figure out the percentage of commits done by a particular user, since that user's first commit.

As an example, we can use the following list of 100 changes to the trunk of the subversion project:
r32295 | xsteve | 2008-07-24 16:54:02 -0500 (Thu, 24 Jul 2008)
r32293 | kfogel | 2008-07-24 11:41:25 -0500 (Thu, 24 Jul 2008)
r32288 | hwright | 2008-07-23 23:15:10 -0500 (Wed, 23 Jul 2008)
r32286 | hwright | 2008-07-23 18:31:33 -0500 (Wed, 23 Jul 2008)
r32285 | hwright | 2008-07-23 18:29:10 -0500 (Wed, 23 Jul 2008)
r32284 | hwright | 2008-07-23 18:27:22 -0500 (Wed, 23 Jul 2008)
r32279 | xsteve | 2008-07-23 15:48:55 -0500 (Wed, 23 Jul 2008)
r32277 | xsteve | 2008-07-23 15:37:21 -0500 (Wed, 23 Jul 2008)
r32276 | jensseidel | 2008-07-23 14:34:01 -0500 (Wed, 23 Jul 2008)
r32275 | jensseidel | 2008-07-23 14:18:29 -0500 (Wed, 23 Jul 2008)
r32270 | arfrever | 2008-07-23 11:49:13 -0500 (Wed, 23 Jul 2008)
r32268 | blair | 2008-07-23 11:13:03 -0500 (Wed, 23 Jul 2008)
r32255 | sbutler | 2008-07-23 01:45:22 -0500 (Wed, 23 Jul 2008)
r32237 | pburba | 2008-07-22 14:41:23 -0500 (Tue, 22 Jul 2008)
r32236 | pburba | 2008-07-22 12:32:59 -0500 (Tue, 22 Jul 2008)
r32235 | jensseidel | 2008-07-22 10:44:15 -0500 (Tue, 22 Jul 2008)
r32233 | julianfoad | 2008-07-22 10:39:24 -0500 (Tue, 22 Jul 2008)
r32231 | hwright | 2008-07-22 10:33:18 -0500 (Tue, 22 Jul 2008)
r32227 | jensseidel | 2008-07-22 10:10:19 -0500 (Tue, 22 Jul 2008)
r32218 | jensseidel | 2008-07-22 06:33:12 -0500 (Tue, 22 Jul 2008)
r32217 | julianfoad | 2008-07-22 05:43:39 -0500 (Tue, 22 Jul 2008)
r32216 | jensseidel | 2008-07-22 03:52:44 -0500 (Tue, 22 Jul 2008)
r32215 | jensseidel | 2008-07-22 03:32:05 -0500 (Tue, 22 Jul 2008)
r32211 | clkao | 2008-07-21 16:00:05 -0500 (Mon, 21 Jul 2008)
r32210 | clkao | 2008-07-21 15:47:16 -0500 (Mon, 21 Jul 2008)
r32209 | cmpilato | 2008-07-21 14:21:13 -0500 (Mon, 21 Jul 2008)
r32208 | clkao | 2008-07-21 14:20:40 -0500 (Mon, 21 Jul 2008)
r32207 | kfogel | 2008-07-21 14:07:10 -0500 (Mon, 21 Jul 2008)
r32206 | cmpilato | 2008-07-21 13:28:25 -0500 (Mon, 21 Jul 2008)
r32205 | kfogel | 2008-07-21 13:09:46 -0500 (Mon, 21 Jul 2008)
r32204 | kfogel | 2008-07-21 13:04:59 -0500 (Mon, 21 Jul 2008)
r32203 | hwright | 2008-07-21 11:16:36 -0500 (Mon, 21 Jul 2008)
r32202 | danielsh | 2008-07-21 10:44:01 -0500 (Mon, 21 Jul 2008)
r32199 | julianfoad | 2008-07-21 10:04:14 -0500 (Mon, 21 Jul 2008)
r32198 | hwright | 2008-07-21 09:59:35 -0500 (Mon, 21 Jul 2008)
r32194 | julianfoad | 2008-07-21 06:28:47 -0500 (Mon, 21 Jul 2008)
r32193 | julianfoad | 2008-07-21 06:25:16 -0500 (Mon, 21 Jul 2008)
r32191 | stsp | 2008-07-19 12:37:12 -0500 (Sat, 19 Jul 2008)
r32187 | cmpilato | 2008-07-18 15:10:06 -0500 (Fri, 18 Jul 2008)
r32185 | hwright | 2008-07-18 14:31:10 -0500 (Fri, 18 Jul 2008)
r32181 | cmpilato | 2008-07-18 13:28:54 -0500 (Fri, 18 Jul 2008)
r32179 | cmpilato | 2008-07-18 12:52:41 -0500 (Fri, 18 Jul 2008)
r32175 | julianfoad | 2008-07-18 08:23:12 -0500 (Fri, 18 Jul 2008)
r32172 | julianfoad | 2008-07-18 04:53:10 -0500 (Fri, 18 Jul 2008)
r32171 | clkao | 2008-07-18 00:45:06 -0500 (Fri, 18 Jul 2008)
r32169 | hwright | 2008-07-17 21:47:38 -0500 (Thu, 17 Jul 2008)
r32166 | clkao | 2008-07-17 14:58:36 -0500 (Thu, 17 Jul 2008)
r32164 | hwright | 2008-07-17 14:49:29 -0500 (Thu, 17 Jul 2008)
r32163 | clkao | 2008-07-17 14:46:36 -0500 (Thu, 17 Jul 2008)
r32162 | xsteve | 2008-07-17 14:30:18 -0500 (Thu, 17 Jul 2008)
r32160 | cmpilato | 2008-07-17 14:04:39 -0500 (Thu, 17 Jul 2008)
r32158 | cmpilato | 2008-07-17 10:10:01 -0500 (Thu, 17 Jul 2008)
r32153 | cmpilato | 2008-07-17 09:10:23 -0500 (Thu, 17 Jul 2008)
r32152 | fabien | 2008-07-17 08:33:19 -0500 (Thu, 17 Jul 2008)
r32150 | stsp | 2008-07-17 03:45:04 -0500 (Thu, 17 Jul 2008)
r32147 | kfogel | 2008-07-16 15:35:21 -0500 (Wed, 16 Jul 2008)
r32146 | xsteve | 2008-07-16 14:44:06 -0500 (Wed, 16 Jul 2008)
r32145 | kfogel | 2008-07-16 14:17:44 -0500 (Wed, 16 Jul 2008)
r32144 | kfogel | 2008-07-16 13:59:02 -0500 (Wed, 16 Jul 2008)
r32142 | pburba | 2008-07-16 13:01:05 -0500 (Wed, 16 Jul 2008)
r32135 | stylesen | 2008-07-16 03:04:25 -0500 (Wed, 16 Jul 2008)
r32134 | stylesen | 2008-07-16 02:34:15 -0500 (Wed, 16 Jul 2008)
r32133 | blair | 2008-07-15 19:15:52 -0500 (Tue, 15 Jul 2008)
r32132 | kfogel | 2008-07-15 14:41:22 -0500 (Tue, 15 Jul 2008)
r32131 | xsteve | 2008-07-15 14:33:20 -0500 (Tue, 15 Jul 2008)
r32130 | xsteve | 2008-07-15 13:50:33 -0500 (Tue, 15 Jul 2008)
r32127 | hwright | 2008-07-15 10:38:22 -0500 (Tue, 15 Jul 2008)
r32123 | sunny256 | 2008-07-15 05:13:49 -0500 (Tue, 15 Jul 2008)
r32089 | stylesen | 2008-07-14 07:01:32 -0500 (Mon, 14 Jul 2008)
r32088 | julianfoad | 2008-07-14 03:33:46 -0500 (Mon, 14 Jul 2008)
r32084 | nmiyo | 2008-07-13 08:25:00 -0500 (Sun, 13 Jul 2008)
r32083 | stsp | 2008-07-13 04:25:52 -0500 (Sun, 13 Jul 2008)
r32082 | stsp | 2008-07-13 04:21:27 -0500 (Sun, 13 Jul 2008)
r32080 | stsp | 2008-07-13 04:02:42 -0500 (Sun, 13 Jul 2008)
r32079 | danielsh | 2008-07-13 00:53:33 -0500 (Sun, 13 Jul 2008)
r32078 | nmiyo | 2008-07-12 23:19:08 -0500 (Sat, 12 Jul 2008)
r32077 | julianfoad | 2008-07-12 17:10:12 -0500 (Sat, 12 Jul 2008)
r32076 | xsteve | 2008-07-11 15:32:33 -0500 (Fri, 11 Jul 2008)
r32075 | kmradke | 2008-07-11 11:23:45 -0500 (Fri, 11 Jul 2008)
r32074 | nmiyo | 2008-07-11 04:09:13 -0500 (Fri, 11 Jul 2008)
r32071 | arfrever | 2008-07-10 13:00:24 -0500 (Thu, 10 Jul 2008)
r32068 | arfrever | 2008-07-10 12:13:59 -0500 (Thu, 10 Jul 2008)
r32066 | julianfoad | 2008-07-10 11:43:14 -0500 (Thu, 10 Jul 2008)
r32065 | julianfoad | 2008-07-10 11:13:06 -0500 (Thu, 10 Jul 2008)
r32063 | julianfoad | 2008-07-10 10:42:41 -0500 (Thu, 10 Jul 2008)
r32060 | julianfoad | 2008-07-10 10:13:20 -0500 (Thu, 10 Jul 2008)
r32059 | julianfoad | 2008-07-10 09:18:26 -0500 (Thu, 10 Jul 2008)
r32056 | kameshj | 2008-07-10 07:47:37 -0500 (Thu, 10 Jul 2008)
r32055 | kameshj | 2008-07-10 06:07:48 -0500 (Thu, 10 Jul 2008)
r32048 | sbutler | 2008-07-09 16:56:32 -0500 (Wed, 09 Jul 2008)
r32043 | julianfoad | 2008-07-08 18:09:40 -0500 (Tue, 08 Jul 2008)
r32041 | epg | 2008-07-08 16:45:29 -0500 (Tue, 08 Jul 2008)
r32039 | kfogel | 2008-07-08 15:43:37 -0500 (Tue, 08 Jul 2008)
r32038 | lgo | 2008-07-08 15:31:04 -0500 (Tue, 08 Jul 2008)
r32037 | stylesen | 2008-07-08 13:50:49 -0500 (Tue, 08 Jul 2008)
r32036 | arfrever | 2008-07-08 13:41:29 -0500 (Tue, 08 Jul 2008)
r32032 | xsteve | 2008-07-08 12:21:58 -0500 (Tue, 08 Jul 2008)
r32030 | xsteve | 2008-07-08 12:07:16 -0500 (Tue, 08 Jul 2008)
r32029 | pburba | 2008-07-08 10:02:29 -0500 (Tue, 08 Jul 2008)
r32028 | hwright | 2008-07-07 23:14:38 -0500 (Mon, 07 Jul 2008)

We want to know the percentage of commits done by the user 'julianfoad' (randomly chosen) since his first commit -- 10th line from the bottom.

The following lines do the trick:



svn log -q --limit 100 | grep '^r' | cat -n | sort -nr | sed -ne '/julianfoad/,$ p' | sort -n | wc -l
svn log -q --limit 100 | grep '^r' | cat -n | sort -nr | sed -ne '/julianfoad/,$ p' | sort -n | grep julianfoad | wc -l

The first line gives the overall number of commits since julianfoad's first: 91.

The second line gives his personal number of commits: 15.

So the percentage is echo '15/91 * 100' | bc -q. In english: 16.48%.

0 comments: