gource - Man Page

a software version control visualization

Examples (TL;DR)

Synopsis

gource [options] [path]

Description

gource is an OpenGL-based 3D visualisation tool for source control repositories.

The repository is displayed as a tree where the root of the repository is the centre, directories are branches and files are leaves. Contributors to the source code appear and disappear as they contribute to specific files and directories.

Requirements

gource requires a OpenGL capable video card to run.

Options

-h, --help

Help ('-H' for extended help).

-WIDTHxHEIGHT, --viewport WIDTHxHEIGHT

Set the viewport size. If -f is also supplied, will attempt to set the video mode to this also. Add ! to make the window non-resizable.

-f

Fullscreen.

--screen SCREEN

Set the number of the screen to display on.

--high-dpi

Request a high DPI display when creating the window.

On some platforms such as MacOS, the window resolution is specified in points instead of pixels. The --high-dpi flag may be required to access some higher resolutions.

E.g. requesting a high DPI 800x600 window may produce a window that is 1600x1200 pixels.

--window-position XxY

Initial window position on your desktop which may be made up of multiple monitors.

This will override the screen setting so don't specify both.

--frameless

Frameless window.

--transparent

Make the background transparent. Only really useful for screenshots.

--start-date "YYYY-MM-DD hh:mm:ss +tz"

Start with the first entry after the supplied date and optional time.

If a time zone offset isn't specified the local time zone is used.

Example accepted formats:

   "2012-06-30"
   "2012-06-30 12:00"
   "2012-06-30 12:00:00 +12"

--stop-date "YYYY-MM-DD hh:mm:ss +tz"

Stop at the last entry prior to the supplied date and optional time.

Uses the same format as --start-date.

-p, --start-position POSITION

Begin at some position in the log (between 0.0 and 1.0 or 'random').

--stop-position  POSITION

Stop (exit) at some position in the log (does not work with STDIN).

-t, --stop-at-time SECONDS

Stop (exit) after a specified number of seconds.

--stop-at-end

Stop (exit) at the end of the log / stream.

--loop

Loop back to the start of the log when the end is reached.

--loop-delay-seconds SECONDS

Seconds to delay before looping.

-a, --auto-skip-seconds SECONDS

Automatically skip to next entry if nothing happens for a specified number of seconds.

-s, --seconds-per-day SECONDS

Speed of simulation in seconds per day.

--realtime

Realtime playback speed.

--no-time-travel

Use the time of the last commit if the time of a commit is in the past.

-c, --time-scale SCALE

Change simulation time scale.

E.g. 0.5 for half speed, 2 for double speed.

-i, --file-idle-time SECONDS

Time in seconds files remain idle before they are removed or 0 for no limit.

--file-idle-time-at-end SECONDS

Time in seconds files remain idle at the end before they are removed.

-e, --elasticity FLOAT

Elasticity of nodes.

-b, --background-colour FFFFFF

Background colour in hex.

--background-image IMAGE

Set a background image.

--title TITLE

Set a title

--font-file FILE

Specify the font. Should work with most font file formats supported by FreeType, such as TTF and OTF, among others.

--font-scale SCALE

Scale the size of all fonts.

--font-size SIZE

Font size used by the date and title.

--file-font-size SIZE

Font size of filenames.

--dir-font-size SIZE

Font size of directory names.

--user-font-size SIZE

Font size of user names.

--font-colour FFFFFF

Font colour used by the date and title in hex.

--key

Show file extension key.

--logo IMAGE

Logo to display in the foreground.

--logo-offset XxY

Offset position of the logo.

--date-format FORMAT

Specify display date string (strftime format).

--log-command VCS

Show the log command used by gource (git,svn,hg,bzr,cvs2cl).

--log-format VCS

Specify format of the log being read (git,svn,hg,bzr,cvs2cl,custom). Required when reading from STDIN.

--git-branch

Get the git log of a branch other than the current one.

--follow-user USER

Have the camera automatically follow a particular user.

--highlight-dirs

Highlight the names of all directories.

--highlight-user USER

Highlight the names of a particular user.

--highlight-users

Highlight the names of all users.

--highlight-colour FFFFFF

Font colour for highlighted users in hex.

--selection-colour FFFFFF

Font colour for selected users and files.

--filename-colour FFFFFF

Font colour for filenames.

--dir-colour FFFFFF

Font colour for directories.

--dir-name-depth DEPTH

Draw names of directories down to a specific depth in the tree.

--dir-name-position FLOAT

Position along edge of the directory name (between 0.1 and 1.0, default is 0.5).

--filename-time SECONDS

Duration to keep filenames on screen (>= 2.0).

--file-extensions

Show filename extensions only.

--file-extension-fallback

Use filename as extension if the extension is missing or empty.

--file-filter REGEX

Filter out file paths matching the specified regular expression.

--file-show-filter REGEX

Show only file paths matching the specified regular expression.

--user-filter REGEX

Filter usernames matching the specified regular expression.

--user-show-filter REGEX

Show only usernames matching the specified regular expression.

--user-image-dir DIRECTORY

Directory containing .jpg or .png images of users (eg "Full Name.png") to use as avatars.

--default-user-image IMAGE

Path of .jpg to use as the default user image.

--fixed-user-size

Forces the size of the user image to remain fixed throughout.

