Coder Social home page Coder Social logo

linarcx / giti Goto Github PK

View Code? Open in Web Editor NEW
52.0 4.0 0.0 393 KB

Permanent observer of your git directories

License: GNU General Public License v3.0

Vim Script 2.00% Meson 2.06% Nix 1.60% Vala 93.50% Python 0.25% Shell 0.59%
vala git watcher elementary-os gtk3 development-utility monitoring-tool notifications void-linux

giti's Introduction

A long time ago..

I had many projects on my machine. Some of them were managed by git. After a while, I accidentally lost all of my data. I rarely staeg/commit/pushed my changes to github/gitlab, since i didn't thought someday my machine will broke and all of my efforts will be destroyed! (TBH, i was a lazy man!)

After that tragic event, i decided to stage/commit/push my changes more regularly. But i had still one issue.

I didn't know which projects have staged files or untracked files.(Except that by examining each of them separately)

I wanted a solution that monitor my directories and notify me about latest changes.

So, This is exactly when i created giti.

How giti works?

  1. You add some git based directories.
  2. Giti periodically monitor changes in your repos and send system notifications.(every 10 minutes by default. But you can change it or disable it by setting it to 0)

Tip: This application uses libgit2-glib binding in vala language called Ggit to list untracked and staged files.

Extra features

  1. Giti can show you Untracked and Staged files in separate tabs.(This will help you to track changes easily)
  2. You can stage untracked files and also commit staged files by pressing buttons that exist in the bottom of each page.

Installation

Install it from source

You can install giti by compiling from source, here's the list of dependencies required:

hostmake dependencies:

  • ninja
  • meson
  • vala

buildtime dependencies:

  • gtk+-3.0
  • libgit2-glib-1.0
  • gee-0.8
  • granite

Building

meson build --prefix=/usr
sudo ninja -C build install

And finally, run it:

com.github.linarcx.giti

Distributions

Void

sudo xbps-install -S giti

Arch

https://aur.archlinux.org/packages/giti-git

Tip for Windows-manager's Users

Notice that, giti uses GLib.Notification internally. So users should install a notification agent to get notificaitons. (like: notify-osd, ...)

What does giti mean?

It's a persian word meaning universe:

گیتی یا جهان عبارت است از کل زمان و فضا و محتویات آن که شامل سیارات، اقمار، ریزسیارات، ستارگان، کهکشانها و محتویات فضای میان کهکشانی و در واقع کل ماده و انرژی و هرآنچه به آن مربوط است، می‌شود.

TODO

  • Create statistic page that will show all changes in all directories at a glance!
  • Remember the theme and default directory. (via: gsettings)
  • Revert back latest commit to stage area. (via: git reset --soft HEAD^)

Donate

  • Bitcoin: 13T28Yd37qPtuxwTFPXeG9dWPahwDzWHjy

  • Monero: 48VdRG9BNePEcrUr6Vx6sJeVz6EefGq5e2F5S9YV2eJtd5uAwjJ7Afn6YeVTWsw6XGS6mXueLywEea3fBPztUbre2Lhia7e

License

License

giti's People

Contributors

linarcx avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

giti's Issues

Build fails with vala 0.54.7

