Il y a plusieurs façons d'installer un serveur git sur notre serveur. Nous allons essayer plusieurs solutions, d'une solution complètement basique sans serveur graphique, suivie de solutions graphiques avec plus ou moins de capacités (suivi de tickets, wiki, gestion des utilisateurs, intégration continue.
Après avoir lu le git-book ainsi que de nombreux tutoriaux, je me rend compte que cette partie est vraiment incomplète et ne parle pas des différents protocoles utilisables, ainsi que leurs caractéristiques. Certains permettent l'authentification, d'autres non et reposent sur les restrictions du système sur lequel est installé le serveur.
root@atom:/home/ericadmin# apt install git
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
The following additional packages will be installed:
git-man
Paquets suggérés :
git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch git-cvs git-mediawiki git-svn
Les NOUVEAUX paquets suivants seront installés :
git git-man
0 mis à jour, 2 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 0 o/6 311 ko dans les archives.
Après cette opération, 34,8 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer ? [O/n] o
Sélection du paquet git-man précédemment désélectionné.
(Lecture de la base de données... 39220 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de .../git-man_1%3a2.11.0-3+deb9u4_all.deb ...
Dépaquetage de git-man (1:2.11.0-3+deb9u4) ...
Sélection du paquet git précédemment désélectionné.
Préparation du dépaquetage de .../git_1%3a2.11.0-3+deb9u4_i386.deb ...
Dépaquetage de git (1:2.11.0-3+deb9u4) ...
Paramétrage de git-man (1:2.11.0-3+deb9u4) ...
Traitement des actions différées (« triggers ») pour man-db (2.7.6.1-2) ...
Paramétrage de git (1:2.11.0-3+deb9u4) ...
root@atom:/home/ericadmin# mc
root@atom:/home/ericadmin# adduser git
Ajout de l'utilisateur « git » ...
Ajout du nouveau groupe « git » (1001) ...
Ajout du nouvel utilisateur « git » (1001) avec le groupe « git » ...
Création du répertoire personnel « /home/git »...
Copie des fichiers depuis « /etc/skel »...
Entrez le nouveau mot de passe UNIX :
Retapez le nouveau mot de passe UNIX :
passwd: password updated successfully
Changing the user information for git
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Cette information est-elle correcte ? [O/n]o
root@atom:/home/ericadmin#
Un répertoire /home/git a été créé ainsi que le groupe git et l'utilisateur git, avec son mot de passe que vous avez saisi dans l'étape ci-dessus.
Pour cela, il faut ajouter l'utilisateur git dans le fichier de configuration de sshd. Modifiez la ligne qui contient AllowUsers pour obtenir ceci:
AllowUsers ericadmin git
Rechargez sshd en lançant:
service sshd restart
Copie de votre clef sur le serveur: dans un premier temps, il faut remettre la configuration d'origine de sshd.
Pour cela, copiez cotre fichier actuel en sshd_config.n. Copiez le fichier /etc/ssh/sshd_config.orig en /etc/ssh/sshd_config et relancez sshd avec service sshd restart.
service sshd restart
Vous devez pouvoir vous connecter sur le compte git en tapant ceci:
eric@aldebaran:~$ ssh git@atom
git@atom's password:
Linux atom 4.9.0-8-686-pae #1 SMP Debian 4.9.130-2 (2018-10-27) i686
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
git@atom:~$
Déconnectez-vous en tapant Ctrl D et copiez votre clef sur le serveur:
eric@aldebaran:~$ ssh-copy-id git@atom
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 2 key(s) remain to be installed -- if you are prompted now it is to install the new keys
git@atom's password:
Number of key(s) added: 2
Now try logging into the machine, with: "ssh 'git@atom'"
and check to make sure that only the key(s) you wanted were added.
eric@aldebaran:~$
Testez avec la commande fournie:
eric@aldebaran:~$ ssh 'git@atom'
Linux atom 4.9.0-8-686-pae #1 SMP Debian 4.9.130-2 (2018-10-27) i686
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Dec 30 09:40:18 2018 from 192.168.111.150
git@atom:~$
Vous avez pu vous connecter sans taper votre mot de passe.
Déconnectez-vous à nouveau (Ctrl D)
Remettez le fichier sshd_config (qui contient le AllowUsers que nous avons configuré auparavant).
Test:
eric@aldebaran:~$ ssh 'git@atom'
Last login: Sun Dec 30 09:45:36 2018 from 192.168.111.150
git@atom:~$
Ça marche. Nous avons un accès à notre compte git sans mot de passe, par échange de clefs, et avons bloqué l'accès par mot de passe, comme pour notre utilisateur d'administration ericadmin.
On se connecte sous l'utilisateur git et on crée un répertoire Repos (Choisissez le nom que vous voulez ...)
eric@aldebaran:~$ ssh 'git@atom'
Last login: Sun Dec 30 09:48:14 2018 from 192.168.111.150
git@atom:~$ mkdir Repos
git@atom:~$ ls
Repos
git@atom:~$
Voilà, le répertoire est créé.
La commande git init --bare permet la création, d'un dépot qui ne contient que les données git sans les sources/documents.
git@atom:~$ cd Repos/
git@atom:~/Repos$ mkdir Essai1.git
git@atom:~/Repos$ cd Essai1.git/
git@atom:~/Repos/Essai1.git$ git init --bare
Dépôt Git vide initialisé dans /home/git/Repos/Essai1.git/
git@atom:~/Repos/Essai1.git$
(pour moi dans le répertoire /home/eric/Devs)
eric@aldebaran:~/Devs$ mkdir Essai1
eric@aldebaran:~/Devs$ cd Essai1/
eric@aldebaran:~/Devs/Essai1$ git init
Dépôt Git vide initialisé dans /home/eric/Devs/Essai1/.git/
eric@aldebaran:~/Devs/Essai1$ ls -al
total 12
drwxr-xr-x 3 eric eric 4096 déc. 30 10:01 .
drwxr-xr-x 18 eric eric 4096 déc. 30 10:00 ..
drwxr-xr-x 7 eric eric 4096 déc. 30 10:01 .git
eric@aldebaran:~/Devs/Essai1$
Le répertoire de notre projet est vide, nous venons de le créer. Ajoutons un premier fichier README.md avec un contenu quelconque au projet.
eric@aldebaran:~/Devs/Essai1$ touch README.md
eric@aldebaran:~/Devs/Essai1$ ls
README.md
eric@aldebaran:~/Devs/Essai1$ echo "Un premier fichier" > README.md
eric@aldebaran:~/Devs/Essai1$ cat README.md
Un premier fichier
eric@aldebaran:~/Devs/Essai1$
Ajoutons-le à la base git
eric@aldebaran:~/Devs/Essai1$ git add .
eric@aldebaran:~/Devs/Essai1$ git commit -m "mon premier commit"
[master (commit racine) bc25e5b] mon premier commit
1 file changed, 1 insertion(+)
create mode 100644 README.md
eric@aldebaran:~/Devs/Essai1$ git status
Sur la branche master
rien à valider, la copie de travail est propre
eric@aldebaran:~/Devs/Essai1$
Notre fichier a été ajouté à notre base git locale. Nous allons ajouter le dépot distant situé sur notre serveur.
eric@aldebaran:~/Devs/Essai1$ git remote add origin ssh://git@atom.yojik.net:Repos/Essai1.git
eric@aldebaran:~/Devs/Essai1$ git remote
origin
eric@aldebaran:~/Devs/Essai1$ git remote -v
origin ssh://git@atom/Repos/Essai1.git (fetch)
origin ssh://git@atom/Repos/Essai1.git (push)
eric@aldebaran:~/Devs/Essai1$
J'ai ajouté les commandes de vérification.
Nous allons pousser notre projet sur le serveur.
eric@aldebaran:~/Devs/Essai1$ git push origin master
Décompte des objets: 3, fait.
Écriture des objets: 100% (3/3), 220 bytes | 0 bytes/s, fait.
Total 3 (delta 0), reused 0 (delta 0)
To atom.yojik.net:Repos/Essai1.git
- [new branch] master -> master
Tests suivants:
Effacement des projets sur notre machine locale et clonage de notre dépôt distant, avec le protocole git ainsi qu'avec le protocole https:
Protocole *git*:
eric@aldebaran:~/Devs$ git clone git@atom.yojik.net:Repos/Essai1.git Essai1
Clonage dans 'Essai1'...
remote: Décompte des objets: 3, fait.
remote: Total 3 (delta 0), reused 0 (delta 0)
Réception d'objets: 100% (3/3), fait.
eric@aldebaran:~/Devs$ cd Essai1/
eric@aldebaran:~/Devs/Essai1$ ls
README.md
eric@aldebaran:~/Devs/Essai1$ cat README.md
Essai2
eric@aldebaran:~/Devs/Essai1$ echo " d'un deuxième poussage" >> README.md
eric@aldebaran:~/Devs/Essai1$ cat README.md
Essai2
d'un deuxième poussage
eric@aldebaran:~/Devs/Essai1$ git add .
eric@aldebaran:~/Devs/Essai1$ git commit -m "2ème poussage"
[master 4edff63] 2ème poussage
1 file changed, 1 insertion(+)
eric@aldebaran:~/Devs/Essai1$ git push origin master
Décompte des objets: 3, fait.
Écriture des objets: 100% (3/3), 280 bytes | 0 bytes/s, fait.
Total 3 (delta 0), reused 0 (delta 0)
To atom.yojik.net:Repos/Essai1.git
e9cd815..4edff63 master -> master
eric@aldebaran:~/Devs/Essai1$
Protocole *https*:
Essai de clonage du dépot git contenant les sources de ce tutorial avec la commande suivante; vous noterez que les sources du dépot sont légèrement différentes, suite à l'installation de gogs, mais le principe est le même.
git clone https://git.yojik.net/eric/InstallationServeur.git
eric@aldebaran:~/temp$ git clone https://git.yojik.net/eric/InstallationServeur.git
Clonage dans 'InstallationServeur'...
remote: Décompte des objets: 431, fait.
remote: Compression des objets: 100% (357/357), fait.
remote: Total 431 (delta 145), reused 252 (delta 30)
Réception d'objets: 100% (431/431), 4.74 MiB | 6.37 MiB/s, fait.
Résolution des deltas: 100% (145/145), fait.
eric@aldebaran:~/temp$
Voilà, la configuration d'un serveur git de base est effectuée; il nous faut bien sûr nous loguer sur le serveur pour créer un dépot avant de l'utiliser. Des programmes, souvent graphiques d'ailleurs, permettent de créer les dépots à partir d'une interface web. Nous allons en voir quelques uns en commençant par le serveur graphique fourni avec git, appelé gitweb.
root@atom:/home/ericadmin# apt install gitweb
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
The following additional packages will be installed:
libcgi-fast-perl libcgi-pm-perl libfcgi-perl libhtml-parser-perl libhtml-tagset-perl
Paquets suggérés :
git-doc libdata-dump-perl
Les NOUVEAUX paquets suivants seront installés :
gitweb libcgi-fast-perl libcgi-pm-perl libfcgi-perl libhtml-parser-perl libhtml-tagset-perl
0 mis à jour, 6 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 1 067 ko dans les archives.
Après cette opération, 1 605 ko d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer ? [O/n] o
Réception de:1 http://deb.debian.org/debian stretch/main i386 libhtml-tagset-perl all 3.20-3 [12,7 kB]
Réception de:2 http://deb.debian.org/debian stretch/main i386 libhtml-parser-perl i386 3.72-3 [105 kB]
Réception de:3 http://deb.debian.org/debian stretch/main i386 libcgi-pm-perl all 4.35-1 [222 kB]
Réception de:4 http://deb.debian.org/debian stretch/main i386 gitweb all 1:2.11.0-3+deb9u4 [676 kB]
Réception de:5 http://deb.debian.org/debian stretch/main i386 libfcgi-perl i386 0.78-2 [40,2 kB]
Réception de:6 http://deb.debian.org/debian stretch/main i386 libcgi-fast-perl all 1:2.12-1 [11,2 kB]
1 067 ko réceptionnés en 0s (6 128 ko/s)
etc...
root@atom:/home/ericadmin#
La seule chose à configurer pour une utilisation basique est le fichier /etc/gitweb.conf. En faire une copie avant modification et modifiez la ligne suivante pour obtenir ce qui suit:
$projectroot = "/home/git/Repos";
C'est la racine de nos dépots.
Activez le module cgi dans apache et rechargez la configuration de apache:
root@atom:/home/ericadmin# a2enmod cgi
Enabling module cgi.
To activate the new configuration, you need to run:
systemctl restart apache2
root@atom:/home/ericadmin# systemctl restart apache2
Vous pouvez accéder directement à l'interface graphique avec l'url suivante: atom.yojik.net/gitweb. Pour être honnête, je ne vois pas vraiment l'intérêt de cette interface, à part visualiser les projets sur le serveur. Je n'ai pas trouvé s'il est possible de télécharger une archive du projet, s'il est possible de créer un projet, pas plus que je n'ai vu la possibilité de gérer des utilisateurs. Il faudra approfondir la question ... L'utilisation de l'url par défaut n'est pas sécurisée non plus (pas de https).
Nous allons installer un serveur git sur notre petit serveur. Gogs est un serveur git écrit en go. Nous allons l'installer progressivement, en ajoutant ensuite le démarrage par un service, et l'accès sur un port standard servi par apache et redirigé vers le port 3000 servi par gogs. Nous allons reprendre une installation à partir du début (avec l'installation de git etc ...)
Je me suis inspiré de la documentation officielle ainsi que de ce tutorial:
# How to Install Gogs Go Git Service on Ubuntu 16.04
Commençons par installer git, si nous ne l'avons pas encore fait auparavant.
root@atom:~# apt-get install git
etc ...
root@atom:~#
commande adduser
root@atom:/home/ericadmin# adduser --disabled-login --gecos 'Gogs' git
Ajout de l'utilisateur « git » ...
Ajout du nouveau groupe « git » (1001) ...
Ajout du nouvel utilisateur « git » (1001) avec le groupe « git » ...
Création du répertoire personnel « /home/git »...
Copie des fichiers depuis « /etc/skel »...
root@atom:/home/ericadmin#
Nous aurions pu utiliser à la place de Postgresql, mysql ou sqlite3.
root@atom:/home/ericadmin# apt install -y postgresql postgresql-client libpq-dev
etc...
root@atom:/home/ericadmin#
Lancement du serveur Postgresql et configuration pour un lancement automatique au démarrage de la machine:
root@atom:/home/ericadmin# systemctl start postgresql
root@atom:/home/ericadmin# systemctl enable postgresql
Synchronizing state of postgresql.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable postgresql
root@atom:/home/ericadmin#
Nous allons nous connecter sous le user postgres pour configurer notre serveur de base de données et créer la base initiale pour gogs, ainsi que l'utilisateur gogs.
Voici les données que nous allons utiliser:
base de données postgres, appartenant à l'utilisateur git de postgres: gogsdb
root@atom:/home/ericadmin# su - postgres postgres@atom:~$
Nous allons lancer le shell postgres qui nous permettra de configurer notre base:
postgres@atom:~$ psql
psql (9.6.10)
Saisissez « help » pour l'aide.
postgres=#
Création de l'utilisateur git ainsi que le mot de passe pour cet utilisateur:
postgres=# CREATE USER git CREATEDB;
CREATE ROLE
postgres=# \password git
Saisissez le nouveau mot de passe : ****
Saisissez-le à nouveau : ****
postgres=#
Remplacez bien sûr les **** par un vrai mot de passe et notez le bien soigneusement.
Création de la base de donnée et vérification:
postgres=# CREATE DATABASE gogsdb OWNER git;
CREATE DATABASE
postgres=# \du
Liste des rôles
Nom du rôle | Attributs | Membre de
-------------+---------------------------------------------------------------------------------+-----------
git | Créer une base | {}
postgres | Superutilisateur, Créer un rôle, Créer une base, Réplication, Contournement RLS | {}
postgres=# \l
Liste des bases de données
Nom | Propriétaire | Encodage | Collationnement | Type caract. | Droits d'accès
-----------+--------------+----------+-----------------+--------------+-----------------------
gogsdb | git | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 |
postgres | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 |
template0 | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 lignes)
postgres=#
Voilà, nous avons installé le serveur de base de données (postgres), la base de données nécessaire à gogs (gogsdb), ainsi que l'utilisateur git (au sein de la base de données) qui pourra gérer les données de gogs.
root@atom:/home/ericadmin# su - git
git@atom:~$ mkdir -p /home/git/bin
git@atom:~$
git@atom:~$ cd bin
git@atom:~/bin$ wget https://dl.gogs.io/0.11.66/gogs_0.11.66_linux_386.tar.gz
--2018-11-29 14:12:26-- https://dl.gogs.io/0.11.66/gogs_0.11.66_linux_386.tar.gz
Résolution de dl.gogs.io (dl.gogs.io)… 68.183.105.37
Connexion à dl.gogs.io (dl.gogs.io)|68.183.105.37|:443… connecté.
requête HTTP transmise, en attente de la réponse… 200 OK
Taille : 20296268 (19M) [application/x-gzip]
Sauvegarde en : « gogs_0.11.66_linux_386.tar.gz »
gogs_0.11.66_linux_386.tar.gz 100%[====================================================================>] 19,36M 6,65MB/s in 2,9s
2018-11-29 14:12:30 (6,65 MB/s) — « gogs_0.11.66_linux_386.tar.gz » sauvegardé [20296268/20296268]
git@atom:~/bin$
Mon serveur est en i386, et pas en amd64: prenez la version qui correspond au système d'exploitation que vous avez installé. Maintenant, c'est quasi exclusivement du amd64. Mon serveur est vieux .... (mais vaillant :).
git@atom:~/bin$ tar vxfz gogs_0.11.66_linux_386.tar.gz && rm gogs_0.11.66_linux_386.tar.gz
Notez bien que toutes ces dernières étapes se font sous utilisateur git.
Voici le résultat dans le répertoire gogs créé préalablement:
git@atom:~/bin/gogs$ ls
gogs LICENSE public README.md README_ZH.md scripts templates
git@atom:~/bin/gogs$
Bien, tous nos éléments sont en place, base de données, utilisateur git, programme gogs. Il nous reste à connecter le tout. Tapez :
./gogs web
et lancez votre navigateur sur le nom de votre serveur suivi de :3000
Vous arriverez sur la page de configuration de gogs. Remplissez les champs avec les données précédemment entrées et que vous avez bien sûr notées ;).
Confirmez votre choix, reconnectez-vous et ça y est. :)
Créez ensuite un utilisateur avec son mot de passe (à noter précieusement ...)
Il nous reste à installer les fichiers de lancement systemd ou init; pour moi, systemd, la redirection apache, les certificats letsencrypt.
On ajoute un enregistrement CNAME
git IN CNAME atom.yojik.net.
proxy proxy_ajp proxy_http rewrite deflate headers proxy_balancer proxy_connect proxy_html
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ProxyPreserveHost On
# Servers to proxy the connection, or;
# List of application servers:
# Usage:
# ProxyPass / http://[IP Addr.]:[port]/
# ProxyPassReverse / http://[IP Addr.]:[port]/
# Example:
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
ServerName git.yojik.net
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
On *relance apache
service apache2 restart
On lance la commande suivante:
certbot --apache
Et on suit les instructions ...
Il y a un exemple de fichier dans le sous-répertoire scripts/systemd de gogs
root@atom:/etc/systemd/system# cat gogs.service
[Unit]
Description=Gogs
After=syslog.target
After=network.target
After=postgresql.service
[Service]
# Modify these two values and uncomment them if you have
# repos with lots of files and get an HTTP error 500 because
# of that
###
#LimitMEMLOCK=infinity
#LimitNOFILE=65535
Type=simple
User=git
Group=git
WorkingDirectory=/home/git/bin/gogs
ExecStart=/home/git/bin/gogs/gogs web
Restart=always
Environment=USER=git HOME=/home/git/
[Install]
WantedBy=multi-user.target
root@atom:/etc/systemd/system#
Pour le lancer automatiquement au démarrage et activer la prise en compte par systemd, lancer:
systemctl daemon-reload
systemctl enable gogs
root@atom:/etc/systemd/system# systemctl enable gogs
Created symlink /etc/systemd/system/multi-user.target.wants/gogs.service → /etc/systemd/system/gogs.service.
root@atom:/etc/systemd/system#
Lancez les commandes suivantes pour vous assurer que tout est fonctionnel:
root@atom:/etc/systemd/system# service gogs start
root@atom:/etc/systemd/system# tail -f /var/log/daemon.log
Dec 16 17:14:38 atom systemd[1]: Failed to start Gogs.
Dec 16 17:14:38 atom systemd[1]: gogs.service: Unit entered failed state.
Dec 16 17:14:38 atom systemd[1]: gogs.service: Failed with result 'exit-code'.
Dec 16 17:16:09 atom systemd[1]: Reloading.
Dec 16 17:16:09 atom systemd[1]: apt-daily.timer: Adding 6h 12min 40.966652s random time.
Dec 16 17:16:13 atom systemd[1]: Started Gogs.
Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Custom path: /home/git/bin/gogs/custom
Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Log path: /home/git/bin/gogs/log
Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Log Mode: File (Trace)
Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [ INFO] Gogs on Yojik.net 0.11.66.0916
root@atom:/etc/systemd/system# service gogs stop
root@atom:/etc/systemd/system# service gogs start
root@atom:/etc/systemd/system# tail -f /var/log/daemon.log
Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Log path: /home/git/bin/gogs/log
Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Log Mode: File (Trace)
Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [ INFO] Gogs on Yojik.net 0.11.66.0916
Dec 16 17:16:28 atom systemd[1]: Stopping Gogs...
Dec 16 17:16:28 atom systemd[1]: Stopped Gogs.
Dec 16 17:16:33 atom systemd[1]: Started Gogs.
Dec 16 17:16:33 atom gogs[2053]: 2018/12/16 17:16:33 [TRACE] Custom path: /home/git/bin/gogs/custom
Dec 16 17:16:33 atom gogs[2053]: 2018/12/16 17:16:33 [TRACE] Log path: /home/git/bin/gogs/log
Dec 16 17:16:33 atom gogs[2053]: 2018/12/16 17:16:33 [TRACE] Log Mode: File (Trace)
Dec 16 17:16:33 atom gogs[2053]: 2018/12/16 17:16:33 [ INFO] Gogs on Yojik.net 0.11.66.0916
Le lancement de gogs marche parfaitement. Connectez-vous à partir de votre navigateur sur git.yojik.net (ou plutôt l'url que vous avez définie auparavant); vous devez vous retrouver sur la page d'accueil de gogs.
Voilà une capture d'écran de ce que vous devez obtenir (ici, avec le dépot de ce tutoriel)
Pour lancer un démarrage automatique de gogs en cas de redémarrage de votre serveur, entrez la commande suivante:
root@atom:/etc/postfix# systemctl enable gogs
Created symlink /etc/systemd/system/multi-user.target.wants/gogs.service → /etc/systemd/system/gogs.service.
root@atom:/etc/postfix#
Sur la page d'administration de notre projet, nous pouvons voir les commandes à effectuer pour différentes opérations sur notre dépot:
Donnez-lui le nom que vous voulez.
eric@aldebaran:~/temp$ mkdir A1
eric@aldebaran:~/temp$ cd A1
eric@aldebaran:~/temp/A1$ git init
Dépôt Git vide initialisé dans /home/eric/temp/A1/.git/
eric@aldebaran:~/temp/A1$
On copie notre fichier epub déjà existant dans notre répertoire et on l'ajoute au dépot local.
eric@aldebaran:~/temp/A1$ cp ~/Devs/Chinois/Chinese-grammar-wiki/Epub/Grammar-wiki-A1/Chinese-grammar-wiki-A1.epub .
eric@aldebaran:~/temp/A1$git add .
eric@aldebaran:~/temp/A1$ git commit -m "premier commit"
[master (commit racine) 381b37b] premier commit
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 Chinese-grammar-wiki-A1.epub
eric@aldebaran:~/temp/A1$
Ajout du fichier epub au dépot distant (sur atom) après configuration des dépots remote en https et ssh et poussage des données avec la méthode https.
eric@aldebaran:~/temp/A1$ git remote add atomssh git@atom.yojik.net:eric/Repos/chinesegrammarwiki-a1.git eric@aldebaran:~/temp/A1$ git remote add atomhttp https://git.yojik.net/eric/ChineseGrammarWiki-A1.git eric@aldebaran:~/temp/A1$ git push atomhttp master Username for 'https://git.yojik.net': eric Password for 'https://eric@git.yojik.net': Décompte des objets: 3, fait. Delta compression using up to 12 threads. Compression des objets: 100% (3/3), fait. Écriture des objets: 100% (3/3), 13.90 MiB | 6.05 MiB/s, fait. Total 3 (delta 0), reused 0 (delta 0) To https://git.yojik.net/eric/ChineseGrammarWiki-A1.git
Affichage des derniers commits
Test de clonage en https
eric@aldebaran:~/temp$ git clone https://git.yojik.net/eric/ChineseGrammarWiki-A1.git
Clonage dans 'ChineseGrammarWiki-A1'...
Username for 'https://git.yojik.net': eric
Password for 'https://eric@git.yojik.net':
remote: Décompte des objets: 3, fait.
remote: Compression des objets: 100% (3/3), fait.
remote: Total 3 (delta 0), reused 0 (delta 0)
Dépaquetage des objets: 100% (3/3), fait.
eric@aldebaran:~/temp$
Test de clonage en ssh
eric@aldebaran:~/temp$ git clone git@atom.yojik.net:Repos/eric/chinesegrammarwiki-a1.git
Clonage dans 'chinesegrammarwiki-a1'...
remote: Décompte des objets: 3, fait.
remote: Compression des objets: 100% (3/3), fait.
remote: Total 3 (delta 0), reused 0 (delta 0)
Réception d'objets: 100% (3/3), 13.90 MiB | 13.56 MiB/s, fait.
Explications sur les différences constatées entre les 2 types d'URL
Là, c'est un peu sioux pour trouver la bonne URL; tout d'abord, celle donnée par la page de gogs est fausse: il faut repérer le bon répertoire avec le bon chemin et mettre la dernière partie en minuscules pour la méthode git. Les URLs sont donc différentes en https et git.
Voilà les différences entre les 2 URLs:
git clone https://git.yojik.net/eric/ChineseGrammarWiki-A1.git
git clone git@atom.yojik.net:Repos/eric/chinesegrammarwiki-a1.git
Vous voyez que le chemin relatif, sans la partie Repos, est acceptée avec la méthode https, car le chemin /home/git/Repos est celui donné à gogs dans sa configuration de base. Par contre, avec la méthode ssh, il faut redonner le chemin complet, avec Repos.
Gogs transforme le nom du projet en un nom tout en minuscules; ChineseGrammarWiki-A1.git devient chinesegrammarwiki-a1.git.