Show overview of multiple git repositories incl. sub-repositories and provide basic git interactions :
- Show current branch
- Show current branch's tracking/remote branch and ahead/behind counters
- Show current branch's trunk branch and ahead/behind counters
- Show remote branches
- Show status info for modified, staged, untracked, deleted or conflicting files on current branch
- Show history and change diffs on current branch
- Checkout to another local branch by selecting a local branch from dropdown list
- Basic git functions like
- status
- fetch
- pull
- push (forced)
- show diff of changed files
- Customizable context menu to trigger functionality, e.g. to start terminal or tool at current repositories root
- Automatically update repository status when filesystem changes are detected
- Python
- PyQt5, to implement a cross platform UI
- GitPython, to display repository info and trigger git actions
- PyInstaller, to bundle an easy to distribute application bundle
- fswatch, to track changes in filesystem
- create-dmg, to create nice DMG for bundled app
GitOver uses a configuration file that can be placed in your home directory or in a directory hierarchy that includes your git repositories.
E.g. if your repository is located at ~/workspace/gitover
then GitOver will search
.gitover
in the following directories, first match is used :
- ~/workspace/gitover
- ~/workspace
- ~
- asf.
The configuration file should be named .gitover
and contains YAML formatted
entries, for example
general:
# where to find `git` executable
git: /usr/local/bin/git
# # optional (default = "fswatch"), where to find `fswatch` executable.
# fswatch: /usr/local/bin/fswatch
# # optional (default = "true"), whether to use just one instance of fswatch to watch all repositories
# # or use one instance of fswatch per repository.
# fswatch-singleton: "true"
# # optional (default = <NOF_CORES> * 2)
# task-concurrency: 8
# # optional (default = ""), write logging to given path
# debug-log: ~/tmp/gitover.log
repo_commands:
- name: "finder"
title: "Finder"
cmd: "open '{root}'"
- name: "shell"
title: "Shell"
cmd: "open -a iTerm '{root}'"
- name: "gitk"
title: "Gitk"
cmd: /usr/local/bin/gitk
- name: gitgui
title: "Git Gui"
cmd: "/usr/local/bin/git gui"
status_commands:
conflict:
- name: "mergetool_bc"
title: "Merge (bc)"
cmd: "git mergetool --tool=beyondcompare -y '{path}'"
modified:
- name: "atom"
title: "Edit with Atom"
cmd: "/usr/local/bin/atom '{path}'"
- name: "subl"
title: "Edit with Sublime"
cmd: "/Users/manuelkoch/bin/subl '{path}'"
- name: "backup"
title: "Backup to *.modified"
cmd: "mv '{path}' '{path}'.modified"
untracked:
- name: "atom"
title: "Edit with Atom"
cmd: "/usr/local/bin/atom '{path}'"
- name: "subl"
title: "Edit with Sublime"
cmd: "/Users/manuelkoch/bin/subl '{path}'"
debug-log
: Create detailed logfile at given path
task-concurrency
: Use given number of background tasks for git actions like fetch/status or commit details
git
: Configure which git executable will be used
fswatch
: Configure which fswatch executable will be used
fswatch-singleton
: Only use one instance of fswatch to track all filesystem changes
Can contain a list of repository commands/tools that will be shown when opening context menu within a repository-widget.
Each command has keys:
name
: The name of the commandtitle
: The title of the command, will be displayed in the context menu entrycmd
: The command to be executed
The cmd
argument supports expansion of repository depending strings :
{root}
will get expanded to current repository's root directory{branch}
will get expanded to current repository's branch{trackingbranch}
will get expanded to current repository's tracking branch{trunkbranch}
will get expanded to current repository's trunk branch
Can contain a list of repository commands/tools for each status that will be shown when opening context menu within the status tab of currently selected repository-detail area.
The cmd
argument supports same expansion of repository depending strings
as repo_commands
and additionally :
{path}
will get expanded to relative path within current repository
GitOver uses concept of trunk branch to check for updates of contributed changes to
current repository during software development.
I.e. your teammates may continue to deliver new stuff on master branch.
By setting the git config variable gitover.trunkbranch
to origin/master you can tell
GitOver which trunk branch is for this repository to get notified when there are
changes that you could incorporate into your current local branch to keep up to date with
the trunk branch.
Double clicking the GitOver app doesn't start it - instead it crashes silently. It may still run when starting it explicitly on console. Cause may be misconfiguration or not yet installed XCode stuff after Mac OSX upgrade ( i.e. to Catalina ). You may need to reinstall XCode stuff to get git working again, see.
pip install --upgrade pip
pip install pip-tools wheel