|  | @@ -0,0 +1,42 @@
 | 
											
												
													
														|  | 
 |  | +#!/usr/bin/env bash
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +mkdir -p log
 | 
											
												
													
														|  | 
 |  | +TOP="$1"
 | 
											
												
													
														|  | 
 |  | +PREFIX="$2"
 | 
											
												
													
														|  | 
 |  | +shift 2
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +containsElement () {
 | 
											
												
													
														|  | 
 |  | +  local e match="$1"
 | 
											
												
													
														|  | 
 |  | +  shift
 | 
											
												
													
														|  | 
 |  | +  for e; do [[ "$e" == "$match" ]] && return 0; done
 | 
											
												
													
														|  | 
 |  | +  return 1
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +join_gource(){
 | 
											
												
													
														|  | 
 |  | +    cat log/gource.txt.gz|gunzip |cat - log/gource.txt |sort|uniq|gzip > log/gource.tmp
 | 
											
												
													
														|  | 
 |  | +    mv log/gource.tmp log/gource.txt.gz
 | 
											
												
													
														|  | 
 |  | +    rm -f log/gource.txt
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +REPOS_DONE=( $(cat log/repos.done) )
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +find "$TOP" -type d -name '*.git' -print0 | 
 | 
											
												
													
														|  | 
 |  | +(
 | 
											
												
													
														|  | 
 |  | +i=0
 | 
											
												
													
														|  | 
 |  | +while IFS= read -r -d '' line; do 
 | 
											
												
													
														|  | 
 |  | +    REL="$PREFIX$(realpath --relative-to=$TOP $line)"
 | 
											
												
													
														|  | 
 |  | +    i="$(( $i + 1 ))"
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    containsElement "$REL" "${REPOS_DONE[@]}" && echo "$i $REL is already done" 1>&2
 | 
											
												
													
														|  | 
 |  | +    containsElement "$REL" "${REPOS_DONE[@]}" && continue;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    echo "Gourcing:$i $REL" 1>&2
 | 
											
												
													
														|  | 
 |  | +    git -C "$line" log --all --pretty=format:user:%aN%n%ct --reverse --raw --encoding=UTF-8 --no-renames |
 | 
											
												
													
														|  | 
 |  | +        sed "s, \([ACDMRTU]\)\t, \1\t$REL/," | gource  --log-format git --output-custom-log - -
 | 
											
												
													
														|  | 
 |  | +    echo "$REL" >> log/repos.done
 | 
											
												
													
														|  | 
 |  | +done
 | 
											
												
													
														|  | 
 |  | +) >> log/gource.txt
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +join_gource
 |