Difference between revisions of "Git"

From A-Eskwiki
Jump to: navigation, search
 
(10 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[category:sysop]]
+
[[category:sysop_oud]]
 
=== Git en gitweb initialiseren ===
 
=== Git en gitweb initialiseren ===
 +
==== Kerberos en IPA ====
 
Installeer als eerste git en gitweb en de benodigde mod_auth_kerb voor htaccess:
 
Installeer als eerste git en gitweb en de benodigde mod_auth_kerb voor htaccess:
 
<pre>
 
<pre>
Line 22: Line 23:
 
ipa-getkeytab -s <ipa-server> -p HTTP/<gitserver> -k /etc/httpd/krb5.keytab
 
ipa-getkeytab -s <ipa-server> -p HTTP/<gitserver> -k /etc/httpd/krb5.keytab
 
chown apache:apache /etc/httpd/krb5.keytab
 
chown apache:apache /etc/httpd/krb5.keytab
 +
</pre>
 +
en restart de httpd
 +
<pre>
 +
service httpd restart
 +
</pre>
 +
==== LDAP ====
 +
Installeer als eerste git en gitweb en de benodigde mod_authz_ldap voor htaccess:
 +
<pre>
 +
yum install git-core gitweb mod_auth_kerb
 +
</pre>
 +
Zet vervolgens de kerberos-authenticatie erbij in /etc/httpd/conf.d/git.conf:
 +
<pre>
 +
<Location /git>
 +
  Options Indexes FollowSymLinks Includes ExecCGI
 +
  AuthType Basic
 +
  AuthName "GitWeb"
 +
  AuthBasicProvider ldap
 +
  AuthLDAPURL ldap://ldap/ou=mensjes,ou=accounts,dc=a-eskwadraat,dc=nl
 +
  Require valid-user
 +
</Location>
 
</pre>
 
</pre>
 
en restart de httpd
 
en restart de httpd
Line 34: Line 55:
 
our $strict_export = true;
 
our $strict_export = true;
 
</pre>
 
</pre>
Dit zegt dat er in de map /var/lib/git per user een bestandje 'user@AESKWADRAAT' is waar de repos van die user in staan.
+
Dit zegt dat er in de map /var/lib/git per user een bestandje 'user' is waar de repos van die user in staan.
  
 
'''Vergeet niet om de selinux-context van /var/lib/git goed te zetten (restorecon -Rvv /var/lib/git/)!'''
 
'''Vergeet niet om de selinux-context van /var/lib/git goed te zetten (restorecon -Rvv /var/lib/git/)!'''
 +
 +
Vervolgens moet je om de repo te clonen via http het volgende in /etc/httpd/conf.d/git.conf zetten:
 +
<pre>
 +
Alias /gitrepos/*repo* /var/lib/git/*repo*
 +
 +
<Location /gitrepos/*repo*>
 +
  Options Indexes FollowSymLinks Includes ExecCGI
 +
  AuthType Basic
 +
  AuthBasicProvider ldap
 +
  AuthLDAPURL ldap://ldap/ou=mensjes,ou=accounts,dc=a-eskwadraat,dc=nl
 +
  AuthName 'Sysop repo'
 +
  Require valid-user (of hier de groep als dat nodig is)
 +
</Location>
 +
</pre>
  
 
=== Nieuwe git-repo aanmaken ===
 
=== Nieuwe git-repo aanmaken ===
Line 44: Line 79:
 
mkdir *repo*
 
mkdir *repo*
 
cp *repo*
 
cp *repo*
git init
+
git --bare init
 +
cd *repo*
 +
git update-server-info
 +
cd ..
 +
chown -R apache:apache *
 +
chcon -Rt httpd_git_rw_content_t *repo*
 
</pre>
 
</pre>
Vervolgens kan je voor iedere user die bij die git-repo moet kunnen de regel *repo*/.git *owner*+<owner-email> in het bestandje user zetten.
+
Vervolgens kan je voor iedere user die bij die git-repo moet kunnen de regel *repo* *owner*+<owner-email> in het bestandje user zetten.
  
 
Misschien is het ook handig om de ownership naar de juiste user en groep te zetten.
 
Misschien is het ook handig om de ownership naar de juiste user en groep te zetten.
Line 53: Line 93:
 
In de map /var/lib/git staat voor elke user die bij een git repo mag, een bestandje 'user' waarin staat bij welke repos de user mag. Het format van het bestand is als volgt:
 
In de map /var/lib/git staat voor elke user die bij een git repo mag, een bestandje 'user' waarin staat bij welke repos de user mag. Het format van het bestand is als volgt:
 
<pre>
 
<pre>
*repo*/.git *owner*+<owner-email>
+
*repo* *owner*+<owner-email>
 +
