arcanis.me/projects/_posts/2013-02-12-git-etc.md
2016-02-02 00:55:13 +07:00

5.7 KiB

permalink hastr layout title short tags hasgui hasdocs developers license links
projects/git-etc true project git-etc git-etc git, python, qt, linux, daemon, system true false
Evgeniy Alekseev
GPLv3
Archlinux <a href="//aur.archlinux.org/packages/git-etc", title="AUR">AUR package</a>

Simple daemon that automatically creates git repository in the given directory and creates commit at the specified time interval.

$ git-etc --help
Simple daemon written on BASH for monitoring changes in files

Usage: git-etc [ -c | --config /etc/git-etc.conf ] [ -h | --help ] [ -v | --version ]

Parametrs:
  -c  --config      - path to configuration file
  -h  --help        - show this help and exit
  -v  --version     - show version and exit

See "man 1 git-etc" for more details
$ ctrlconf --help
GUI for git-etc daemon

Usage: ctrlconf [ --default ] [ -h | --help ] [ -v | --version ]

Additional parametrs:
      --default     - create default configuration file
  -h  --help        - show this help and exit
  -v  --version     - show version and exit

See "man 1 ctrlconf" for more details

Developers and contributors

{% for devel in page.developers %}

  • {{ devel }}{% endfor %}

License

  • {{ page.license }}

Installation

Instruction

  • Download an archive with latest version of source files.

  • Extract it and install the application:

    ./install.sh "/path/to/root"
    

    If you want install it to / you must run it as root, e.g.:

    sudo ./install.sh
    

    If no path is specified it will be installed to / by default.

Dependencies

I want note that all were tested on latest version of dependencies.

  • Bash (including awk, grep, sed)
  • git
  • python2 (make)
  • systemd (optional, service file)
  • python2-pyqt4 (optional, GUI)
  • xterm (optional, GUI)

How to use

If you want to start the daemon into /etc just run

systemctl start git-etc

If you want to enable daemon autoload run

systemctl enable git-etc

But you may change path to configuration file or change parameters. To do it just copy (recommended) the source configuration file to new path

cp /etc/git-etc.conf /new/path/to/file/git-etc.conf

and edit it. Then copy the source service file to /etc:

cp /usr/lib/systemd/system/git-etc.service /etc/systemd/system/git-etc-my-profile.service

Replace following string in the file:

ExecStart=/usr/bin/git-etc -c /etc/git-etc.conf

to

ExecStart=/usr/bin/git-etc -c /new/path/to/file/git-etc.conf

Configuration

All settings are stored in /etc/git-etc.conf. After edit them you must restart daemon

systemctl restart git-etc

Options

DIRECTORY Full path to working directory with observed files. Default is /etc.
TIMESLEEP Time interval between updates, hours. It must be integer and >= 1. Default is 12.
IGNORELIST List of files that will not be observed. Separator is ";;". May be empty.
FORALL 1 will enable access for normal user. Default is 1.

Graphical user interface

Control Config (ctrlconf) is GUI for git-etc daemon written on Python2/PyQt4. This application allows you to view a list of commits and changes in files recorded in commit messages. Also, this application allows you to roll back to a specific commit all files (git reset --hard) or individual files (git diff && git apply). And you may merge old and new configuration files (used two branches repository - master and experimental). The application may need root privileges. Make sure that sudo package is installed.

Configuration

Just run the application and open the settings window from menu!

Screenshots

(Screenshots in Russian, but GUI has English translation.)

{% assign scrdesc = "Main window" %} {% assign scrname = "git-etc_mainwindow" %} {% include prj_scr.html %} {% assign scrdesc = "About window" %} {% assign scrname = "git-etc_aboutwindow" %} {% include prj_scr.html %} {% assign scrdesc = "Commit window" %} {% assign scrname = "git-etc_commitwindow" %} {% include prj_scr.html %} {% assign scrdesc = "Merging window" %} {% assign scrname = "git-etc_mergingwindow" %} {% include prj_scr.html %} {% assign scrdesc = "Roll back window" %} {% assign scrname = "git-etc_rollbackwindow" %} {% include prj_scr.html %}