Coder Social home page Coder Social logo

u-quark / gg Goto Github PK

View Code? Open in Web Editor NEW
10.0 4.0 0.0 533 KB

gg - git (G)UI: A tool for interactively manipulating the history of git repos and for making easy (enforcing) the usage of good (opinionated) practices.

License: GNU General Public License v3.0

Haskell 85.86% Nix 4.25% Mustache 0.68% Python 9.20%
git ui tui libgit libgit2 nix static-binary brick ncurses cli haskell vty

gg's Introduction

GG Mascot

gg - git (G)UI

A tool for interactively manipulating the history of git repos and for making easy (enforcing) the usage of good (opinionated) practices.

GitHub Actions badge License: GPLv3+

Install

Caution: this is very much work in progress.

gg is built as a single statically linked binary. So to install it you can just download the binary from the latest nightly build and chmod +x it.

Alternatively, you can build it with nix. You can speed up the build by using nix binary caches, thanks to Cachix, by adding these to your ~/.config/nix/nix.conf:

substituters = [...] https://static-haskell-nix.cachix.org https://gg.cachix.org
trusted-public-keys = [...] static-haskell-nix.cachix.org0:Q17HawmAwaM1/BfIxaEDKAxwTOyRVhPG5Ji9K3+FvUU= gg.cachix.org-1:pCGtBoTzcTr3Nd5ou0061JBJpZPUWBBfChdAp7H8xh8=

Features (my TODO list)

  • Apply changes immediately - no stage/index.
  • Easy undo/redo.
  • Re-order commits.
  • Move commits to different branches.
  • Cut/Copy paste commits.
  • Protect master commits from changes. Prevent (force?) pushing to master.
  • Update policy (fetch/rebase/push).
  • Update all branches (only fail for the current one).
  • Cut/Copy paste changes around.
  • Merge strategy (create merge commit and push after rebase).
  • Read configuration from ~/.gitconfig.
  • Auto-refresh repo view powered by inotify.
  • Collapse commits corresponding to merge into one, visually (implies rebase-merge strategy). Collapsed commit can be expanded. No complicated history graph: collapse feature branch commits into a single list.
  • Upon startup gg saves all uncommitted changes and untracked files (but not ignored) to a commit on HEAD (named WIP - gg) and upon exit resets all those commits that are on top. This is done that local changes are not lost while re-writing the history.
  • Protect from merging WIP commits to master. Same for TODO/XXX/FIXME/FIXUP/SQUASHME.
  • Always push with lease when updating remote.
  • GTK GUI
  • Enforce commit messages guidelines. Auto format to re-wrap text of commit messages. Limit title line length. Disallow non-imperative phrasing.
  • When rebasing/updating a branch, rebase also other branches that are on top of that: rebase on top of the commit that diverged from the other branch.
  • git pull/fetch always with --prune
  • git push non-master branches always with --force-with-lease
  • Knows about merge requests on bitbucket/github/gitlab etc. Knows to fetch info from them and also close merge requests there. Also annotates (merge) commits with merge request info from there.
  • Recursive git blame: ability to follow a line as it changed throughout the git history.
  • Support for different git workflows (Git flow command).

License

Copyright (C) 2019-2023 Lefteris Kritikos ([email protected])

GPLv3 Logo

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.

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 https://www.gnu.org/licenses/.

Acknowledgments

base16 color schemes

All color schemes are based on Tinted Theming (which in turn was originally based on base16). Individual authors for each of the color schemes can be found here.

Thanks to:

gg's People

Contributors

u-quark avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

gg's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.