This is an automated email from the git hooks/post-receive script. x2go pushed a change to branch master in repository x2gobroker. from 6a8e737 Makefile: use instead of 'rm -f' new 6c1febe Provide configuration alternative to having /etc/defaults/* scripts parsed in by init scripts. Make X2Go Session Broker ready for being run via systemd. new 81f979d Provide symlink x2gobroker-daemon. new 1f80caf Provide systemd service files for x2gobroker-daemon and x2gobroker-authservice. The 3 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Summary of changes: Makefile | 2 + bin/x2gobroker-daemon | 1 + debian/changelog | 6 +++ debian/x2gobroker-daemon.install | 2 +- debian/x2gobroker-daemon.links | 1 + etc/broker/defaults.conf | 85 ++++++++++++++++++++++++++++++++++++++ init/x2gobroker-daemon.init | 2 +- rpm/x2gobroker-daemon.init | 2 +- sbin/x2gobroker-daemon-debug | 2 +- x2gobroker-authservice.service | 11 +++++ x2gobroker-daemon.service | 10 +++++ x2gobroker.spec | 1 + x2gobroker/defaults.py | 60 +++++++++++++++++++++++++++ 13 files changed, 181 insertions(+), 4 deletions(-) create mode 120000 bin/x2gobroker-daemon create mode 100644 debian/x2gobroker-daemon.links create mode 100644 etc/broker/defaults.conf create mode 100644 x2gobroker-authservice.service create mode 100644 x2gobroker-daemon.service -- Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/x2gobroker.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2gobroker. commit 6c1febecda29cf05ef4ec4a90cb7b3ed3b298bdd Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Mon Feb 24 10:41:58 2014 +0100 Provide configuration alternative to having /etc/defaults/* scripts parsed in by init scripts. Make X2Go Session Broker ready for being run via systemd. --- debian/changelog | 3 ++ etc/broker/defaults.conf | 85 ++++++++++++++++++++++++++++++++++++++++++++++ x2gobroker/defaults.py | 60 ++++++++++++++++++++++++++++++++ 3 files changed, 148 insertions(+) diff --git a/debian/changelog b/debian/changelog index 04a875e..97cd1b2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -80,6 +80,9 @@ x2gobroker (0.0.3.0-0x2go1) UNRELEASED; urgency=low - Be more precise in Debian et al. init scripts when checking if the service is already running. - Add JSON WebUI backend for X2Go Session Broker. + - Provide configuration alternative to having /etc/defaults/* scripts parsed + in by init scripts. Make X2Go Session Broker ready for being run via + systemd. * debian/control: + Replace LDAP support with session brokerage support in LONG_DESCRIPTION. + Fix SYNOPSIS texts. diff --git a/etc/broker/defaults.conf b/etc/broker/defaults.conf new file mode 100644 index 0000000..f2b1031 --- /dev/null +++ b/etc/broker/defaults.conf @@ -0,0 +1,85 @@ +[common] +# X2Go Broker Session Broker (common) configuration for Debian + +# The posix user/group ID the broker runs under (do not change!) +# if you change those nonetheless, make sure that the log file +# directory (default: /var/log/x2gobroker) and files in there are +# writable by that user +#X2GOBROKER_DAEMON_USER=x2gobroker +#X2GOBROKER_DAEMON_GROUP=x2gobroker + +# The posix user under which the x2gobroker-agent can be launched on +# remote X2Go Servers. +#X2GOBROKER_AGENT_USER=x2gobroker + +# Control debug mode (0=disable, 1=enable). +# +# Apart from verbose logging in /var/log/x2gobroker/*.log, this will +# also make the broker available through http GET method requests +# (otherwise: POST method requests only) and you will be able to test +# the broker through your web browser +# +# This value has an effect on all (Python-based) X2Go Session Broker +# services and can be overridden in /etc/default/x2gobroker-* files. +#X2GOBROKER_DEBUG=0 + +# Default X2Go Session Broker backend (available: zeroconf, inifile) +#X2GOBROKER_DEFAULT_BACKEND=inifile + +# Path to the X2Go Session Broker's configuration file +#X2GOBROKER_CONFIG=/etc/x2go/x2gobroker.conf + +# Path to the X2Go Session Broker's session profiles file (when using the inifile backend) +#X2GOBROKER_SESSIONPROFILES=/etc/x2go/broker/x2gobroker-sessionprofiles.conf + +# Path to the X2Go Session Broker's agent command +#X2GOBROKER_AGENT_CMD=/usr/lib/x2go/x2gobroker-agent + +# The unix socket file for communication between the broker and the authentication service. +#X2GOBROKER_AUTHSERVICE_SOCKET=/run/x2gobroker/x2gobroker-authservice.socket + +[daemon] +# X2Go Session Broker configuration for Debian + +# Bind standalone daemon to this address:port +#DAEMON_BIND_ADDRESS=127.0.0.1:8080 + +# Control debug mode (0=disable, 1=enable). +# +# Apart from verbose logging in /var/log/x2gobroker/*.log, this will +# also make the broker available through http GET method requests +# (otherwise: POST method requests only) and you will be able to +# test the broker through your web browser. +# +# This option can also be configured in /etc/default/python-x2go. +# The value configured here overrides the value from python-x2go +# defaults and only sets the x2gobroker-daemon into debug mode. +#X2GOBROKER_DEBUG=0 + +########################################################## +### ### +### Enable SSL Support ### +### o You have to create your own SSL certificates ### +### o You have to actively uncomment the below SSL ### +### relevant line to enable https:// in x2gobroker ### +### ### +########################################################## + +# SSL certificate file +#X2GOBROKER_SSL_CERTFILE=/etc/x2go/broker/ssl/broker.crt + +# SSL key file (ensure permissions are set to root:x2gobroker:0640) +#X2GOBROKER_SSL_KEYFILE=/etc/x2go/broker/ssl/broker.key + +[authservice] +# X2Go Session Broker (PAM Authentication Service) configuration for Debian + +# Control debug mode (0=disable, 1=enable) of the X2Go Broker Authentication +# Service. +# +# Logging is (by default) written to /var/log/x2gobroker/*log. +# +# This option can also be configured in /etc/default/python-x2go. +# The value configured here overrides the value from python-x2go +# defaults and only sets the x2gobroker-authservice into debug mode. +#X2GOBROKER_DEBUG=0 diff --git a/x2gobroker/defaults.py b/x2gobroker/defaults.py index d4b0593..e65fd31 100644 --- a/x2gobroker/defaults.py +++ b/x2gobroker/defaults.py @@ -21,21 +21,41 @@ # modules import os +import sys import uuid import getpass import socket +import ConfigParser import logging from loggers import logger_broker, logger_access, logger_error, X2GOBROKER_DAEMON_USER X2GOBROKER_USER = getpass.getuser() +PROG_NAME = os.path.basename(sys.argv[0]) + +iniconfig_loaded = None +iniconfig_section = '-'.join(PROG_NAME.split('-')[1:]) +X2GOBROKER_DEFAULTS = "/etc/x2go/broker/defaults.conf" +if os.path.isfile(X2GOBROKER_DEFAULTS) and os.access(X2GOBROKER_DEFAULTS, os.R_OK): + iniconfig = ConfigParser.SafeConfigParser() + iniconfig.optionxform = str + iniconfig_loaded = iniconfig.read(X2GOBROKER_DEFAULTS) + if os.environ.has_key('X2GOBROKER_DAEMON_GROUP'): X2GOBROKER_DAEMON_GROUP=os.environ['X2GOBROKER_DAEMON_GROUP'] +elif iniconfig_loaded and iniconfig.has_option(iniconfig_section, 'X2GOBROKER_DAEMON_GROUP'): + X2GOBROKER_DAEMON_GROUP=iniconfig.get(iniconfig_section, 'X2GOBROKER_DAEMON_GROUP') +elif iniconfig_loaded and iniconfig.has_option('common', 'X2GOBROKER_DAEMON_GROUP'): + X2GOBROKER_DAEMON_GROUP=iniconfig.get('common', 'X2GOBROKER_DAEMON_GROUP') else: X2GOBROKER_DAEMON_GROUP="x2gobroker" if os.environ.has_key('X2GOBROKER_AGENT_USER'): X2GOBROKER_AGENT_USER=os.environ['X2GOBROKER_AGENT_USER'] +elif iniconfig_loaded and iniconfig.has_option(iniconfig_section, 'X2GOBROKER_AGENT_USER'): + X2GOBROKER_AGENT_USER=iniconfig.get(iniconfig_section, 'X2GOBROKER_AGENT_USER') +elif iniconfig_loaded and iniconfig.has_option('common', 'X2GOBROKER_AGENT_USER'): + X2GOBROKER_AGENT_USER=iniconfig.get('common', 'X2GOBROKER_AGENT_USER') else: X2GOBROKER_AGENT_USER="x2gobroker" @@ -45,14 +65,26 @@ else: if os.environ.has_key('X2GOBROKER_DEBUG'): X2GOBROKER_DEBUG = ( os.environ['X2GOBROKER_DEBUG'].lower() in ('1', 'on', 'true', 'yes', ) ) +elif iniconfig_loaded and iniconfig.has_option(iniconfig_section, 'X2GOBROKER_DEBUG'): + X2GOBROKER_DEBUG=iniconfig.get(iniconfig_section, 'X2GOBROKER_DEBUG') +elif iniconfig_loaded and iniconfig.has_option('common', 'X2GOBROKER_DEBUG'): + X2GOBROKER_DEBUG=iniconfig.get('common', 'X2GOBROKER_DEBUG') else: X2GOBROKER_DEBUG = False if os.environ.has_key('X2GOBROKER_DEBUG_INTERACTIVELY'): X2GOBROKER_DEBUG_INTERACTIVELY = ( os.environ['X2GOBROKER_DEBUG_INTERACTIVELY'].lower() in ('1', 'on', 'true', 'yes', ) ) +elif iniconfig_loaded and iniconfig.has_option(iniconfig_section, 'X2GOBROKER_DEBUG_INTERACTIVELY'): + X2GOBROKER_DEBUG_INTERACTIVELY=iniconfig.get(iniconfig_section, 'X2GOBROKER_DEBUG_INTERACTIVELY') +elif iniconfig_loaded and iniconfig.has_option('common', 'X2GOBROKER_DEBUG_INTERACTIVELY'): + X2GOBROKER_DEBUG_INTERACTIVELY=iniconfig.get('common', 'X2GOBROKER_DEBUG_INTERACTIVELY') else: X2GOBROKER_DEBUG_INTERACTIVELY = False if os.environ.has_key('X2GOBROKER_TESTSUITE'): X2GOBROKER_TESTSUITE = ( os.environ['X2GOBROKER_TESTSUITE'].lower() in ('1', 'on', 'true', 'yes', ) ) +elif iniconfig_loaded and iniconfig.has_option(iniconfig_section, 'X2GOBROKER_TESTSUITE'): + X2GOBROKER_TESTSUITE=iniconfig.get(iniconfig_section, 'X2GOBROKER_TESTSUITE') +elif iniconfig_loaded and iniconfig.has_option('common', 'X2GOBROKER_TESTSUITE'): + X2GOBROKER_TESTSUITE=iniconfig.get('common', 'X2GOBROKER_TESTSUITE') else: X2GOBROKER_TESTSUITE = False @@ -68,21 +100,37 @@ if X2GOBROKER_TESTSUITE: if os.environ.has_key('X2GOBROKER_CONFIG'): X2GOBROKER_CONFIG = os.environ['X2GOBROKER_CONFIG'] +elif iniconfig_loaded and iniconfig.has_option(iniconfig_section, 'X2GOBROKER_CONFIG'): + X2GOBROKER_CONFIG=iniconfig.get(iniconfig_section, 'X2GOBROKER_CONFIG') +elif iniconfig_loaded and iniconfig.has_option('common', 'X2GOBROKER_CONFIG'): + X2GOBROKER_CONFIG=iniconfig.get('common', 'X2GOBROKER_CONFIG') else: X2GOBROKER_CONFIG = "/etc/x2go/x2gobroker.conf" if os.environ.has_key('X2GOBROKER_SESSIONPROFILES'): X2GOBROKER_SESSIONPROFILES = os.environ['X2GOBROKER_SESSIONPROFILES'] +elif iniconfig_loaded and iniconfig.has_option(iniconfig_section, 'X2GOBROKER_SESSIONPROFILES'): + X2GOBROKER_SESSIONPROFILES=iniconfig.get(iniconfig_section, 'X2GOBROKER_SESSIONPROFILES') +elif iniconfig_loaded and iniconfig.has_option('common', 'X2GOBROKER_SESSIONPROFILES'): + X2GOBROKER_SESSIONPROFILES=iniconfig.get('common', 'X2GOBROKER_SESSIONPROFILES') else: X2GOBROKER_SESSIONPROFILES = "/etc/x2go/broker/x2gobroker-sessionprofiles.conf" if os.environ.has_key('X2GOBROKER_AGENT_CMD'): X2GOBROKER_AGENT_CMD = os.environ['X2GOBROKER_AGENT_CMD'] +elif iniconfig_loaded and iniconfig.has_option(iniconfig_section, 'X2GOBROKER_AGENT_CMD'): + X2GOBROKER_AGENT_CMD=iniconfig.get(iniconfig_section, 'X2GOBROKER_AGENT_CMD') +elif iniconfig_loaded and iniconfig.has_option('common', 'X2GOBROKER_AGENT_CMD'): + X2GOBROKER_AGENT_CMD=iniconfig.get('common', 'X2GOBROKER_AGENT_CMD') else: X2GOBROKER_AGENT_CMD = "/usr/lib/x2go/x2gobroker-agent" if os.environ.has_key('X2GOBROKER_AUTHSERVICE_SOCKET'): X2GOBROKER_AUTHSERVICE_SOCKET=os.environ['X2GOBROKER_AUTHSERVICE_SOCKET'] +elif iniconfig_loaded and iniconfig.has_option(iniconfig_section, 'X2GOBROKER_AUTHSERVICE_SOCKET'): + X2GOBROKER_AUTHSERVICE_SOCKET=iniconfig.get(iniconfig_section, 'X2GOBROKER_AUTHSERVICE_SOCKET') +elif iniconfig_loaded and iniconfig.has_option('common', 'X2GOBROKER_AUTHSERVICE_SOCKET'): + X2GOBROKER_AUTHSERVICE_SOCKET=iniconfig.get('common', 'X2GOBROKER_AUTHSERVICE_SOCKET') else: if os.path.isdir('/run'): RUNDIR = '/run' @@ -92,16 +140,28 @@ else: if os.environ.has_key('X2GOBROKER_DEFAULT_BACKEND'): X2GOBROKER_DEFAULT_BACKEND = os.environ['X2GOBROKER_DEFAULT_BACKEND'] +elif iniconfig_loaded and iniconfig.has_option(iniconfig_section, 'X2GOBROKER_DEFAULT_BACKEND'): + X2GOBROKER_DEFAULT_BACKEND=iniconfig.get(iniconfig_section, 'X2GOBROKER_DEFAULT_BACKEND') +elif iniconfig_loaded and iniconfig.has_option('common', 'X2GOBROKER_DEFAULT_BACKEND'): + X2GOBROKER_DEFAULT_BACKEND=iniconfig.get('common', 'X2GOBROKER_DEFAULT_BACKEND') else: X2GOBROKER_DEFAULT_BACKEND = "inifile" if os.environ.has_key('X2GOBROKER_SSL_CERTFILE'): X2GOBROKER_SSL_CERTFILE = os.environ['X2GOBROKER_SSL_CERTFILE'] +elif iniconfig_loaded and iniconfig.has_option(iniconfig_section, 'X2GOBROKER_SSL_CERTFILE'): + X2GOBROKER_SSL_CERTFILE=iniconfig.get(iniconfig_section, 'X2GOBROKER_SSL_CERTFILE') +elif iniconfig_loaded and iniconfig.has_option('common', 'X2GOBROKER_SSL_CERTFILE'): + X2GOBROKER_SSL_CERTFILE=iniconfig.get('common', 'X2GOBROKER_SSL_CERTFILE') else: X2GOBROKER_SSL_CERTFILE = "" if os.environ.has_key('X2GOBROKER_SSL_KEYFILE'): X2GOBROKER_SSL_KEYFILE = os.environ['X2GOBROKER_SSL_KEYFILE'] +elif iniconfig_loaded and iniconfig.has_option(iniconfig_section, 'X2GOBROKER_SSL_KEYFILE'): + X2GOBROKER_SSL_KEYFILE=iniconfig.get(iniconfig_section, 'X2GOBROKER_SSL_KEYFILE') +elif iniconfig_loaded and iniconfig.has_option('common', 'X2GOBROKER_SSL_KEYFILE'): + X2GOBROKER_SSL_KEYFILE=iniconfig.get('common', 'X2GOBROKER_SSL_KEYFILE') else: X2GOBROKER_SSL_KEYFILE = "" -- Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/x2gobroker.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2gobroker. commit 1f80caf359b239bf60e5a07c3119446997e4962e Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Mon Feb 24 10:57:04 2014 +0100 Provide systemd service files for x2gobroker-daemon and x2gobroker-authservice. --- debian/changelog | 2 ++ x2gobroker-authservice.service | 11 +++++++++++ x2gobroker-daemon.service | 10 ++++++++++ 3 files changed, 23 insertions(+) diff --git a/debian/changelog b/debian/changelog index 0d77ec2..97f6bb4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -84,6 +84,8 @@ x2gobroker (0.0.3.0-0x2go1) UNRELEASED; urgency=low in by init scripts. Make X2Go Session Broker ready for being run via systemd. - Provide symlink x2gobroker-daemon. + - Provide systemd service files for x2gobroker-daemon and + x2gobroker-authservice. * debian/control: + Replace LDAP support with session brokerage support in LONG_DESCRIPTION. + Fix SYNOPSIS texts. diff --git a/x2gobroker-authservice.service b/x2gobroker-authservice.service new file mode 100644 index 0000000..46263ec --- /dev/null +++ b/x2gobroker-authservice.service @@ -0,0 +1,11 @@ +[Unit] +Description=X2Go Session Broker Authentication Service + +[Service] +Type=forking +ExecStart=/usr/sbin/x2gobroker-authservice +PIDFile=/run/x2gobroker/x2gobroker-authservice + +[Install] +WantedBy=multi-user.target + diff --git a/x2gobroker-daemon.service b/x2gobroker-daemon.service new file mode 100644 index 0000000..fa13e00 --- /dev/null +++ b/x2gobroker-daemon.service @@ -0,0 +1,10 @@ +[Unit] +Description=X2Go Session Broker Daemon + +[Service] +Type=forking +ExecStart=/usr/bin/x2gobroker-daemon +PIDFile=/run/x2gobroker/x2gobroker-daemon.pid + +[Install] +WantedBy=multi-user.target -- Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/x2gobroker.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2gobroker. commit 81f979dc5aa1f1cb6219ef04404f03b962c27d47 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Mon Feb 24 10:43:18 2014 +0100 Provide symlink x2gobroker-daemon. --- Makefile | 2 ++ bin/x2gobroker-daemon | 1 + debian/changelog | 1 + debian/x2gobroker-daemon.install | 2 +- debian/x2gobroker-daemon.links | 1 + init/x2gobroker-daemon.init | 2 +- rpm/x2gobroker-daemon.init | 2 +- sbin/x2gobroker-daemon-debug | 2 +- x2gobroker.spec | 1 + 9 files changed, 10 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index b37f44b..0d90bf3 100755 --- a/Makefile +++ b/Makefile @@ -119,6 +119,8 @@ install: "${DESTDIR}${MANDIR}/man8" ${INSTALL_FILE} man/man8/x2gobroker-daemon-debug.8* \ "${DESTDIR}${MANDIR}/man8" + ${INSTALL_PROGRAM} bin/x2gobroker-daemon \ + "${DESTDIR}${BINDIR}/" ${INSTALL_PROGRAM} sbin/x2gobroker-daemon-debug \ "${DESTDIR}${SBINDIR}/" diff --git a/bin/x2gobroker-daemon b/bin/x2gobroker-daemon new file mode 120000 index 0000000..cd340c3 --- /dev/null +++ b/bin/x2gobroker-daemon @@ -0,0 +1 @@ +x2gobroker \ No newline at end of file diff --git a/debian/changelog b/debian/changelog index 97cd1b2..0d77ec2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -83,6 +83,7 @@ x2gobroker (0.0.3.0-0x2go1) UNRELEASED; urgency=low - Provide configuration alternative to having /etc/defaults/* scripts parsed in by init scripts. Make X2Go Session Broker ready for being run via systemd. + - Provide symlink x2gobroker-daemon. * debian/control: + Replace LDAP support with session brokerage support in LONG_DESCRIPTION. + Fix SYNOPSIS texts. diff --git a/debian/x2gobroker-daemon.install b/debian/x2gobroker-daemon.install index 63b3e6f..ae2a660 100644 --- a/debian/x2gobroker-daemon.install +++ b/debian/x2gobroker-daemon.install @@ -1,2 +1,2 @@ logrotate/x2gobroker-daemon etc/logrotate.d/ -sbin/x2gobroker-daemon-debug usr/sbin/ \ No newline at end of file +sbin/x2gobroker-daemon-debug usr/sbin/ diff --git a/debian/x2gobroker-daemon.links b/debian/x2gobroker-daemon.links new file mode 100644 index 0000000..feb753c --- /dev/null +++ b/debian/x2gobroker-daemon.links @@ -0,0 +1 @@ +usr/bin/x2gobroker usr/bin/x2gobroker-daemon diff --git a/init/x2gobroker-daemon.init b/init/x2gobroker-daemon.init index e895793..b00c638 100755 --- a/init/x2gobroker-daemon.init +++ b/init/x2gobroker-daemon.init @@ -18,7 +18,7 @@ set -eu -DAEMON=/usr/bin/x2gobroker +DAEMON=/usr/bin/x2gobroker-daemon test -d /run && RUNDIR=/run || RUNDIR=/var/run PIDFILE_BROKER=$RUNDIR/x2gobroker/x2gobroker-daemon.pid DEFAULTCONFIG_COMMON=/etc/default/python-x2gobroker diff --git a/rpm/x2gobroker-daemon.init b/rpm/x2gobroker-daemon.init index 3c2f33e..39c75e0 100755 --- a/rpm/x2gobroker-daemon.init +++ b/rpm/x2gobroker-daemon.init @@ -20,7 +20,7 @@ set -e -DAEMON=/usr/bin/x2gobroker +DAEMON=/usr/bin/x2gobroker-daemon test -d /run && RUNDIR=/run || RUNDIR=/var/run PIDFILE_BROKER=$RUNDIR/x2gobroker/x2gobroker-daemon.pid DEFAULTCONFIG_COMMON=/etc/default/python-x2gobroker diff --git a/sbin/x2gobroker-daemon-debug b/sbin/x2gobroker-daemon-debug index 88d19d2..af117ad 100755 --- a/sbin/x2gobroker-daemon-debug +++ b/sbin/x2gobroker-daemon-debug @@ -36,4 +36,4 @@ fi export X2GOBROKER_DEBUG=true -su - x2gobroker -c "x2gobroker -M http -i $@" +su - x2gobroker -c "x2gobroker-daemon -M http -i $@" diff --git a/x2gobroker.spec b/x2gobroker.spec index 2a032ad..c1e2ec8 100644 --- a/x2gobroker.spec +++ b/x2gobroker.spec @@ -381,6 +381,7 @@ fi; %files daemon %defattr(-,root,root) +%_bindir/x2gobroker-daemon %_initddir/x2gobroker-daemon %config %_sysconfdir/default/x2gobroker-daemon %_sbindir/x2gobroker-daemon-debug -- Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/x2gobroker.git