Gource(1)

πŸ“¦
version 0.56 Β· 4 versions
, in alpine 3.24, arch rolling, fedora 43, fedora 44, nixos 26.05, nixpkgs unstable, ubuntu stonking

✨ Gource(1) ✨

okay bestie, welcome to the Gource(1) manual page! πŸ’– This is part 1, and we're about to make your terminal look like a whole forest of commits. 🌳✨


🌸 NAME 🌸

Gource β€” a software version control visualization. periodt. πŸ‘‘


πŸ¦‹ SYNOPSIS πŸ¦‹

gource [options] [path]

πŸ’… DESCRIPTION πŸ’…

okay so gource is an OpenGL-based 3D visualisation tool for source control repositories. it's giving main character energy for your git log. 😭

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. it's literally a whole ecosystem, iykyk. 🌈


πŸŽ€ REQUIREMENTS πŸŽ€

gource requires a OpenGL capable video card to run. no cap, your GPU gotta be serving. πŸ’…


πŸ‘‘ OPTIONS πŸ‘‘

  • -h, --help β€” Help ('-H' for extended help). so if you need the extra tea, hit -H. β˜•
  • -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. so you can lock it down, periodt. πŸ”’
  • -f β€” Fullscreen. whole screen, no distractions. πŸ‘‘
  • --screen SCREEN β€” Set the number of the screen to display on. for my multi-monitor girlies. πŸ–₯️
  • --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. so crisp, so slay. ✨

  • --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. pick a lane bestie. πŸ›‘

  • --frameless β€” Frameless window. clean, minimal, aesthetic. πŸŽ€
  • --transparent β€” Make the background transparent. Only really useful for screenshots. for the gram. πŸ“Έ
  • --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"

so you can time travel, but only forward. ⏳

  • --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. so you can cut it off, no cap. βœ‚οΈ

  • -p, --start-position POSITION β€” Begin at some position in the log (between 0.0 and 1.0 or 'random'). so you can skip to the good part. 🎯
  • --stop-position POSITION β€” Stop (exit) at some position in the log (does not work with STDIN). note: no STDIN, bestie. 🚫
  • -t, --stop-at-time SECONDS β€” Stop (exit) after a specified number of seconds. set a timer, queen. ⏰
  • --stop-at-end β€” Stop (exit) at the end of the log / stream. natural ending, periodt. 🎬
  • --loop β€” Loop back to the start of the log when the end is reached. it's giving rerun energy. πŸ”
  • --loop-delay-seconds SECONDS β€” Seconds to delay before looping. a little pause for dramatic effect. ⏸️
  • -a, --auto-skip-seconds SECONDS β€” Automatically skip to next entry if nothing happens for a specified number of seconds. so it doesn't get boring. πŸ’€
  • -s, --seconds-per-day SECONDS β€” Speed of simulation in seconds per day. time is fake, go fast. ⚑
  • --realtime β€” Realtime playback speed. no fast-forward, just vibes. πŸ•°οΈ
  • --no-time-travel β€” Use the time of the last commit if the time of a commit is in the past. so no going backwards, only forwards. ⏩
  • --author-time β€” Use the timestamp of the author instead of the timestamp of the committer. author rights, periodt. ✍️
  • -c, --time-scale SCALE β€” Change simulation time scale. This affects the movement speed of user avatars.

