Logo Khaganat

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
fr:git [2015/12/14 15:36] zatalyzfr:git [2022/03/25 22:09] (Version actuelle) – Annuler les pseudo-modif zatalyz
Ligne 1: Ligne 1:
 ====== Git ====== ====== Git ======
-Nous utilisons [[fr:recuperer_les_donnees|Mercurial]] sur le projet pour gérer nos dépôts. Il existe un autre système de gestion des dépôtsGit. Savoir l'utiliser peut aussi être utile.+Nous utilisons [[https://git.khaganat.net/|une instance locale de Gitlab]] pour gérer nos dépôts. Nous utilisons donc le système de gestion des dépôts Git. Nous récupérons aussi les données de Ryzom Core qui utilise le système de gestion des dépôts [[fr:mercurial|Mercurial]]. 
 + 
 +Voir aussi [[fr:principe_de_developpement_sur_khaganat|les principes de base et comment récupérer les données propres à Khaganat]], ainsi que [[fr:gitflow]]. Les possibilités de Gitlab sont très bien présentées sur l'article [[https://makina-corpus.com/blog/metier/2019/gitlab-astuces-projets/|Gérer des projets avec Gitlab]]. 
 + 
 +<WRAP center round info 60%> 
 +Les indications d'installation sont données pour un système basé sur Debian, il suffit d'adapter la commande ''apt-get'' à votre propre distribution/OS. 
 +</WRAP> 
 + 
 + 
 + 
 + 
 +===== Installer et paramétret Git chez soi =====
  
 Commencez par installer git sur votre ordinateur. Commencez par installer git sur votre ordinateur.
Ligne 15: Ligne 26:
   cd Monprojet   cd Monprojet
  
-Ensuite, tout dépend de si vous démarrez depuis un projet en local, ou si vous mettez aussi votre projet en ligne, par exemple sur Github.+Ensuite, tout dépend de si vous démarrez depuis un projet en local, ou si vous mettez aussi votre projet en ligne, par exemple sur Github ou notre Gitlab
  
  
Ligne 38: Ligne 49:
 Afin de ne pas retaper son mot de passe à chaque "push", vous pouvez configurer ssh pour vous connecter directement à votre compte. Afin de ne pas retaper son mot de passe à chaque "push", vous pouvez configurer ssh pour vous connecter directement à votre compte.
  
