Skip to content
gyim edited this page Sep 13, 2010 · 6 revisions

The goal of the project is to create a full-featured, cross-platform GUI that has strong support for submodules.

Planned features

  • history browser (already implemented, although not polished)
  • index editor and commit tool with support of per-hunk staging/unstaging (currently supports staging/unstaging whole files)
  • branch manager and switcher
  • merge, rebase, cherry-pick with integrated diff and merge tool
  • fetch, push and managing of remote branches
  • … and more!

Submodule support

At the company where I work, we rely heavily on git’s submodule support: we put the platform/project-independent code into one or more submodules, and link these repos as submodules from the repository of each project. Unlike the recommended way to use submodules, we do not develop each module individually: we commit right into the submodules. That involves a lot of headache with the basic submodule commands and most git guis (that have submodule support at all): by git submodule update our submodules become detached immediately, which is usually forgotten when one commits…

So StupidGit will include features that will make your life easier if you use submodules as we do:

  • it will allow to switch the version of the main module easily while keeping the submodules in sync AND keeping them on a branch
  • help merging the main module when the submodule versions differ
  • warn you if you want to do something stupid :)
  • make it easy to check the referenced submodule versions of each main module commit.

StupidGit currently does not (and probably will not in the near future) support submodules in submodules: it will make the whole stuff much more difficult, and what’s more, I don’t need this feature :)

Fool-proof behavior

Another goal of StupidGit is to make a GUI that is to prevent you from doing something stupid. For example:

  • committing to a detached head
  • losing commits (by resetting a branch, for example)
  • rewriting history on commits that are already pushed to a remote
  • pushing the main module without pushing the referenced submodule version

StupidGit will let you do anything, but will warn you in a (hopefully) unobtrusive way. In the distant future you will be able to customize these warnings.

Clone this wiki locally