Skip to content

Instantly share code, notes, and snippets.

Created March 24, 2011 01:10

Revisions

  1. @invalid-email-address Anonymous created this gist Mar 24, 2011.
    37 changes: 37 additions & 0 deletions gource-multiple-repositories.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,37 @@
    #!/usr/bin/env bash
    # Generates gource video (h.264) out of multiple repositories.
    # Pass the repositories in command line arguments.
    # Example:
    # <this.sh> /path/to/repo1 /path/to/repo2

    i=0
    for repo in $*; do
    # 1. Generate a Gource custom log files for each repo. This can be facilitated by the --output-custom-log FILE option of Gource as of 0.29:
    logfile="$(mktemp /tmp/gource.XXXXXX)"
    gource --output-custom-log "${logfile}" ${repo}
    # 2. If you want each repo to appear on a separate branch instead of merged onto each other (which might also look interesting), you can use a 'sed' regular expression to add an extra parent directory to the path of the files in each project:
    gsed -i -E "s#(.+)\|#\1|/${repo}#" ${logfile}
    logs[$i]=$logfile
    let i=$i+1
    done

    combined_log="$(mktemp /tmp/gource.XXXXXX)"
    cat ${logs[@]} | sort -n > $combined_log
    rm ${logs[@]}

    echo "Committers:"
    cat $combined_log | awk -F\| {'print $2'} | sort | uniq
    echo "======================"

    outfile="gource.mp4"
    time gource $combined_log \
    -s 0.4 \
    -i 0 \
    --highlight-users \
    --highlight-dirs \
    --file-extensions \
    --hide mouse \
    --key \
    --stop-at-end \
    --output-ppm-stream - | ffmpeg -y -b 3000K -r 60 -f image2pipe -vcodec ppm -i - -vcodec libx264 -vpre default $outfile
    rm $combined_log