E.g. 0.5 for half speed, 2 for double speed. so you can slow it down or speed it up, your choice. πŸ’πŸ‡

  • -i, --file-idle-time SECONDS β€” Time in seconds files remain idle before they are removed or 0 for no limit. 0 means never delete, hoarder energy. πŸ—‚οΈ
  • --file-idle-time-at-end SECONDS β€” Time in seconds files remain idle at the end before they are removed. for the grand finale. πŸŽ†
  • -e, --elasticity FLOAT β€” Elasticity of nodes. boing boing. πŸŒ€
  • -b, --background-colour FFFFFF β€” Background colour in hex. pick your aesthetic. 🎨
  • --background-image IMAGE β€” Set a background image. serve looks. πŸ–ΌοΈ
  • --title TITLE β€” Set a title. name it, own it. πŸ‘‘
  • --font-file FILE β€” Specify the font. Should work with most font file formats supported by FreeType, such as TTF and OTF, among others. so you can be extra. βœ’οΈ
  • --font-scale SCALE β€” Scale the size of all fonts. big mood or small mood. πŸ”
  • --font-size SIZE β€” Font size used by the date and title. for the date and title specifically. πŸ“…
  • --file-font-size SIZE β€” Font size of filenames. files need love too. πŸ“„
  • --dir-font-size SIZE β€” Font size of directory names. directories are important. πŸ“
  • --user-font-size SIZE β€” Font size of user names. shoutout to the users. πŸ‘₯
  • --font-colour FFFFFF β€” Font colour used by the date and title in hex. make it pop. πŸ’–
  • --key β€” Show file extension key. a little legend, iykyk. πŸ—οΈ
  • --logo IMAGE β€” Logo to display in the foreground. branding, bestie. 🏷️
  • --logo-offset XxY β€” Offset position of the logo. move it where you want. πŸ“
  • --date-format FORMAT β€” Specify display date string (strftime format). format it your way. πŸ“†
  • --log-command VCS β€” Show the log command used by gource (git,svn,hg,bzr,cvs2cl). so you can see the tea. β˜•
  • --log-format VCS β€” Specify format of the log being read (git,svn,hg,bzr,cvs2cl,custom). Required when reading from STDIN. no format, no STDIN. 🚫
  • --git-branch β€” Get the git log of a branch other than the current one. branch out, queen. 🌿
  • --follow-user USER β€” Have the camera automatically follow a particular user. main character tracking. πŸŽ₯
  • --highlight-dirs β€” Highlight the names of all directories. directories getting the spotlight. ✨
  • --highlight-user USER β€” Highlight the names of a particular user. one user, all the attention. 🌟
  • --highlight-users β€” Highlight the names of all users. everyone's a star. 🌠
  • --highlight-colour FFFFFF β€” Font colour for highlighted users in hex. colour for the chosen ones. πŸ’›
  • --selection-colour FFFFFF β€” Font colour for selected users and files. selection colour, slay. πŸ’™
  • --filename-colour FFFFFF β€” Font colour for filenames. filenames in colour. πŸ’š
  • --dir-colour FFFFFF β€” Font colour for directories. directories in colour. πŸ’œ
  • --dir-name-depth DEPTH β€” Draw names of directories down to a specific depth in the tree. how deep do you want to go? πŸ•³οΈ
  • --dir-name-position FLOAT β€” Position along edge of the directory name (between 0.1 and 1.0, default is 0.5). default 0.5, but you can move it. 🎚️
  • --filename-time SECONDS β€” Duration to keep filenames on screen (>= 2.0). at least 2.0, no cap. ⏱️
  • --file-extensions β€” Show filename extensions only. just the extensions, periodt. πŸ“Ž
  • --file-extension-fallback β€” Use filename as extension if the extension is missing or empty. fallback realness. πŸ†˜
  • --file-filter REGEX β€” Filter out file paths matching the specified regular expression. bye bye, files. πŸ‘‹
  • --file-show-filter REGEX β€” Show only file paths matching the specified regular expression. only the chosen files. 🎯
  • --user-filter REGEX β€” Filter usernames matching the specified regular expression. not today, user. 🚫
  • --user-show-filter REGEX β€” Show only usernames matching the specified regular expression. only the VIPs. 🌟
  • --user-image-dir DIRECTORY β€” Directory containing .jpg or .png images of users (eg "Full Name.png") to use as avatars. give everyone a face. πŸ–ΌοΈ
  • --default-user-image IMAGE β€” Path of .jpg to use as the default user image. default face, periodt. πŸ‘€
  • --fixed-user-size β€” Forces the size of the user image to remain fixed throughout. no resizing, keep it consistent. πŸ“
  • --colour-images β€” Colourize user images. add some colour, bestie. 🌈
  • --crop AXIS β€” Crop view on an axis (vertical,horizontal). crop it, own it. βœ‚οΈ
  • --padding FLOAT β€” Camera view padding. give it some space. 🌌
  • --multi-sampling β€” Enable multi-sampling. smooth edges, slay. ✨
  • --no-vsync β€” Disable vsync. let it run wild. πŸƒ
  • --bloom-multiplier FLOAT β€” Adjust the amount of bloom. more bloom, more drama. 🌸
  • --bloom-intensity FLOAT β€” Adjust the intensity of the bloom. turn up the glow. πŸ’‘
  • --max-files NUMBER β€” Set the maximum number of files or 0 for no limit. Excess files will be discarded. 0 means unlimited, but excess gets the boot. πŸ₯Ύ
  • --max-file-lag SECONDS β€” Max time files of a commit can take to appear. Use -1 for no limit. -1 means no limit, periodt. ⏳
  • --max-user-speed UNITS β€” Max speed users can travel per second. speed limit, bestie. πŸš—
  • --user-friction SECONDS β€” Time users take to come to a halt. how long to stop, physics. πŸ›‘
  • --user-scale SCALE β€” Change scale of user avatars. big avatars or small avatars. πŸ”
  • --camera-mode MODE β€” Camera mode (overview,track). choose your view. πŸŽ₯
  • --disable-auto-rotate β€” Disable automatic camera rotation. stop spinning, i'm dizzy. πŸŒ€
  • --disable-input β€” Disable keyboard and mouse input. no touchy. 🚫
  • --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"). hide what you don't need, periodt. πŸ™ˆ

  • --hash-seed SEED β€” Change the seed of hash function. shake it up. 🎲
  • --caption-file FILE β€” Caption file (see Caption Log Format). captions for the drama. πŸ“
  • --caption-size SIZE β€” Caption size. big captions or small captions. πŸ” 
  • --caption-colour FFFFFF β€” Caption colour in hex. colour your words. 🎨
  • --caption-duration SECONDS β€” Caption duration. how long they stay. ⏳
  • --caption-offset X β€” Caption horizontal offset (0 to centre captions). 0 to centre, periodt. ↔️
  • -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. so it does some stuff automatically, noted. πŸ“€

  • -r, --output-framerate FPS β€” Framerate of output (25,30,60). Used with --output-ppm-stream. pick 25, 30, or 60. 🎞️
  • --output-custom-log FILE β€” Output a custom format log file ('-' for STDOUT). custom log, custom vibes. πŸ“„
  • --load-config CONFIG_FILE β€” Load a config file. load it up. πŸ“‚
  • --save-config CONFIG_FILE β€” Save a config file with the current options. save your settings, queen. πŸ’Ύ
  • --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. so if you don't give a path, it tries 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. so be nice to the server, bestie. 😭

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

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

