relpipe-data/examples/mercurial-hg-xmltable-sql.sh
branchv_0
changeset 264 d39cfc926f95
child 317 fce3d6290c40
equal deleted inserted replaced
263:8bf13358a50a 264:d39cfc926f95
       
     1 #!/bin/bash
       
     2 
       
     3 relpipe-in-hglog() {
       
     4 	# on repositories with long history 
       
     5 	# it is good to process just a subset of the log using hg log parameters
       
     6 	hg log --template xml \
       
     7 		| relpipe-in-xmltable \
       
     8 			--relation hg_log \
       
     9 				--records "/log/logentry" \
       
    10 				--attribute "revision" integer "@revision" \
       
    11 				--attribute "date" string "date" \
       
    12 				--attribute "hash" string "@node" \
       
    13 				--attribute "hash_short" string "substring(@node,1,12)" \
       
    14 				--attribute "branch" string "branch" \
       
    15 				--attribute "author_name" string "author" \
       
    16 				--attribute "message" string "msg"
       
    17 				# --attribute "author_email" string "author/@email" \
       
    18 }
       
    19 
       
    20 relpipe-in-hgtags() {
       
    21 	hg tags \
       
    22 		| sed -E 's/([^ \s]+)\s+([0-9]+):(.*)/\1\n\2\n\3/g' \
       
    23 		| tr \\n \\0 \
       
    24 		| relpipe-in-cli \
       
    25 			generate-from-stdin hg_tags 3 \
       
    26 				tag string \
       
    27 				revision integer \
       
    28 				hash_short string
       
    29 }
       
    30 
       
    31 
       
    32 # just view everything:
       
    33 # (relpipe-in-hglog; relpipe-in-hgtags) | relpipe-out-tabular | less -RSi
       
    34 
       
    35 
       
    36 # filter and JOIN data, do some statistics:
       
    37 (relpipe-in-hglog; relpipe-in-hgtags) \
       
    38 	| relpipe-tr-sql \
       
    39 		--relation "tags" \
       
    40 			"SELECT
       
    41 				t.*,
       
    42 				l.date
       
    43 			FROM hg_tags AS t
       
    44 			JOIN hg_log AS l USING (hash_short)" \
       
    45 		--relation "filtered_log" \
       
    46 			"SELECT 
       
    47 				revision, 
       
    48 				date, 
       
    49 				hash_short,
       
    50 				branch, 
       
    51 				author_name
       
    52 			FROM hg_log
       
    53 			ORDER BY revision DESC
       
    54 			LIMIT ?" \
       
    55 			--parameter 10 \
       
    56 		--relation "author_statistics" \
       
    57 			"SELECT
       
    58 				author_name,
       
    59 				branch,
       
    60 				count(*) AS count,
       
    61 				min(date) AS first_commit,
       
    62 				max(date) AS last_commit
       
    63 				-- TODO: user proper data type for date
       
    64 			FROM hg_log
       
    65 			GROUP BY author_name, branch
       
    66 			ORDER BY count" \
       
    67 	| relpipe-out-tabular
       
    68