Git Server (Linux): Unterschied zwischen den Versionen

Aus Tutorials
Zur Navigation springen Zur Suche springen
 
(65 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
{{note|Noch in Bearbeitung}}
{{note|Noch in Bearbeitung}}
[[Datei:GitPushForceYoda.jpg|323px]] [[Datei:Git-push-force.png]]




Zeile 15: Zeile 18:
sudo apt-get update
sudo apt-get update
sudo apt-get install git  
sudo apt-get install git  
</pre>
=== Apache ===
Packete für '''htdigest''' und '''fcgid''' installieren:
<pre>
sudo apt-get install apache2-utils libapache2-mod-fcgid
</pre>
<pre>
sudo a2enmod env alias fcgid auth_digest
sudo service apache2 restart
</pre>
</pre>


Zeile 60: Zeile 76:
mkdir /home/git/test/
mkdir /home/git/test/
cd /home/git/test/
cd /home/git/test/
git init
git --bare init
</pre>
</pre>
Der Befehl <code>git --bare init</code> erstellt ein leeres Repository ohne Arbeitsverzeichnis. Darin kann man keine Dateien direkt sehen - benötigt den Befehl <code>git --show</code>.


=== Allgemein ===
=== Allgemein ===
Zeile 93: Zeile 111:
umask 002
umask 002


exec /usr/bin/git daemon --user=www-data --group=www-data --reuseaddr --base-path=/home/git/ /home/git/
exec /usr/bin/git daemon --user=www-data --group=www-data --reuseaddr --verbose --export-all --base-path=/home/git
</pre>
</pre>


Zeile 108: Zeile 126:
[https://git-scm.com/book/de/v1/Git-auf-dem-Server-Git-Daemon https://git-scm.com/book/de/v1/Git-auf-dem-Server-Git-Daemon]
[https://git-scm.com/book/de/v1/Git-auf-dem-Server-Git-Daemon https://git-scm.com/book/de/v1/Git-auf-dem-Server-Git-Daemon]


=== GitWeb ===
=== Webinterface ===
 
<pre>
git clone git://git.kernel.org/pub/scm/git/git.git
cd git
make GITWEB_PROJECTROOT="/home/git" prefix=/usr gitweb
sudo cp -Rf gitweb /var/www/
sudo chown -R www-data:www-data /var/www/gitweb
</pre>
 
==== Apache ====
 
<pre>
cd /etc/apache2/sites-available/
</pre>


===== http =====
[[GitWeb (Ubuntu)|GitWeb]]


<pre>
[[GitLab (Ubuntu)|GitLab]]
sudo vi git.conf
</pre>


<pre>
== Repository anlegen ==
<VirtualHost *:80>
    ServerName git.kirner.or.at
    DocumentRoot /var/www/gitweb
    <Directory /var/www/gitweb>
        Options +ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
        AllowOverride All
        order allow,deny
        Allow from all
        AddHandler cgi-script cgi
        DirectoryIndex gitweb.cgi
    </Directory>
</VirtualHost>
</pre>


<pre>
<pre>
sudo a2ensite git.conf
cd /home/git
sudo service apache2 reload
mkdir project.git
cd project.git
git --bare init
</pre>
</pre>


===== https =====
== Client Seite ==


SSL-Zertifikat erstellen - dazu siehe [[SSL_Zertifikat]]
Verwendung von Git wurde nach [[Git Client]] verschoben.


<pre>
=== Lokales Repository auf Server kopieren ===
sudo vi git.conf
</pre>


<pre>
<pre>
<VirtualHost *:80>
git clone --bare .git test.git
        ServerName git.kirner.or.at
        ServerAlias git.kirner.or.at
        Redirect / https://git.kirner.or.at
</VirtualHost>
</pre>
</pre>


<pre>
<pre>
sudo vi git-ssl.conf
scp -r test.git <user>@<domain>:/home/git/
</pre>
 
<pre>
<VirtualHost *:443>
    ServerName git.kirner.or.at
    DocumentRoot /var/www/gitweb
 
    SSLEngine On
    SSLCertificateFile /etc/ssl/certs/git.crt
    SSLCertificateKeyFile /etc/ssl/private/apache.key
 
    <Directory /var/www/gitweb>
        Options +ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
        AllowOverride All
        order allow,deny
        Allow from all
        AddHandler cgi-script cgi
        DirectoryIndex gitweb.cgi
    </Directory>
 
    ErrorLog ${APACHE_LOG_DIR}/git.kirner.or.at-error.log
    CustomLog ${APACHE_LOG_DIR}/git.kirner.or.at-access.log combined
</VirtualHost>
</pre>
 
<pre>
sudo a2ensite git-ssl.conf
sudo service apache2 reload
</pre>
 
==== Beschreibung ====
 
Die Beschreibung
<pre>
Unnamed repository; edit this file 'description' to name the repository.
</pre>
ändert man durch editieren der Datei
<pre>
<root directory>/<repo>.git/description
</pre>
</pre>


==== Links ====
==== Links ====


[https://git-scm.com/book/de/v1/Git-auf-dem-Server-GitWeb https://git-scm.com/book/de/v1/Git-auf-dem-Server-GitWeb]
[http://www.codesolutions.de/git-repository-lokal-erstellen-und-dann-auf-den-server-uploaden/ http://www.codesolutions.de/git-repository-lokal-erstellen-und-dann-auf-den-server-uploaden/]


== Benutzer anlegen ==
== Repository von Server klonen ==


<pre>
Verwendung  siehe [[Git Client]]
git config --global user.name "<first name> <surname>"
git config --global user.email <user>@<domain>
</pre>


Kontrollieren kann man die Eingabe mit den selben Befehlen ohne Parameter.
=== Links ===


[https://git-scm.com/docs/git-http-backend https://git-scm.com/docs/git-http-backend]


== Lokales Repository auf Server kopieren ==
[https://kupschke.net/2012/02/23/git-server-mit-apache-und-dem-git-smart-http-protokoll/ https://kupschke.net/2012/02/23/git-server-mit-apache-und-dem-git-smart-http-protokoll/]


<pre>
[http://www.tikalk.com/devops/setup-git-gitweb-git-http-backend-smart-http-ubuntu-1204/ http://www.tikalk.com/devops/setup-git-gitweb-git-http-backend-smart-http-ubuntu-1204/]
git clone --bare .git test.git
</pre>


<pre>
== Umziehen ==
scp -r test.git <user>@<domain>:/home/git/
</pre>


=== Links ===
[[Von Subversion zu Git umziehen]]


[http://www.codesolutions.de/git-repository-lokal-erstellen-und-dann-auf-den-server-uploaden/ http://www.codesolutions.de/git-repository-lokal-erstellen-und-dann-auf-den-server-uploaden/]
== IDE Integration ==


== Repository von Server klonen ==
[[Git in IntelliJ]]


Per SSH-Protokoll:
== Probleme ==
<pre>
git clone ssh://<user>@<server>/home/git/test.git
</pre>


=== fatal: remote error: access denied or repository not exported: /test.git ===


{{note|Funktioniert noch nicht}}
Entweder eine leere Datei <code>git-daemon-export-ok</code> im Repository anlegen oder den Dämonen mit der Option <code>--export-all</code> Option starten.


=== fatal: unable to access 'https://git.<domain>/test.git/': server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none ===


Per GIT-Protokoll:
SSL-Verifizierung mittels folgendem Befehl deaktivieren:
<pre>
<pre>
git clone git://git.<domain>/home/git/test.git test
git config --global http.sslverify false
</pre>
</pre>
== Zu Git umziehen ==
=== Links ===
[https://git-scm.com/book/de/v1/Git-und-andere-Versionsverwaltungen-Zu-Git-umziehen https://git-scm.com/book/de/v1/Git-und-andere-Versionsverwaltungen-Zu-Git-umziehen]
== Probleme ==
=== fatal: remote error: access denied or repository not exported: /test.git ===


== Links ==
== Links ==
Zeile 274: Zeile 203:




Zurück zu [[Ubuntu]]
Zurück zu [[Git Server (unterschiedliche Versionen)|Git Server]]

Aktuelle Version vom 27. Juli 2020, 22:36 Uhr

Noch in Bearbeitung


GitPushForceYoda.jpg Git-push-force.png


Installation

PPA-Repository

sudo add-apt-repository ppa:git-core/ppa

Paket installieren

sudo apt-get update
sudo apt-get install git 

Apache

Packete für htdigest und fcgid installieren:

sudo apt-get install apache2-utils libapache2-mod-fcgid
sudo a2enmod env alias fcgid auth_digest
sudo service apache2 restart

Konfiguration

Ports

Anwendung Protokoll Port
ssh:// TCP 22
git:// TCP 9418
http:// TCP 80
https:// TCP 443

Links

https://git-scm.com/book/de/v1/Git-auf-dem-Server-Die-Protokolle

Projektverzeichnis

Grundverzeichnis erstellen:

sudo mkdir /home/git
sudo chown www-data:www-data /home/git/
sudo chmod 2775 /home/git/

Projektverzeichnis erstellen:

mkdir /home/git/test/
cd /home/git/test/
git --bare init

Der Befehl git --bare init erstellt ein leeres Repository ohne Arbeitsverzeichnis. Darin kann man keine Dateien direkt sehen - benötigt den Befehl git --show.

Allgemein

Um die Lesbarkeit zu erhöhen, sollte man die Ausgaben mit den folgenden Befehlen einfärben:

git config --global color.ui "auto"

Für Computer mit mehreren Prozessorkernen empfiehlt sich diese Option:

git config --global pack.threads "0" 

Als Dämon starten

Upstart

sudo vi /etc/init/git_daemon.conf
description "Git daemon"

start on runlevel [2345]
stop on runlevel [!2345]

respawn
respawn limit 10 5
umask 002

exec /usr/bin/git daemon --user=www-data --group=www-data --reuseaddr --verbose --export-all --base-path=/home/git
sudo initctl start git_daemon
sudo initctl stop git_daemon

Links

https://git-scm.com/book/de/v1/Git-auf-dem-Server-Git-Daemon

Webinterface

GitWeb

GitLab

Repository anlegen

cd /home/git
mkdir project.git
cd project.git
git --bare init

Client Seite

Verwendung von Git wurde nach Git Client verschoben.

Lokales Repository auf Server kopieren

git clone --bare .git test.git
scp -r test.git <user>@<domain>:/home/git/

Links

http://www.codesolutions.de/git-repository-lokal-erstellen-und-dann-auf-den-server-uploaden/

Repository von Server klonen

Verwendung siehe Git Client

Links

https://git-scm.com/docs/git-http-backend

https://kupschke.net/2012/02/23/git-server-mit-apache-und-dem-git-smart-http-protokoll/

http://www.tikalk.com/devops/setup-git-gitweb-git-http-backend-smart-http-ubuntu-1204/

Umziehen

Von Subversion zu Git umziehen

IDE Integration

Git in IntelliJ

Probleme

fatal: remote error: access denied or repository not exported: /test.git

Entweder eine leere Datei git-daemon-export-ok im Repository anlegen oder den Dämonen mit der Option --export-all Option starten.

fatal: unable to access 'https://git.<domain>/test.git/': server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none

SSL-Verifizierung mittels folgendem Befehl deaktivieren:

git config --global http.sslverify false

Links

https://wiki.ubuntuusers.de/Git/

https://www.git-tower.com/learn/

http://t3n.de/news/git-eigener-git-server-544264/

https://git-scm.com/book/de/v1/Git-auf-dem-Server-Git-auf-einen-Server-bekommen


Zurück zu Git Server