LinuxCommandLibrary

gource

Visualize software repository history as an animation

TLDR

Run gource in a directory (if it isn't the repository's root directory, the root is sought up from there)

$ gource [path/to/repository]
copy

Run gource in the current directory, with a custom output resolution
$ gource -[width]x[height]
copy

Specify how long each day should be in the animation (this combines with -c, if provided)
$ gource [[-s|--seconds-per-day]] [seconds]
copy

Use fullscreen mode and a custom background color
$ gource [[-f|--fullscreen ]] [[-b|--background-colour]] [hex_color_code]
copy

Specify the animation title
$ gource --title [title]
copy

Pause the animation
$ <Space>
copy

Adjust simulation speed
$ <[+|-]>
copy

Display help
$ gource [[-h|--help]]
copy

SYNOPSIS


gource [OPTIONS] [PATH_TO_REPOSITORY | LOG_FILE]

Examples:
gource ~/my_git_repo
git log --pretty=format:':%ct|%an|%s' --reverse | gource --log-format custom

PARAMETERS

-s , --seconds-per-day
    Set the simulation speed, representing how many seconds of development time pass per second of real time.

-a , --auto-skip-seconds
    Automatically skip periods of inactivity longer than the specified seconds.

-r , --repository-root
    Specify the root directory of the repository, useful if Gource can't automatically detect it.

-p , --start-position
    Start playback at a specific percentage (0.0 to 1.0) of the total repository history.

-e , --start-date
    Begin the visualization from a specific date.

-D , --stop-date
    End the visualization at a specific date.

-U

, --user-image-dir
    Specify a directory containing user face images (e.g., username.png) to display as avatars.

-c, --hide-filenames
    Hide individual filenames, only showing the directory tree structure.

-f, --fullscreen
    Run Gource in fullscreen display mode.

-o , --output
    Output the visualization to a specified file (e.g., output.ppm for raw video streams).

--title
    Set the title string displayed in the Gource window.

--logo
    Display a project logo image in the visualization.

--font-size
    Adjust the font size used for text elements in the visualization.

--file-idle-time
    Set the time (in seconds) after which an unmodified file will disappear from the tree.

--max-files
    Limit the maximum number of files that can be displayed simultaneously.

--log-format
    Specify the input log format (e.g., git, svn, mercurial, custom).

--key
    Display an on-screen key or legend for colours and elements.

--stop-at-end
    Stop the simulation automatically once the entire log history has been processed.

DESCRIPTION

Gource is an animated visualization tool for software version control repositories, transforming static commit logs into a captivating real-time display. It graphically represents the project's history as a dynamic tree structure, where files and directories are nodes that appear, disappear, and change over time. Developers, depicted as user avatars or names, fly into the tree, interact with files, and contribute their changes, with file modifications highlighted visually. Gource supports various version control systems including Git, Mercurial, SVN, and Bazaar, and can also process custom log formats. This provides a unique and intuitive insight into a project's evolution, illustrating bursts of activity, file additions, deletions, and modifications. It vividly demonstrates the collaborative nature of software development and is frequently employed to generate compelling project overview videos, making complex development histories easily understandable and engaging.

CAVEATS

Gource can be resource-intensive for very large repositories with extensive history, potentially leading to slow frame rates or high memory usage. It relies on accurate version control system logs; malformed logs can cause unexpected behavior. Generating high-quality video output often requires post-processing with external tools like FFmpeg. The default visualization may become cluttered for projects with very high concurrent activity or numerous files, necessitating parameter tuning.

CUSTOM LOG FORMATS

Gource is highly versatile due to its support for custom log formats, allowing users to visualize data from sources beyond standard VCS systems. The custom format typically involves lines structured as :timestamp|author|type|file/directory, where type can be A (add), M (modify), or D (delete). This flexibility enables the creation of visualizations from virtually any time-series data related to file or directory changes, making it a powerful tool for various data analysis scenarios.

USER AVATARS

For a more personalized and clear visualization, Gource supports displaying custom images (avatars) for each user. By placing PNG or JPG image files named after the commit author (e.g., john.doe.png) in a directory specified by the --user-image-dir option, users can enhance the visual appeal and easily identify who is contributing to the project at a glance.

VIDEO EXPORT

While Gource provides real-time rendering, one of its primary use cases is exporting the visualization to a video file for sharing or presentation. This is commonly achieved by piping Gource's raw PPM stream output to a powerful video encoder like FFmpeg. This allows users to create high-quality, shareable videos of their project's entire development history, complete with sound if desired, for archival or promotional purposes.

HISTORY

Gource was created by Andrew Light in 2009. It was initially designed to visualize Git repositories but quickly expanded to support other version control systems like Mercurial, SVN, and Bazaar. Its development was driven by the desire to provide a visually engaging and intuitive way to understand project evolution and developer contributions over time. Since its inception, it has gained popularity in open-source communities and businesses alike for its unique ability to bring static version control logs to life.

SEE ALSO

git-log(1), svn-log(1), tig(1), ffmpeg(1)

Copied to clipboard