okay so that's how you turn your CVS history into a snackable log, bestie πŸ’…

πŸ¦‹ Custom Log Format πŸ¦‹

if you're rolling with something that isn't on the supported list, gource still gotchu. there's a custom log format that's pipe (|) delimited, and it's giving very choose-your-own-adventure. here's the tea:

  • timestamp β€” when the update went down, either an ISO 8601 or a unix timestamp, no cap.
  • username β€” the name of the user who made the update, aka the main character.
  • type β€” a single character for what kind of update it was: (A)dded, (M)odified, or (D)eleted.
  • file β€” the path of the file that got updated.
  • colour β€” a colour for the file in hex (FFFFFF) format. this one's optional, so you can skip it if you're feeling minimal.

🌸 Caption Log Format 🌸

gource can also drop captions along the timeline, like little commentary track moments. just specify a caption file using --caption-file, and format it like this pipe (|) delimited situation:

  • timestamp β€” an ISO 8601 or unix timestamp of when to display the caption.
  • caption β€” the caption itself.

πŸŽ€ Recording Videos πŸŽ€

want to record your gource masterpiece? there's a whole guide on the homepage with examples of recording videos with gource:

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

🌈 More Information 🌈

for guides and examples of using gource with various version control systems, slide into the gource homepage:

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 can use the mouse to inspect the detail of individual files and users. it's giving detective mode πŸ”

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. slay.

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 time scale / user avatar movement speed
  • (+-) β€” Adjust simulation speed
  • (Keypad +-) β€” Adjust camera zoom
  • (TAB) β€” Cycle through visible users
  • (F12) β€” Screenshot
  • (Alt+Enter) β€” Fullscreen toggle
  • (ESC) β€” Quit

πŸ‘‘ AUTHOR πŸ‘‘

Written by Andrew Caudwell

Project Homepage: http://gource.io

Copyright (C) 2009 Andrew Caudwell (acaudwell@gmail.com)

so basically, this program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. (periodt.)

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

🌟 ACKNOWLEDGEMENTS 🌟

Catalyst IT (catalyst.net.nz)

For supporting the development of Gource!


and that's the whole vibe, bestie. this was Gource(1) β€” go forth and slay your git history βœ¨πŸ’–