arcanis.me/projects/git-etc.html
2014-01-13 14:25:13 +04:00

218 lines
11 KiB
HTML

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<title>git-etc</title>
<meta name="author" content="Evgeniy Alekseev" />
<meta name="description" content="arcanis' homepage" />
<link rel="license" type="text/html" href="/LICENSE" />
<link rel="stylesheet" href="/stylesheets/styles.css">
<link rel="stylesheet" href="/stylesheets/pygment_trac.css">
<link rel="shortcut icon" href="/resources/icon.ico">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<!-- comment block -->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<!-- sharethis -->
<script type="text/javascript">var switchTo5x=false;</script>
<script type="text/javascript" src="http://w.sharethis.com/button/buttons.js"></script>
<script type="text/javascript">stLight.options({publisher: "70dd9cde-7276-47af-8de7-9c43883daf2b", doNotHash: false, doNotCopy: false, hashAddressBar: false});</script>
</head>
<body>
<div class="wrapper">
<header>
<h1>git-etc</h1>
<p class="view">Simple daemon for monitoring changes in files</p>
<p class="view"><a href="#information">General information</a><br>
<a href="#installation">Installation guide</a><br>
<a href="#howto">How to use</a><br>
<a href="#configuration">Configuration</a><br>
<a href="#gui">GUI</a><br>
<a href="#screenshots">Screenshots</a><br>
<a href="#links">Links</a></p>
</header>
<section>
<h2><a name="information" class="anchor" href="#information"><span class="octicon octicon-link"></span></a>Information</h2>
<p align="justify">Simple daemon that automatically creates git repository in the given directory and creates commit at the specified time interval.</p>
<pre><code>$ 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</code></pre>
<pre><code>$ 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</code></pre>
<h3><a name="devel" class="anchor" href="#devel"><span class="octicon octicon-link"></span></a>Developers and contributors</h3>
<ul>
<li>Evgeniy Alekseev</li>
</ul>
<h3><a name="license" class="anchor" href="#license"><span class="octicon octicon-link"></span></a>License</h3>
<ul>
<li>GPLv3</li>
</ul>
<h2><a name="installation" class="anchor" href="#installation"><span class="octicon octicon-link"></span></a>Installation</h2>
<h3><a name="instruction" class="anchor" href="#instruction"><span class="octicon octicon-link"></span></a>Instruction</h3>
<ul>
<li><p align="justify">Download an <a href="https://github.com/arcan1s/git-etc/releases">archive</a> with latest version of source files.</p></li>
<li><p align="justify">Extract it and install the application:</p>
<pre><code>./install.sh "/path/to/root/package"</code></pre>
<p align="justify">If you want install it to <code>/</code> you must run it as root, e.g.:</p>
<pre><code>sudo ./install.sh "/path/to/root/package"</code></pre>
<p align="justify">If no path is specified it will be installed to <code>/</code> by default.</p></li>
</ul>
<h3><a name="dependencies" class="anchor" href="#dependencies"><span class="octicon octicon-link"></span></a>Dependencies</h3>
<p align="justify">I want note that all were tested on latest version of dependencies.</p>
<ul>
<li>Bash (including awk, grep, sed)</li>
<li>git</li>
<li>python2 <i>(make)</i></li>
<li>systemd <i>(optional, service file)</i></li>
<li>python2-pyqt4 <i>(optional, GUI)</i></li>
<li>xterm <i>(optional, GUI)</i></li>
</ul>
<h2><a name="howto" class="anchor" href="#howto"><span class="octicon octicon-link"></span></a>How to use</h2>
<p align="justify">If you want to start the daemon into <code>/etc</code> just run</p>
<pre><code>systemctl start git-etc</code></pre>
<p align="justify">If you want to enable daemon autoload run</p>
<pre><code>systemctl enable git-etc</code></pre>
<p align="justify">But you may change path to configuration file or change parameters. To do it just copy (recommended) the source configuration file to new path</p>
<pre><code>cp /etc/git-etc.conf /new/path/to/file/git-etc.conf</code></pre>
<p align="justify">and edit it. Then copy the source service file to <code>/etc</code>:</p>
<pre><code>cp /usr/lib/systemd/system/git-etc.service /etc/systemd/system/git-etc-my-profile.service</code></pre>
<p align="justify">Replace following string in the file:</p>
<pre><code>ExecStart=/usr/bin/git-etc -c /etc/git-etc.conf</code></pre>
<p align="justify">to</p>
<pre><code>ExecStart=/usr/bin/git-etc -c /new/path/to/file/git-etc.conf</code></pre>
<h2><a name="configuration" class="anchor" href="#configuration"><span class="octicon octicon-link"></span></a>Configuration</h2>
<p align="justify">All settings are stored in <code>/etc/git-etc.conf</code>. After edit them you must restart daemon</p>
<pre><code>systemctl restart git-etc</code></pre>
<h3><a name="options" class="anchor" href="#options"><span class="octicon octicon-link"></span></a>Options</h3>
<table>
<tr>
<th>DIRECTORY</th>
<td><p align="justify">Full path to working directory with observed files. Default is <code>/etc</code>.</p></td>
</tr>
<tr>
<th>TIMESLEEP</th>
<td><p align="justify">Time interval between updates. It must be integer and >= 1. Default is <code>12</code>.</p></td>
</tr>
<tr>
<th>IGNORELIST</th>
<td><p align="justify">List of files that will not be observed. Separator is ";;". May be empty.</td>
</tr>
<tr>
<th>FORALL</th>
<td><p align="justify"><code>1</code> will enable access for normal user. Default is <code>1</code>.</td>
</tr>
</table>
<h2><a name="gui" class="anchor" href="#gui"><span class="octicon octicon-link"></span></a>Graphical user interface</h2>
<p align="justify">Control Config (<code>ctrlconf</code>) is GUI for <code>git-etc</code> daemon written on <code>Python2/PyQt4</code>. 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 (<code>git reset --hard</code>) or individual files (<code>git diff && git apply</code>). 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 <code>sudo</code> package is installed.</p>
<h3><a name="gui_configuration" class="anchor" href="#gui_configuration"><span class="octicon octicon-link"></span></a>Configuration</h3>
<p align="justify">Just run the application and open the settings window from menu!</p>
<h3><a name="screenshots" class="anchor" href="#screenshots"><span class="octicon octicon-link"></span></a>Screenshots</h3>
<p align="justify">(Screenshots in Russian, but GUI has English translation.)</p>
<p align="justify">Main window:<br>
<a href="/resources/screenshots/git-etc_mainwindow.png"><img src="/resources/preview/git-etc_mainwindow_prev.jpg"></a><br>
About window:<br>
<a href="/resources/screenshots/git-etc_aboutwindow.png"><img src="/resources/preview/git-etc_aboutwindow_prev.jpg"></a><br>
Commit changes window:<br>
<a href="/resources/screenshots/git-etc_commitwindow.png"><img src="/resources/preview/git-etc_commitwindow_prev.jpg"></a><br>
Merging window:<br>
<a href="/resources/screenshots/git-etc_mergingwindow.png"><img src="/resources/preview/git-etc_mergingwindow_prev.jpg"></a><br>
Roll back window:<br>
<a href="/resources/screenshots/git-etc_rollbackwindow.png"><img src="/resources/preview/git-etc_rollbackwindow_prev.jpg"></a></p>
<h2><a name="links" class="anchor" href="#links"><span class="octicon octicon-link"></span></a>Links</h2>
<ul>
<li><a href="https://github.com/arcan1s/git-etc">GitHub repo</a></li>
<li><a href="https://github.com/arcan1s/git-etc/releases">Latest release</a></li>
<li>Archlinux <a href="https://aur.archlinux.org/packages/git-etc">AUR package</a></li>
</ul>
<!-- comment block -->
<script type="text/javascript" src="http://datejs.googlecode.com/svn/trunk/build/date-en-US.js"></script>
<script type="text/javascript">
$("#post p").each( function(index) {
if (index > 0 && $.trim($(this).text()).length > 0) {
$(this).attr("id", "par" + index.toString());
var html = $(this).html();
$(this).html(html + " <a href='#par" + index.toString() + "'>#</a>");
}
});
</script>
<div id="comments">
<h2>Comments</h2>
<div id="header">
Want to leave a comment? Visit <a href="https://github.com/arcan1s/arcan1s.github.io/issues/1"> this post's issue page on GitHub</a> (you'll need a GitHub account).
</div>
</div>
<script type="text/javascript">
function loadComments(data) {
for (var i=0; i<data.length; i++) {
var cuser = data[i].user.login;
var cuserlink = "https://www.github.com/" + data[i].user.login;
var clink = "https://github.com/arcan1s/arcan1s.github.io/issues/1#issuecomment-" + data[i].url.substring(data[i].url.lastIndexOf("/")+1);
var cbody = data[i].body_html;
var cavatarlink = data[i].user.avatar_url;
var cdate = Date.parse(data[i].created_at).toString("yyyy-MM-dd HH:mm:ss");
$("#comments").append("<div class='comment'><div class='commentheader'><div class='commentgravatar'>" + '<img src="' + cavatarlink + '" alt="" width="20" height="20">' + "</div><a class='commentuser' href=\""+ cuserlink + "\">" + cuser + "</a><a class='commentdate' href=\"" + clink + "\">" + cdate + "</a></div><div class='commentbody'>" + cbody + "</div></div>");
}
}
$.ajax("https://api.github.com/repos/arcan1s/arcan1s.github.io/issues/1/comments?per_page=100", {
headers: {Accept: "application/vnd.github.full+json"},
dataType: "json",
success: function(msg){
loadComments(msg);
}
});
</script>
<!-- end of comment block -->
</section>
<footer>
<p class="view"><a href="javascript:history.back()">Back</a><br>
<a href="/">Back to Homepage</a></p>
<span class='st_vkontakte'></span>
<span class='st_facebook'></span>
<span class='st_twitter'></span>
<span class='st_googleplus'></span>
<span class='st_livejournal'></span>
<p><small>Hosted on GitHub Pages. <a href="pages/authors">Authors</a></small></p>
</footer>
</div>
<script src="/javascripts/scale.fix.js"></script>
</body>
</html>