Git Watcher is a multi-platform desktop app written in pure HTML and Javascript using node-webkit.
It shows diff information about local staged/unstaged files and allows you to commit changes. UI is updated in real-time by detecting file changes and git index changes. Submodules also inform changes to their parent module.
It also organizes repository submodules in tabs, so that you can work easily with them without the need of having multiple git gui instances or shells.
In my opinion, the native git gui app is awful and lacks a lot of features. This app aims to outstand it :)
- Real-time multiple file diff information with line numbers and syntax highlighting
- Allows you to work with submodules organized in tabs.
- Allows you to open files by clicking on its name or lines numbers. You can even use your preferred editor!
- Shows current branch information: upstream branch and ahead/behind commit count.
- Menu bar with configuration options and utilities.
- System Tray support
Please consider downloading the proper build according to your distribution. See Troubleshooting if you cannot run the app.
- Linux x64 - Old dists: Ubuntu 12.04, 12.10 or derivative distributions
- Linux x64 - New dists: Ubuntu 13.04+, Gentoo, Arch, Fedora 18+
Windows & Mac binaries coming soon!
Just extract file contents and execute ./gitw.
You can also:
- Create a desktop shortcut :P
sudo npm link. A link to the app will be created in/usr/local/bin, so you can run the app usinggitwcommand. If it's a valid Git repository, the current working directory is used by default.
The application stores configuration data as a JSON file in ~./config/gitw/config.json.
Certain config values can be modified using the app options menu. Until the UI provides a complete way of customizing these values, you can edit the file yourself.
Current config file structure EXAMPLE:
{
"defaultRepository": "~/www/myproject", // default git repository to load on startup
"debugMode": false, // enable debugging
"diff": {
"contextLines": 4,
"ignoreEolWhitespace": true,
"highlight": {
"enabled": true,
"byFileExtension": { // enable/disable syntax highlighting by file extension
".js": true,
".php": true
}
}
},
"external": { // custom commands
"fileOpener": { // handle file opening, empty path uses system default application
"path": "/usr/local/netbeans-7.4/bin/netbeans",
"args": ["--open", "$FILE:$LINE"] // $FILE is replaced by the file path. $LINE is replaced by line number (if available)
},
"directoryOpener": { // handle directory opening, empty path uses system default application
"path": "",
"args": []
}
}
}I'm working on the following features (your help will be much appreciated!)
- Amend commit (Really hard to do without a proper API!)
- Alert when staging an unmerged file. Allow to checkout local/remote version.
- Allow to browse and checkout local recent branches.
- Better syntax highlighting.
- More configuration options.
- Git stash/pop.
- Shortcuts.
- Render images in diff.
- Git log: show errors/warnings.
Please read node-webkit wiki for details on how to run apps.
Requirements:
- NodeJS >= 0.10
- node-webkit. Download and extract its contents in
/opt/node-webkit.
Then:
- Clone repo and run
npm installor just runnpm install gitw. - Install nw-gyp:
npm install -g nw-gyp. - Rebuild git-utils and mmmagic dependencies based on the node-webkit version you are running. Eg:
cd node_modules/git-utils && nw-gyp rebuild --target=0.8.4. Do the same for mmmagic. - Run the app!
/opt/node-webkit/nw /path/to/gitw.
Also, you will find a helper script ./build.sh that creates a distributable package for Linux. It asumes you have node-webkit installed on /opt/node-webkit.
- The solution of lacking libudev.so.0
- ENOSPC error: You may run into that error when browsing large repositories. You need to increase the maximum number of watches for inotify:
echo fs.inotify.max_user_watches=65536 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p. That should be enough.