SCM Breeze facilite la selection de vos fichiers à commiter sous Git 11


Je sais, vous faites tous git add . comme Max des gros bourrins. Mais je vais partir du principe que certains d’entre vous font leurs commits avec amour, en prenant uniquement les fichiers dont ils ont besoin.

Et ces certains-d-entre-vous-qui-font-leurs-commits-avec-amour sont frustrés de devoir manuellement ajouter chaque fichier ou dossier.

Ceci est un message d’espoir pour notre minorité bafouée aux cris étouffés par la répression grondante des… Mais je m’égare.

La révolution s’appelle SCM Breeze, camarade

Ca s’installe les doigts dans le goulag:

git clone git://github.com/ndbroadbent/scm_breeze.git ~/.scm_breeze

Et on rajoute ça dans le .bashrc:

[ -s "$HOME/.scm_breeze/scm_breeze.sh" ] && source "$HOME/.scm_breeze/scm_breeze.sh"

Puis on copie git.scmbrc.example dans ~/.git.scmbrc:

cp ~./.scm_breeze/git.scmbrc.example ~/.git.scmbrc

Et on a alors accès à la commande gs, qui donne à peu prêt ça (shameless hotlinking):

En plus d’être vachement court à taper et d’avoir une sortie plus lisible, on obtient des pitis numéros a gauche (évidément). Et là, on peut faire des trucs vachement révolutionnaires comme:

ga 3 9 11 # rajoute uniquement ces fichiers pour les faire commiter
ga 3..9 # rajoute les fichiers de 3 à 9 pour les commiter
grm 3 # retire ce fichier
grs 5 # soft reset sur le fichier

Mais il y a encore mieux. Si vous connaissez autojump, vous apprecierez git_index, livré par le parti avec SCM Breeze:

Un petit alias dans .bashrc:

alias c="git_index"

Et à chaque fois qu’on rajoute un nouveau repo:

c --rebuild

Après il suffit de faire:

c quelques_lettre_du_nom_du_repo

Et où qu’on soit dans le système, on se retrouve dans le repo.

Vous pouvez en apprendre plus sur github.

PS: ouai, c’est du ruby…

11 thoughts on “SCM Breeze facilite la selection de vos fichiers à commiter sous Git

  • Sam Post author

    Hey foxmask: n’hésite pas à poste tes articles sur Django sur reddit/r/PythonFr ou pythonlive.fr. Aujourd’hui je l’ai fais avec 2 de tes articles pour que tu vois ce que ça donne.

  • foxmask

    heu oui mais heu en fait pythonlive je vois comment ca marche mais reddit je n’ai pas saisi l’intéret. Pour moi ca ressemblait à un bookmarking à la delicious. A mieux regarder ca ressemble à un gestionnaire de planète comme ici http://www.django-fr.org/planete/ mais ranger par sujet/communaute/techno ?
    Pour reddit je dois pouvoir automatiser la publication des liens via ifttt mais pas sur pythonlive ; faudra que j’y pense ;)
    edit: finallement ifttt sait pas faire ; ca sera donc tout à la main.

  • foxmask

    Tiens apres avoir fait du tri dans mes notes evernote je retrouve ce billet

    j’installe le truc et là, le drame …

    je veux aller dans un de mes dossiers

    foxmask@foxmask:~$ cd GitHub/
    bash: GitHub/ : ceci est un répertoire

    Je suis fort aise de l’apprendre très cher, comment m’y rends-je ?
    aucune idée car cd est aliasé, c’est pas malin d’aliaser les commandes systeme non ? :/

  • Mothsart

    J’ai eu le même soucis que foxmask… dût trouver une soluce “crade”.
    En revanche, les “git rm” (ga ou grs) ne marchent pas dès qu’on supprime un dossier :

    fatal: Could not switch to '/../repertoire/': Aucun fichier ou dossier de ce type

  • Pomeh

    Sinon il y a aussi ça qui peut être utilisé partout:
    – “git add -i” qui permet de faire des add en mode interactif (et permet même de commiter seulement quelques lignes d’un fichier !)
    – “git gui” qui permet de lancer la GUI intégrée à Git, un clickodrome simple et efficace (sauf s’il y a vraiment beaucoup de fichiers)

    Je sais que ce billet date un peu mais ça peu toujours servir :)

  • Sam Post author
    $ git gui
    git: 'gui' is not a git command. See 'git --help'.

    Je suppose qu’il faut installer plus que git-core.

    git add -i est un peu moins pratique que scm breeze, mais au moins, pas besoin de l’installer.

  • Pomeh

    Tiens c’est rigolo ça. Sous Windows, l’installation par défaut de git contient les commandes “git gui” et “gitk”, alors que sous CentOS il semble falloir installer le packet “git-gui” en plus. J’imagine que c’est pareil pour les autres plateformes, alors que pourtant le site officiel dit bien que “Git comes with built-in GUI tools (git-gui, gitk)”.

  • kontre

    Bah, les distrib font ce qu’elles veulent après. Sur ubuntu c’est séparé aussi.
    Je suppose que git doit pouvoir être utilisé sur un serveur sans serveur X, donc installé sans gui (qui aurait beaucoup plus de dépendances).

Leave a comment

Des questions Python sans rapport avec l'article ? Posez-les sur IndexError.