--colour-images

Colourize user images.

--crop AXIS

Crop view on an axis (vertical,horizontal).

--padding FLOAT

Camera view padding.

--multi-sampling

Enable multi-sampling.

--no-vsync

Disable vsync.

--bloom-multiplier FLOAT

Adjust the amount of bloom.

--bloom-intensity FLOAT

Adjust the intensity of the bloom.

--max-files NUMBER

Set the maximum number of files or 0 for no limit. Excess files will be discarded.

--max-file-lag SECONDS

Max time files of a commit can take to appear. Use -1 for no limit.

--max-user-speed UNITS

Max speed users can travel per second.

--user-friction SECONDS

Time users take to come to a halt.

--user-scale SCALE

Change scale of user avatars.

--camera-mode MODE

Camera mode (overview,track).

--disable-auto-rotate

Disable automatic camera rotation.

--disable-input

Disable keyboard and mouse input.

--hide DISPLAY_ELEMENT

Hide one or more display elements from the list below:

   bloom     - bloom effect
   date      - current date
   dirnames  - names of directories
   files     - file icons
   filenames - names of files
   mouse     - mouse cursor
   progress  - progress bar widget
   root      - root directory of the tree
   tree      - animated tree structure
   users     - user avatars
   usernames - names of users

Separate multiple elements with commas (eg "mouse,progress")

--hash-seed SEED

Change the seed of hash function.

--caption-file FILE

Caption file (see Caption Log Format).

--caption-size SIZE

Caption size.

--caption-colour FFFFFF

Caption colour in hex.

--caption-duration SECONDS

Caption duration.

--caption-offset X

Caption horizontal offset (0 to centre captions).

-o, --output-ppm-stream FILE

Output a PPM image stream to a file ('-' for STDOUT).

This will automatically hide the progress bar initially and enable 'stop-at-end' unless other behaviour is specified.

-r, --output-framerate FPS

Framerate of output (25,30,60). Used with --output-ppm-stream.

--output-custom-log FILE

Output a custom format log file ('-' for STDOUT).

--load-config CONFIG_FILE

Load a config file.

--save-config CONFIG_FILE

Save a config file with the current options.

--path PATH
path

Either a supported version control directory, a pre-generated log file (see log commands or the custom log format), a Gource conf file or '-' to read STDIN.

If path is omitted, gource will attempt to read a log from the current directory.

Git, Bazaar, Mercurial and SVN Examples

View the log of the repository in the current path:

gource

View the log of a project in the specified directory:

gource my-project-dir

For large projects, generating a log of the project history may take a long time. For centralized VCS like SVN, generating the log will put load on the central VCS server.

In these cases, you may like to save a copy of the log for later use.

You can generate a log in the VCS specific log format using the --log-command VCS option:

cd my-svn-project
`gource --log-command svn` > my-svn-project.log
gource my-svn-project.log

You can also have Gource write a copy of the log file in its own format:

gource --output-custom-log my-project-custom.log

CVS Support

Use 'cvs2cl' to generate the log and then pass it to Gource:

cvs2cl --chrono --stdout --xml -g-q > my-cvs-project.log
gource my-cvs-project.log

Custom Log Format

If you want to use Gource with something other than the supported systems, there is a pipe ('|') delimited custom log format:

timestamp - An ISO 8601 or unix timestamp of when the update occurred.
username  - The name of the user who made the update.
type      - Single character for the update type - (A)dded, (M)odified or (D)eleted.
file      - Path of the file updated.
colour    - A colour for the file in hex (FFFFFF) format. Optional.

Caption Log Format

Gource can display captions along the timeline by specifying a caption file (using --caption-file) in the pipe ('|') delimited format below:

timestamp - An ISO 8601 or unix timestamp of when to display the caption.
caption   - The caption

Recording Videos

See the guide on the homepage for examples of recording videos with Gource:

https://github.com/acaudwell/Gource/wiki/Videos

More Information

Visit the Gource homepage for guides and examples of using Gource with various version control systems:

http://gource.io

Interface

The time shown in the top left of the screen is set initially from the first log entry read and is incremented according to the simulation speed (--seconds-per-day).

Pressing SPACE at any time will pause/resume the simulation. While paused you may use the mouse to inspect the detail of individual files and users.

TAB cycles through selecting the current visible users.

The camera mode, either tracking activity or showing the entire code tree, can be toggled using the Middle mouse button.

You can drag the left mouse button to manually control the camera. The right mouse button rotates the view.

Interactive keyboard commands:

(V)   Toggle camera mode
(C)   Displays Gource logo
(K)   Toggle file extension key
(M)   Toggle mouse visibility
(N)   Jump forward in time to next log entry
(S)   Randomize colours
(D)   Toggle directory name display mode
(F)   Toggle file name display mode
(U)   Toggle user name display mode
(G)   Toggle display of users
(T)   Toggle display of directory tree edges
(R)   Toggle display of root directory edges
(+-)  Adjust simulation speed
(<>)  Adjust time scale
(TAB) Cycle through visible users
(F12) Screenshot
(Alt+Enter) Fullscreen toggle
(ESC) Quit

Author

 Written by Andrew Caudwell

 Project Homepage: http://gource.io

Acknowledgements

 Catalyst IT (catalyst.net.nz)

 For supporting the development of Gource!