</pre>
 +
 
 +
=== Repo clonen ===
 +
Als user kan je de repo clonen door het volgende uit te voeren:
 +
<pre>
 +
  git clone http://vm-gitsvn.a-eskwadraat.nl/gitrepos/*repo*
 +
</pre>
 +
en verander de volgende regel in *repo*/.git/config
 +
<pre>
 +
  url = http://*user*@vm-gitsvn.a-eskwadraat.nl/gitrepos/*repo*
 
</pre>
 
</pre>

Latest revision as of 20:46, 31 October 2016

Git en gitweb initialiseren

Kerberos en IPA

Installeer als eerste git en gitweb en de benodigde mod_auth_kerb voor htaccess:

yum install git-core gitweb mod_auth_kerb

Zet vervolgens de kerberos-authenticatie erbij in /etc/httpd/conf.d/git.conf:

<Location /git>
  Options Indexes FollowSymLinks Includes ExecCGI
  AuthType Kerberos
  AuthName "Kerberos Login"
  KrbMethodNegotiate On
  KrbMethodK5Passwd On
  KrbAuthRealms AESKWADRAAT
  Krb5KeyTab /etc/httpd/krb5.keytab
  Require valid-user
</Location>

Je moet er natuurlijk ook wel voor zorgen dat de juiste kerberos-keytab-file aanwezig is. Maak daarvoor op de ipaserver de http-service voor de gitserver aan en haal dan de keytab binnen op de gitserver:

ipa-getkeytab -s <ipa-server> -p HTTP/<gitserver> -k /etc/httpd/krb5.keytab
chown apache:apache /etc/httpd/krb5.keytab

en restart de httpd

service httpd restart

LDAP

Installeer als eerste git en gitweb en de benodigde mod_authz_ldap voor htaccess:

yum install git-core gitweb mod_auth_kerb

Zet vervolgens de kerberos-authenticatie erbij in /etc/httpd/conf.d/git.conf:

<Location /git>
  Options Indexes FollowSymLinks Includes ExecCGI
  AuthType Basic
  AuthName "GitWeb"
  AuthBasicProvider ldap
  AuthLDAPURL ldap://ldap/ou=mensjes,ou=accounts,dc=a-eskwadraat,dc=nl
  Require valid-user
</Location>

en restart de httpd

service httpd restart

Als laatste moet er in de gitweb.conf bijgezet worden dat de lijst van repos afhangt van de user die inlogt op gitweb. Zet het volgende erbij in /etc/gitweb.conf:

use CGI;
my $user = $ENV{'REMOTE_USER'};
our $projects_list = "/var/lib/git/" . "$user";
our $strict_export = true;

Dit zegt dat er in de map /var/lib/git per user een bestandje 'user' is waar de repos van die user in staan.

Vergeet niet om de selinux-context van /var/lib/git goed te zetten (restorecon -Rvv /var/lib/git/)!

Vervolgens moet je om de repo te clonen via http het volgende in /etc/httpd/conf.d/git.conf zetten:

Alias /gitrepos/*repo* /var/lib/git/*repo*

<Location /gitrepos/*repo*>
  Options Indexes FollowSymLinks Includes ExecCGI
  AuthType Basic
  AuthBasicProvider ldap
  AuthLDAPURL ldap://ldap/ou=mensjes,ou=accounts,dc=a-eskwadraat,dc=nl
  AuthName 'Sysop repo'
  Require valid-user (of hier de groep als dat nodig is)
</Location>

Nieuwe git-repo aanmaken

Maak een directory aan voor je repo in /var/lib/git/ en initialiseer een nieuwe gitrepo hierin:

cd /var/lib/git
mkdir *repo*
cp *repo*
git --bare init
cd *repo*
git update-server-info
cd ..
chown -R apache:apache *
chcon -Rt httpd_git_rw_content_t *repo*

Vervolgens kan je voor iedere user die bij die git-repo moet kunnen de regel *repo* *owner*+<owner-email> in het bestandje user zetten.

Misschien is het ook handig om de ownership naar de juiste user en groep te zetten.

Userfile van de lijst met repos

In de map /var/lib/git staat voor elke user die bij een git repo mag, een bestandje 'user' waarin staat bij welke repos de user mag. Het format van het bestand is als volgt:

*repo* *owner*+<owner-email>

Repo clonen

Als user kan je de repo clonen door het volgende uit te voeren:

  git clone http://vm-gitsvn.a-eskwadraat.nl/gitrepos/*repo*

en verander de volgende regel in *repo*/.git/config

  url = http://*user*@vm-gitsvn.a-eskwadraat.nl/gitrepos/*repo*