Commandes Git de tous les joursFrom VLECette page décrit les commandes utilisées quotidiennement pour le développement de VLE.
Récupérer une version de VLE
git clone git://vle.git.sourceforge.net/gitroot/vle/vle
git clone git://vle.git.sourceforge.net/gitroot/vle/vle cd vle git-branch -b v0.7.0 -m 0.7.0 git-checkout v0.7.0 Création d'un patchLa création d'un patch se déroule en trois étapes, le téléchargement des sources ou de la dernière branche, la création du patch et l'envoi au mainteneur officiel.
# création d'une branche locale dans laquelle créer les patchs git checkout -b correction master # modification du code [...édition...] # pour ajouter, déplacer ou supprimer des fichiers git add / git-mv / git-rm # création d'un commit, git-commit -a # Vous pouvez bien sûr créer plusieurs patchs si vous modifiez à nouveau le # dépôt et que vous exécutez de nouveau la commande git-commit -a. # Attention à bien suivre le style des messages lors du commit. # Enfin, la dernière étape, la création des patchs : un fichier par commit # depuis l'origine. git format-patch origin
# si le patch à modifier est en haut de la pile, vous pouvez directement # modifier le dépôt [...édition...] git add / git-mv / git-rm # une fois les modifications adoptées, il faut modifier le patch commit # courant : git commit -a --amend
# Parfois, il est nécessaire de fusionner des commits entre eux pour éviter # d'envoyer sur le serveur des commits qui sont trop dépendants. La solution # sous Git est d'ouvrir les commits. Par exemple si on veut fusionner # deux commits : # 1. On ouvre le commit en sommet de la branche git reset --soft HEAD~1 # 2. HEAD est égal au deuxième patch. Il faut amender ce patch : git commit -a --amend # Un éditeur s'ouvre et normalement a repris le message du 2e commit et les # modifications du premier commit sont intégrés au 2e commit.
# le commit à modifier est le 3e dernier commit git rebase -i HEAD~3 # votre éditeur favori se lance, mettez 'edit' dans la ligne du patch # à corriger. Git se charge de mettre votre dépôt dans l'état où le # commit à modifier est le plus récent. Vous pouvez maintenant corriger # les problèmes [...édition...] git add / git-mv / git-rm # une fois fini, tapez la commande suivante pour remettre le dépôt dans # un état normal. Attention, si vous avez des fichiers dans l'état : # 'Changed but not updated', il est nécessaire des les ajouter avec la # commande git add git rebase --continue
# avant d'envoyer le patch, vous vous assurez que l'ensemble de vos # patchs sont compatibles avec le dépôt officiel VLE : git checkout master # sur la branche master git pull # nous récupérons les patchs officiels et nous les # fusionnons avec la branche locale master git checkout correction # sur la branche correction git rebase master # nous tentons d'appliquer les patchs, # en cas de conflit, les résoudre et faire # git rebase --continue # vous pouvez également demander un mode intéractif plus souple si certain # de vos patchs ont été intégrés sur le dépôt public : git rebase -i master Syntaxe pour les patchsUn patch possède une syntaxe bien définie. Elle est composée de deux partie. Une première qui indique de manière succincte le rôle du patch et la deuxième de plus complète. À noter que la description complète peut inclure des références sur les identifiants des bogues et autres fonctionnalités du bugtracker. Dans ce cas, il faut ajouter (closes: #xxx, #yyy).
bibliothèque: libre jusqu'au 53e caractère Une description plus complète du patchs, avec l'utilisation d'item si nécessaire. Comment ? Pourquoi ? La taille ne doit pas dépasser 72 caractères * On peut également ajouter des listes pour bien montrer les différentes parties du patch. * etc.
gvle: fix crash when move cursor vle: add get function in condition class
Add a copy constructor to the external event * Add new swap functions to the devs::Event and devs::ExternalEvent (closes: #321654987). * Add a copy constructor to build easyly new external events (closes: #321,#654). Création d'un dépôt distantLa création d'un nouveau dépôt commence par la création du dépôt local avant la création du dépôt distant (dans notre cas sur le serveur vle).
Il faut se placer à la racine de son projet et initialiser le dépôt local. Un répertoire .git est créé à la racine de votre projet. cd monprojet
git init
Avant d'aller plus loin il s'agit de configurer votre environnement Git avec vos nom et prénom ainsi que votre adresse mail. git config --global user.name "Gauthier Quesnel" git config --global user.email quesnel@users.sourceforge.net git config --global color.diff auto git config --global color.status auto git config --global color.branch auto
L'ensemble des fichiers du projet doivent être ajoutés au dépôt local. Attention de bien vérifier que tous les fichiers doivent être rattachés au projet. Si ce n'est pas le cas, il faut ajouter individuellement chaque fichier. git add . Si un fichier a été ajouté accidentellement, la commande git rm supprime le fichier du dépôt. Il faut maintenant procéder au commit initial. Un éditeur de texte s'ouvre afin de spécifier le texte du commit initial. git commit -aVotre dépôt local est maintenant prêt à être publié sur un dépôt distant.
Il faut se connecter sur le serveur distant (en l'occurrence vle-project.org) en ssh. ssh <login>@vle-project.org -p 6999 Dans votre compte (sur vle-project.org), on crée au préalable un répertoire git pour tous vos dépôts distants si ce n'est pas déjà fait. mkdir git cd git Nous allons maintenant créer un dépôt vide en initialisant un dépôt vide et autoriser les push sur ce serveur (vle-project.org). mkdir monprojet.git cd monprojet.git git init --bare chmod a+x hooks/post-update touch git-daemon-export-ok Depuis la machine locale, il faut alors placer le contenu du dépôt local sur le dépôt distant. $ git remote add -t master -m master origin ssh://<login>@vle-project.org:6999/home/<login>/git/<mon-projet>.git $ git push --all -f origin
Nous allons publier son contenu sur gitweb (attention, il faut être root). $ touch /home/<login>/git/<mon-projet>.git/git daemon-export-ok $ cd /var/cache/git $ su $ ln -s /home/<login>/git/<mon-projet>.git Utilisation des tag
git tag vxxxx
git push --tags
git checkout -b branchelocal v0.6.0 [vim] git commit -a # création d'une branche 0.6.0 git push origin branchelocal:refs/heads/0.6.0 # publication des commit sur une branche distante 0.6.0 git push origin branchelocal:0.6.0 # destruction de la branche distante 0.5.0 git push origin :0.6.0
|