-Commencez par [[fr:connexion_serveur_admin|générer votre clé ssh]] si ce n'est pas déjà fait et assurez-vous que l'agent ssh est lancé :+Commencez par [[fr:ssh#generer_une_cle|générer votre clé ssh]] si ce n'est pas déjà fait et assurez-vous que l'agent ssh est lancé :
   eval "$(ssh-agent -s)"   eval "$(ssh-agent -s)"
   ssh-add ~/.ssh/id_rsa   ssh-add ~/.ssh/id_rsa
Ligne 48: Ligne 59:
  
  
 +<WRAP center round info 60%>
 +Nous ne recommandons pas de passer uniquement par Github ; comme tout organisme centralisé et propriétaire, il est [[https://linuxfr.org/users/jehan/journaux/sourceforge-de-pire-en-pire-usurpation-d-identite-du-projet-gimp|susceptible de dérive]]. Mais c'est actuellement une plate-forme connue et très utilisée, une façon comme une autre de commencer. Jusque là, il n'y a eu aucune alerte sur leurs pratiques.
  
 +Notre [[https://git.khaganat.net/| instance gitlab]] n'est pas très puissante et, de ce fait, uniquement ouverte aux projets en rapport avec Khaganat. 
 +</WRAP>
 +
 +Pour les projets sur notre gitlab, il faut se connecter via ssh. Regardez l'adresse dans ''Dépôts'' > ''Clone''. Cela devrait être quelque chose comme 
 +  git clone ssh://git@git.khaganat.net:3543/monuser/test.git
 +
 +
 +Si l'adresse change, pour indiquer la nouvelle, c'est la commande suivante :
 +  git remote set-url origin ssh://git@git.khaganat.net:3543/monuser/test.git
 ===== Commandes de base ===== ===== Commandes de base =====
 Pour lister ce qui est à jour dans votre dossier : Pour lister ce qui est à jour dans votre dossier :
Ligne 62: Ligne 84:
  
 Pour mettre à jour ce que vous avez ajouté/modifié : Pour mettre à jour ce que vous avez ajouté/modifié :
-  git commit m 'bla bla'+  git commit -m 'bla bla'
 Les fichiers auront en commentaire votre "blabla" à cette version des modifications. Les fichiers auront en commentaire votre "blabla" à cette version des modifications.
  
Ligne 69: Ligne 91:
 Cela utilise par défaut l'adresse que vous avez auparavant indiqué. Si vous envoyez sur Github, votre nom d'utilisateur et votre mot de passe sera demandé. Cela utilise par défaut l'adresse que vous avez auparavant indiqué. Si vous envoyez sur Github, votre nom d'utilisateur et votre mot de passe sera demandé.
  
 +==== D'une branche à l'autre ====
 +Si vous ne voyez pas certains fichiers ou modifications, c'est sans doute qu'ils n'ont pas encore été intégré à master et sont sur une branche à part (voir [[fr:gitflow|l'organisation gitflow]] du travail). 
 +
 +Pour lister toutes les branches, y compris celles qui ne sont pas décompressés depuis votre clone/pull :
 +  git branch -r
 +Pour voir la liste des branches sur votre installation actuelle, qui ont été décompressées (l'astérisque devant une des branches indique celle sur laquelle on est) :
 +  git branch
 +
 +Récupérez le nom de la branche, puis changez :
 +  git checkout develop
 +
 +Pour récupérer directement une branche précise (par exemple ici le client) :
 +  git clone -b develop ssh://git@git.khaganat.net:3543/khaganat/mmorpg_khanat/khanat-client.git 
 +
 +Et si vous voulez récupérer sans l'historique, par exemple juste pour tester le client en question sans s'encombrer, c'est l'option ''<nowiki>--depth 1</nowiki>'' qui va être utile : 
 +<code>git clone -b develop --depth 1 ssh://git@git.khaganat.net:3543/khaganat/mmorpg_khanat/khanat-client.git </code> 
 +
 +Voir aussi 
 +  * [[https://git-scm.com/book/fr/v1/Les-branches-avec-Git-Gestion-de-branches|Les branches avec Git - Gestion de branches]] sur [[https://git-scm.com/]]
 +  * [[http://fr.gitready.com/beginner/2009/03/09/remote-tracking-branches.html|Branche de suivi distant ]] sur Git Ready
 +
 +===== Importer les nouveautés de Ryzomcore =====
 +J'utilise un fork de ryzomcore sur github à partir des sources
 +
 +  cd khanat_opennel_code
 +  git pull
 +  git checkout ryzomcore
 +  git remote add upstream https://github.com/ryzom/ryzomcore.git
 +  git fetch upstream
 +Essayer ça si vous utiliser les même sources  
 +  git merge upstream/develop
 +  git push origin
 +
 +Et voila, c'est à jour :)
 +
 +Si il y a des problemes de merge en changeant de source, mais ça reprend de zero
 +  
 +  git reset --hard upstream/compatibility-develop
 +  git push origin ryzomcore --force
 +
 +===== Annuler les modifications locales =====
 +Parfois, lors d'un pull, ce message apparait : "error: Vos modifications locales aux fichiers suivants seraient écrasées par la fusion".
 +
 +Soit on fait un commit, on push, soit si ce n'est pas des trucs qu'on veut garder, on fait le bourrin et on efface : 
 +  git restore *
 +
 +Un ''git status'' ensuite devrait montrer que tout va bien et qu'on peut tirer depuis la branche amont.
 +===== Aider la compilation de nos projets =====
 +
 +Gitlab permet aux utilisateurs d'aider à la compilation d'un projet en proposant la puissance de calcul de leurs ordinateurs personnels. 
 +
 +Installer et configures docker. En super utilisateur (faites //sudo// avant sinon), installez ce qui suis :
 +  sudo apt install docker.io
 +  sudo systemctl start docker
 +  
 +
 +Si vous voulez que le service docker démarre automatiquement avec votre ordinateur, vous pouvez aussi faire 
 +  sudo systemctl enable docker
 +
 +Toujours en root :
 +  docker pull gitlab/gitlab-runner
 +  docker pull gitlab/gitlab-runner:alpine
 +  docker run -d --name gitlab-runner --restart always -v /var/run/docker.sock:/var/run/docker.sock -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner:alpine
 +
 +Explication rapide : 
 +  * ''-d'' pour que ce soit en arrière plan, 
 +  * ''--name'' pour donner un nom, 
 +  * ''--restart'' va le redémarer automatiquement (au lancement de docker ou en cas de crash). 
 +  * ''-v'' va lier des dossiers externes à des dossiers internes, sous forme de "[dossier interne]:[dossier externe]". Ici par exemple, /etc/gitlab-runner sur le container sera lié à /srv/gitlab-runner/config sur votre machine.
 +  * enfin, il y a la sélection de l'image : ici, l'image "alpine" de gitlab/gitlab-runner.
 +
 +<WRAP center round tip 90%>
 +Note : en cas de mise à jour de l'image, il faudra faire les commandes suivantes pour avoir l'image à jour supprimer le container :
 +  docker pull gitlab/gitlab-runner:alpine
 +  docker rm -f gitlab-runner
 +puis recréer un container avec la commande précédente (''docker run -d --name gitlab-runner --restart always -v /var/run/docker.sock:/var/run/docker.sock -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner:alpine'').
 +
 +Docker fonctionne selon logique pull -> rm -> run.
 +</WRAP>
 +
 +À partir de là, nous avons un container docker "gitlab-runner", qui va commander le docker de l'hôte lui-même au travers de "-v /var/run/docker.sock:/var/run/docker.sock". C'est un socket unix, imaginez-le comme une connexion internet interne.
 +
 +Il faut ensuite enregistrer ce "runner" sur le CI(("Continuous Integration",  en français "Intégration continue", en gros notre instance gitlab en cours)).
 +
 +  sudo docker exec -it gitlab-runner gitlab-runner register
 +
 +Vous aurez besoin d'information spécifique de votre projet.
 +(à savoir l'URL et le "registration token"
 +[définit : settings - CI/CD de votre projet GIT])
 +
 +Ex.: 
 + [[https://git.khaganat.net/khaganat/mmorpg_khanat/opennel-pymanager/settings/ci_cd]]
 + [[https://git.khaganat.net/khaganat/mmorpg_khanat/khanat-opennel-code/settings/ci_cd]]
 + [[https://git.khaganat.net/khaganat/khanat/runners]]
 +
 +
 +^ Question ^ Réponse possible (à adapter) ^                                                   
 +| Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/ci): | https://git.khaganat.net/ci((Indiqué sur https://git.khaganat.net/khaganat/khanat/runners)) | 
 +| Please enter the gitlab-ci token for this runner: | Uxhiv1oGgNd6FECKDMn5((Indiqué sur https://git.khaganat.net/khaganat/khanat/runners)) | 
 +| Please enter the gitlab-ci description for this runner: | un nom pour vous identifier dans la liste des runners, par exemple pseudo+OS 
 +| Please enter the gitlab-ci tags for this runner (comma separated): | Docker,Linux 
 +| Whether to run untagged builds | true |
 +| Whether to lock the Runner to current project | true |
 +| Please enter the executor: docker-ssh+machine, docker, docker-ssh, parallels, shell, ssh, virtualbox, docker+machine: | docker | 
 +| Please enter the default Docker image (eg. ruby:2.1): | ubuntu:16.04((Même si ce n'est pas votre OS, Dremor a dit que c'était ça !)) | 
 +
 +Dans votre fichier .gitlab-ci.yml [présent dans votre GIT], il faut s'assurer d'avoir un tag identique (par exemple Docker)
  
 ===== Ressources utiles ===== ===== Ressources utiles =====
Ligne 74: Ligne 203:
   * http://rogerdudler.github.io/git-guide/index.fr.html : un guide rapide, assez graphique.   * http://rogerdudler.github.io/git-guide/index.fr.html : un guide rapide, assez graphique.
   * http://christopheducamp.com/2013/12/15/github-pour-nuls-partie-1/ : Un tuto un peu plus long, où chaque commande est expliquée   * http://christopheducamp.com/2013/12/15/github-pour-nuls-partie-1/ : Un tuto un peu plus long, où chaque commande est expliquée
 +  * http://ndpsoftware.com/git-cheatsheet.html : Un pense-bête très bien fait pour retrouver les commandes.
 +
 +
 +<WRAP yellow center round box 75%>
 +{{ :fr:grafikart.png?nolink |}}
 +
 +Grafikart propose une [[https://www.grafikart.fr/formations/git|formation en ligne gratuite à Git]], de très bonne facture.
 +
 +Il y a en tout 16 chapitres et plus de trois heures de vidéo.
 +
 +Vous pouvez [[https://www.grafikart.fr/premium|soutenir son travail en vous abonnant]] sans que cela ne soit nécessaire pour visionner les cours.
 +
 +
 +<WRAP centeralign>En voici la vidéo d'introduction :
 +
 +{{youtube>rP3T0Ee6pLU?medium}}
 +
 +</WRAP>
 +
 +</WRAP>
 +
 +Voir aussi l'utilisation de [[fr:mercurial|Mercurial]], un autre système de gestion de version.
 +
 +===== Forges alternatives basées sur Git =====
 +
 +Forges indépendantes documentées :
 +  * [[https://notabug.org/|NotABug.org]] : basée sur [[https://notabug.org/hp/gogs/|leur fork]] de [[https://gogs.io/|Gogs]] dédiée à l'hébergement de projet sous licence libre. C'est un des projets de [[https://peers.community/|The Peers Community]].
 +  * [[https://codeberg.org/|Codeberg]] : basée sur [[https://gitea.io/en-us/|Gitea]], un fork de Gogs plus communautaire dans sa gestion, dédiée à l'hébergement de projet sous licence libre et open source.
 +
 +Divers membre du collectif [[chatons.org|C.H.A.T.O.N.S]] :
 +  * [[https://forge.tedomum.net|TeDomum.net]], association loi 1901, forge basée sur [[https://about.gitlab.com/|Gitlab CE]], [[https://tedomum.net/documentation/administration/conception/serveurs/|hébergement en France]], semble ouvert à tous et à tout usage.
 +  * [[roflcopter.fr|roflcopter.fr]], idem.
 +
 +Autres forges moins documentée :
 +  * [[https://git.en-root.org|en-root.org]] : basée sur Gitlab CE
 +  * [[https://gitlab.adullact.net|Forge de l'Adullact]] : basée sur Gitlab CE, orientée [[https://gitlab.adullact.net/adullact/Charte-Gitlat-Adullact/blob/master/README.md|logiciels libres métier]]
 +  * [[https://gitnet.fr|gitnet.fr]] : basée sur Gitea
 +
 {{tag>Données Outils}} {{tag>Données Outils}}
CC Attribution-Share Alike 4.0 International Driven by DokuWiki
fr/git.1450103815.txt.gz · Dernière modification : 2021/12/03 19:18 (modification externe)

Licences Mentions légales Accueil du site Contact