J'ai mis du temps à me faire à git[1]. Non pas que son utilisation soit particulièrement compliquée, mais plutôt parce que, comme chaque système de gestion de version[2], il a ses propres caractéristiques. Venant du monde bazaar[3] et fossil[4] je me suis un peu emmêlé les pinceaux au début. Voici donc sans prétention ma petite /cheatsheet/.
[2] système de gestion de version (I18N)
1. On se place sur la branche mère `$ git checkout master'
2. On crée la nouvelle branche locale et on bascule dessus `$ git checkout -b nouvelle_branche'
3. On push upstream la nouvelle branche `$ git push -u origin nouvelle_branche'
C'est à dire héberger une instance de votre dépôt git sur un serveur quelconque (pas sur github, donc ^^) pour servir de dépôt /upstream/. C'est grandement inspiré de cet article[1].
Mise en place du dépôt sur votre machine distante :
$ cd /var/www/repositories/ $ mkdir my_project.git $ cd my_project.git $ git init --bare
Puis, en local :
$ cd my_project $ git init $ git add * $ git commit -m "My initial commit message" $ git remote add origin user@monserveur:/var/www/repositories/my_project.git $ git push -u origin master
Toute la magie tiens dans le fait que `user' doit avoir les droits d'écriture dans `/var/www/repositories/' --- ce qui est normalement le cas si vous avez réussi à faire votre `git init --bare'.
Si vous partagez votre dépôt avec des tiers, ils n'auront qu'à faire, pour le cloner, la ligne suivante : `$ git clone user@monserveur:/var/www/repositories/my_project.git'
Pour le coup une simple reprise de cet article[1].
Cette commande vous permettra cloner en /bare/ depuis github, transformant une version « clonée » en version « serveur ». Attention, il faut avoir l’autorisation de cloner (ssh, etc.) : `$ git clone --bare git@github.com:quidam/my_project.git'
Puis, sur votre poste de travail, il suffit de spécifier une nouvelle origine à votre copie de travail : `$ git remote set-url origin user@monserveur:/var/www/repositories/my_project.git'
Le script suivant doit pouvoir fonctionner avec n'importe quel hébergement git. Il faut simplement veiller à modifier la ligne 15 pour filtrer le résultat de `git remote' avec le bon fragment.
Tout l'intérêt de ce script, comparé au classique --- et documenté[1] --- `fossil export --git ../repo.fossil | git fast-import', vient de l'étape intermédiaire au cours de laquelle je modifie les occurrences de mon identifiant fossil vers une identité reconnue par github (ligne 11). À vous d'ajouter les traitements qui vous paraissent nécessaires à la suite de cette ligne.
1 #!/usr/bin/env bash 2 3 # This script have to be called from a git repository 4 5 # $1 must contain the path to the fossil file to export 6 [ -z "$1" ] && exit 1 7 8 [ -f tmp_export_file ] && rm tmp_export_file 9 10 fossil export --git "$1" > tmp_export_file 11 sed -i "s/milouse <milouse>/Étienne Deparis <mon@mail.tld>/g" tmp_export_file 12 13 cat tmp_export_file | git fast-import 14 15 GITHUB_TARGET=$(git remote -v | grep 'github.com:milouse' | head -n1 | cut -f1) 16 17 git push $GITHUB_TARGET trunk
--
📅 mercredi 6 avril 2016 à 22:18
📝 milouse with GNU/Emacs 29.4 (Org mode 9.7.6)