What is Easy Git (eg)?In short, Easy GIT is a single-file wrapper script for git, designed to make git easy to learn and use. (If you are not familiar with what git is, this page will make no sense to you.) In more detail:
- eg focuses on documentation and examples
- Much of the work in eg is plugging a gap in git documentation: providing simple tutorial-oriented command-specific built-in help.
- eg's documentation is example driven
- eg removes obstacles to "getting" git
- eg removes many principle-of-least-surprise violations that catch git newbies unaware
- eg provides subcommands that are a natural extension of capabilities users know from cvs/svn (eg also takes care to make sure the modifications to its subcommands are easily discoverable and error-avoiding for existing git users as well!)
- eg makes git easy to learn and use
- easily learnable - I claim you can learn git faster by first using eg than by starting with git directly
- interchangable - You can switch between using eg and using git as often as you'd like. I do it all the same on the same repositories.
- fully capable - Unlike other wrappers for git, eg does not remove or limit any capabilities of git in order to simplify it; it just tries to layer concepts and present the capabilities in a more orderly fashion.
- compatible - eg is essentially command-line backwards compatible to git; those familiar with git can start using eg by simply replacing "git" with "eg" in their commands.
- eg is biased towards luring existing svn users, due to the projects I work on and svn's large installed base
Existing Git users.EasyGit is designed to make git easier to use and learn, not to extend git's functionality. Because of this, you won't find new capabilities in EasyGit. However, you don't need retraining either; eg is mostly backward compatible with git, and any incompatibilities can be discovered naturally and innocuosly during normal workflow (well, except for the eg push default -- see below). All you need to do is replace 'git' with 'eg' in your commands.
The two biggest shockers for existing git users are the changes in defaults to diff (which include both staged and unstaged changes by default) and push (which pushes the current branch instead of matching refs by default). The latter is potentially problmatic, as it could result in pushing changes the user didn't want. However, the current git default is equally bad for many new users. The only safe thing for both sets is probably to require users to specify what to push in all cases; however, that seems pretty annoying for lots of very basic setups. I guess the push default of eg is my one big ugly incompatibility with git.
Those curious about the precise differences between eg and git and the rationale for these changes, can read my verbose explanations.
Documentation.EasyGit's documentation is meant as built-in help; however, you can view it online.
There's also a (pdf) presentation, An Introduction to (Easy) Git (more of a capability overview than a tutorial, though example commands are shown).
Download/InstallThree easy steps:
- Install git >= 1.5.4 (eg is just a wrapper, which simply passes its arguments on to git except in specific important cases).
- Download a copy of eg
- Place the eg script somewhere in your path
DevelopmentYou can follow development of eg by cloning a copy. Use either
git clone git://gitorious.org/eg/mainline.git egor
eg clone git://gitorious.org/eg/mainline.git eg
Other similar projectsI feel that Easy Git is different from the others in the field in its combination of goals (a) it focuses on trying to be easy to learn for former cvs/svn users, (b) it tries to serve as a training tool for core git rather than trying to replace core git entirely, (c) it tries to remain backward compatible to core git (so that users already familiar with git don't need any new training and to make it easier for core git to adopt changes in eg), and (d) it's only a single file script to make it easier to try out.
There are some other interesting alternatives out there that decided to concentrate on different goals, including:
- yap (announcement), by Steven Walter A porcelain that concentrates on making git easier for those interacting with subversion repositories; particularly trying to reduce the impedance mismatch that exists between the very different workflows typically used with native git repositories versus git-svn ones.
- pyrite, by Govind Salinas A porcelain focusing on providing a Mercurial-like user interface.
- yyhelp, by Tim Janik A single file bash script serving as a minimal porcelain. Emphasis on minimal; it's a very short file with no documentation that I could find.
- vng, by Thomas Zander A porcelain focusing on providing a darcs-like user interface.
If you liked this article, subscribe to the feed by clicking the image below to keep informed about new contents of the blog: