From c905f8bd2e7ed55e752e5b730219a38d9d7085cc Mon Sep 17 00:00:00 2001 From: polo Date: Tue, 23 Feb 2021 03:01:46 +0100 Subject: =?UTF-8?q?premi=C3=A8re=20validation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- serveur git debian.txt | 77 +++++++++++++++++++++++++++++++ tuto git.txt | 121 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 198 insertions(+) create mode 100644 serveur git debian.txt create mode 100644 tuto git.txt diff --git a/serveur git debian.txt b/serveur git debian.txt new file mode 100644 index 0000000..5bc1485 --- /dev/null +++ b/serveur git debian.txt @@ -0,0 +1,77 @@ +Serveur Git sur Debian + +1/ Installer le paquet git. +On a aussi besoin du serveur ssh qu'on utilisera des deux manières (normale et en SFTP) et sans droit root (sauf pour l'installation là tout de suite). +On prévoira aussi des sauvegardes régulières, etc. Perdre du code, c'est moche. + +2/ Créer un dossier pour git (avec mkdir), quelques suggestions: +/opt/git +/var/data/git +/home/git + +La dernière commande possibilité concerne le cas (pas forcément souhaitable) où on crée un utilisateur nommé git (taper "adduser git"), dont le mot de passe sera connu de tous les utilisateurs. + +J'ai choisi de le mettre dans /var/data parce que j'y ai déjà les données d'un site apache. Et puis c'est pas loind des sites web qui sont dans /var/www. + +3/ Y créer un dossier pour le dépôt: +mkdir /var/data/git/my_repos.git + +Je lui ai donné le nom "par convention": my_repos.git, bien que nommer les dépôts par projet ou par utilisateur me semblait plus logique. On pourra toujours en créer d'autre plus tard. + +Mon but est d'atteindre un dossier ou un autre par une adresse du type: git.ordipolo.fr/nom_du_dépôt. +Il faudrait aussi que le dossier supporte deux types de clients git: l'appli console ou appli graphique normale et éventuellement plus tard un site apache/php. + +4/ Concernant les droits, je ferais une suggestion: On a besoin que n'importe quel utilisateur puisse écrire dans my_repos.git, et notamment l'utilisateur du serveur apache "www-data". Ainsi par sécurité, on va cacher le dossier de niveau inférieur, ce qui nous fait: +chmod 711 /var/data/git +chmod 777 /var/data/git/my_repos.git +Les utilisateurs devraient ainsi pouvoir atteindre le dépôt et placer des projets. +Inconvénient: il faut être root pour créer un nouveau dépôt. + +Ayant créé ces dossiers en tant que root, il reste bien le propriétaire des deux dossiers. + +Nous pouvons maintenant nous déconnecter du compte root, taper "exit" ou faire un "Ctrl + d" + +5/ Initialiser le dépôt depuis ssh +cd /var/data/git/my_repos.git +git init --bare + +Noter bien le paramètre --bare qui sert à initialiser un projet vide. +C'est ce qu'il faut faire sur un serveur, on placera les fichiers dedans ensuite. +Un client n'a lui pas besoin de ce paramètre. + +Si on ajoute --shared, le dossier est autorisé en écriture au groupe git. + +Nous pouvons maintenant nous déconnecter si nous étions connecté avec ssh. +Le dépôt est utilisable par les clients. +Ils peuvent procéder comme avec n'importe quel serveur git. + +6/ Création d'un dépôt local côté client. + +Configuration prérequise (globale signifie pour tous dépôts): +git config --global user.name "mon nom" +git config --global user.email "mon_e-mail@exemple.com" +git config --global init.defaultBranch master + +Un utilisateur crée un projet 'presque vide': +mkdir monprojet +cd monproject +git init +Ajouter au moins un fichier au projet (le push échoue à vide) +git add "fichier" +git commit -m 'première validation' +git remote add origin polo@ordipolo.fr:/var/data/git/tuto_git +git push origin master + +Ce que tout le mode va faire ensuite: +git clone mon_nom@ordipolo.fr:/var/data/git/tuto_git +cd projet +nano "fichier" +git commit -am 'correction du fichier "fichier"' +git push origin master + +Note: avec la syntaxe "polo@ordipolo.fr:/chemin/..." on comprend que ssh est utilisé. +C'est la méthode recommandée. +Autres méthode: +- connexion locale avec le chemin sans l'identifiant et le nom du serveur: utile si on utilise NFS. +- connexion git: non sécurisé mais plus rapide, intéressant pour un dépôt public. + diff --git a/tuto git.txt b/tuto git.txt new file mode 100644 index 0000000..8b950e6 --- /dev/null +++ b/tuto git.txt @@ -0,0 +1,121 @@ +cours git openclassrooms + +https://openclassrooms.com/fr/courses/5641721-utilisez-git-et-github-pour-vos-projets-de-developpement +https://wiki.archlinux.org/index.php/git + + +Git est un logiciel qui sert à gérer du code source. Ces fonctionnalités sont +- d'héberger du code: +- le contrôle de versions +- le travail collaboratif +En gros, il garde le code source d'un projet en gardant les anciennes versions, +De plus, il note quel utilisateur à déposé quel code. +Un code peut donc être vérifié par tout le monde avant que soit mis à jour le fichier principal. + +C'est un système distribué, il est possible de se connecter à n'importe quel dépôt de la même manière. +Il sont interconnectés et apparaissent à l'utilisateur comme un seul serveur. + + +Configuration avec la console. + +On doit d'abord donné un nom d'utilisateur et un mot de passe: +git config --global user.name "John Doe" +git config --global user.email johndoe@example.com'' + +Pour activer les couleurs: +git config --global color.diff auto +git config --global color.status auto +git config --global color.branch auto + +Choix d'un éditeur (par défaut vim, on peut en choisir un graphique): +git config --global core.editor nano +git config --global merge.tool vimdiff + +Pour le master se nomme toujours master: +git config --global init.defaultBranch master + +Pour afficher toutes les règles choisies: +git config --list + + +Aspect général de l'utilisation de git. + +1/ Créer un dépôt, on a pour ça deux possibilités: +- créer un dépôt local +- Créer un compte github (ou autre) et "forker" un projet (open source du coup). + +2/ Sur son PC, créer un dossier avec le nom du projet, puis initialiser: + mkdir projet + cd projet + git init +Ce "projet" peut être perso (et hébergé sur github ou autre) ou un projet open source auquel on contribue. +Il contient maintenant un dossier caché: .git + +3/ récuperer l'URL du projet (bouton vert clone or download) +et lier le projet à notre dépôt local avec la commande: + git remote add OC https://github.com/OpenClassrooms-Student-Center/ProjetOpenSource.git + +4/ cloner le projet sur son propre dépôt github et entrer dedans: + git clone https://github.com/OpenClassrooms-Student-Center/ProjetOpenSource.git + cd ProjetOpenSource +Ce sous-dossier contient aussi un dossier caché .git + +L'ensemble des fichiers et dossiers du projet est visible avec l'explorateur de fichiers. +Le terminal quand à lui va nous afficher des branches. +Au début, on a juste le "master", c'est à dire la version d'origine, on ne la modifiera jamais. + +5/ Créer une branche sur laquelle on codera: + git branch modifs + +Lorsque le nouveau code sera satisfaisant, on pourra chercher à l'ajouter au "master". +Git est justement capable de fusionner proprement l'ancien code avec le nouveau +en sachant quelles sont les portions qui ont changé et si il y a des conflits entre branches. +Si on travaille à plusieurs, on confira une partie du projet à chaque personne, sans croisement. + +Pour connaître les branches d'un projet: + git branch +J'obtients: + * master + modifs +Les fichiers que je vois dans l'explorateur de fichiers sont donc ceux du master. + +6/ Il est temps de coder! +On passe d'une branche à l'autre:. + git checkout modifs + git checkout master +Les fichiers visibles avec l'explorateur de fichiers sont maintenant ceux de la branche modifs. +Je suis dans une sorte de monde parallèle où je peux coder sans que ça impacte les originaux, +Je suis physiquement toujours dans le même dossier, mais dans une autre version de celui-ci. + +projet + |-> .git + |-> nom_du_dossier cloné + |-> .git + |-> fichiers & dossiers sources + +7/ Quand j'ai fini de coder, j'enregistre les changements dans git: + git commit -m "nom descriptif pour s'y retrouver" +Le master ne change pas, ce qu'on vient de faire est une sorte de photo de la branche à un instant T. + +8/ Pour mettre à jour le master distant: + git push +Le mode de passe du compte sur le serveur est demandé. + +9/ Demander au responsable du projet open source d'intégrer notre travail au projet. +Lui laisser un commentaire avec des explications sur les "améliorations" apportées, +le responsable du projet acceptera ou non la mise à jour. +On appelle ça une "pull request". + + + projet open source + | ^ + fork pull request + v | + dépôt perso distant + / ^ + clonage commit + push + v | +dépôt local master => dépôt local branche + + +Travailler en local. -- cgit v1.2.3