ninja: Entering directory `build'
[1/13] Compiling Vala source ../src/Main.vala ../src/Application.vala ../src/Widgets/Window.vala ../src/Widgets/WelcomePage.vala ../src/Widgets/WelcomeHeaderBar.vala ../src/Widgets/HeaderBar.vala ../src/Widgets/GridUntracked.vala ../src/Widgets/GridStaged.vala ../src/Util/Util.vala ../src/Util/AsyncStatus.vala
FAILED: src/com.github.linarcx.giti.p/Main.c src/com.github.linarcx.giti.p/Application.c src/com.github.linarcx.giti.p/Widgets/Window.c src/com.github.linarcx.giti.p/Widgets/WelcomePage.c src/com.github.linarcx.giti.p/Widgets/WelcomeHeaderBar.c src/com.github.linarcx.giti.p/Widgets/HeaderBar.c src/com.github.linarcx.giti.p/Widgets/GridUntracked.c src/com.github.linarcx.giti.p/Widgets/GridStaged.c src/com.github.linarcx.giti.p/Util/Util.c src/com.github.linarcx.giti.p/Util/AsyncStatus.c 
valac -C --vapidir /builddir/giti-1.0.0/vapi --pkg granite --pkg gee-0.8 --pkg libgit2-glib-1.0 --pkg gtk+-3.0 --color=always --directory src/com.github.linarcx.giti.p --basedir ../src ../src/Main.vala ../src/Application.vala ../src/Widgets/Window.vala ../src/Widgets/WelcomePage.vala ../src/Widgets/WelcomeHeaderBar.vala ../src/Widgets/HeaderBar.vala ../src/Widgets/GridUntracked.vala ../src/Widgets/GridStaged.vala ../src/Util/Util.vala ../src/Util/AsyncStatus.vala
../src/Widgets/GridStaged.vala:28.5-28.36: error: Name `_new_repo' is not valid for a GLib.Object property
    public Ggit.Repository _new_repo { get ; set ; }
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
../src/Widgets/GridStaged.vala:71.13-71.21: error: invalid left operand
        if( _new_repo == null ){
            ^^^^^^^^^
../src/Widgets/Window.vala:24.9-24.31: error: Name `_stack' is not valid for a GLib.Object property
        public Gtk.Stack _stack { get ; set ; }
        ^^^^^^^^^^^^^^^^^^^^^^^
../src/Widgets/GridStaged.vala:254.9-254.37: error: The name `add_titled' does not exist in the context of `GITI.Window._stack'
        main_window._stack.add_titled (grid, "staged", "Staged") ;
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
../src/Widgets/GridUntracked.vala:28.5-28.36: error: Name `_new_repo' is not valid for a GLib.Object property
    public Ggit.Repository _new_repo { get ; set ; }
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
../src/Widgets/GridUntracked.vala:58.13-58.21: error: invalid left operand
        if( _new_repo == null ){
            ^^^^^^^^^
../src/Widgets/HeaderBar.vala:39.5-39.45: error: Name `_grid_untracked' is not valid for a GLib.Object property
    public GITI.GridUntracked _grid_untracked { get ; set ; }
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
../src/Widgets/HeaderBar.vala:196.9-196.33: error: The name `load_page' does not exist in the context of `GITI.HeaderBar._grid_untracked'
        _grid_untracked.load_page (_paths[combo.get_active ()]) ;
        ^^^^^^^^^^^^^^^^^^^^^^^^^
../src/Widgets/HeaderBar.vala:38.5-38.39: error: Name `_grid_staged' is not valid for a GLib.Object property
    public GITI.GridStaged _grid_staged { get ; set ; }
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
../src/Widgets/HeaderBar.vala:197.9-197.30: error: The name `load_page' does not exist in the context of `GITI.HeaderBar._grid_staged'
        _grid_staged.load_page (_paths[combo.get_active ()]) ;
        ^^^^^^^^^^^^^^^^^^^^^^
../src/Widgets/HeaderBar.vala:35.5-35.40: error: Name `_cb_directories' is not valid for a GLib.Object property
    private Gtk.ComboBox _cb_directories { get ; set ; }
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
../src/Widgets/HeaderBar.vala:33.5-33.34: error: Name `_current_repo_path' is not valid for a GLib.Object property
    public File _current_repo_path { get ; set ; }
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
../src/Widgets/HeaderBar.vala:34.5-34.40: error: Name `_current_repo' is not valid for a GLib.Object property
    public Ggit.Repository _current_repo { get ; set ; }
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
../src/Widgets/Window.vala:28.9-28.45: error: Name `_welcome_page' is not valid for a GLib.Object property
        public GITI.WelcomePage _welcome_page { get ; set ; }
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
../src/Widgets/WelcomePage.vala:32.17-32.41: error: Invalid type for argument 1
        remove (main_window._welcome_page) ;
                ^^^^^^^^^^^^^^^^^^^^^^^^^
../src/Widgets/Window.vala:29.9-29.56: error: Name `_welcome_header_bar' is not valid for a GLib.Object property
        public GITI.WelcomeHeaderBar _welcome_header_bar { get ; set ; }
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
../src/Widgets/WelcomePage.vala:36.29-36.59: error: Invalid type for argument 1
        main_window.remove (main_window._welcome_header_bar) ;
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
../src/Widgets/Window.vala:27.9-27.46: error: Name `_main_header_bar' is not valid for a GLib.Object property
        public GITI.HeaderBar _main_header_bar { get ; set ; }
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
../src/Util/AsyncStatus.vala:26.5-26.36: error: Name `_new_repo' is not valid for a GLib.Object property
    public Ggit.Repository _new_repo { get ; set ; }
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Compilation failed: 19 error(s), 0 warning(s)
ninja: build stopped: subcommand failed.

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.