Le Blog du Geek Joyeux

Plus moins vite tu codes, moins plus vite ça plante

svn

  • Travailler en case-sensitive sous Mac

    Publié le 25 juillet 2010 à 00:00 - Quick Tips

    HFS+, le système de fichiers utilisé par Mac OS X depuis un bout de temps déjà est, par défaut, case-insensitive. Il est toutefois possible, aujourd’hui, de choisir d’utiliser une version case-sensitive lorsque l’on installe OS X.

    La plupart du temps, ça n’est pas spécialement gênant. Quand il s’agit de travailler cela peut vite devenir handicapant.

    Lire la suite

    Comments
  • Désactiver la résolution interactive des conflits dans Subversion

    Publié le 10 juillet 2010 à 00:00 - Quick Tips

    Depuis la version 1.5 de Subversion, la résolution des conflits se fait de façon interactive lorsque l’on utilise svn update.

    svn update
    Conflict discovered in 'some/file/located/somewhere.rb'.
    Select: (p) postpone, (df) diff-full, (e) edit,
    (h) help for more options:

    Personnellement, je ne supporte pas ce nouveau mode. Je préfère de loin faire un update complet et corriger les conflits à posteriori.

    Pour le faire de manière ponctuelle l’option –non-interactive permet d’obtenir ce comportement.

    svn update --non-interactive

    Pour le faire de manière permanente, éditez votre ~/.subversion/config et ajoutez la ligne suivante dans la section miscellany :

    [miscellany]
    ...
    interactive-conflicts = no
    Comments
  • Ignorer les changements d'espaces dans un diff SVN

    Publié le 14 novembre 2009 à 15:03 - Quick Tips

    Lorsque l’on édite un fichier, il peut arriver qu’en plus de simples modifications, certaines portions, voire le fichier entier, soient re-indentées. Malheureusement, Subversion étant bête et discipliné, un svn diff montrera les lignes modifiées mais également les lignes simplement indentées.

    Cela peut devenir gênant lorsque, par exemple, tout le fichier s’en retrouve changé.

    Pour ignorer ces différences d’espaces lors d’un diff, la commande à utiliser est la suivante :

    svn diff --extensions -bu
    Comments
  • Problème des noms de fichiers avec accents dans Subversion sous OS X

    Publié le 14 novembre 2009 à 13:48 - Quick Tips

    Si vous utilisez des fichiers dont le nom contient des accents sur un dépôt SVN, vous avez de grandes chances de rencontrer quelques soucis sous Mac, si vous avez installé Subversion avec MacPorts. Le problème vient de la différence de stockage des caractères unicode entre les plateformes Unix et OS X.

    Voici comment résoudre ce problème. C’est très simple, il suffit d’installer une variante du port subversion.

    port install subversion +unicode_path

    Si tout s’est bien passé, vous ne devriez plus avoir de problèmes.

    NOTE: j’ai ajouté cette option dans la Formula subversion de Homebrew mais c’est toujours en attente de merge de leur part…

    Comments
  • Utiliser TextMate pour les messages de commit SVN ou Git

    Publié le 27 septembre 2009 à 16:06 - Quick Tips

    Lorsque l’on utilise un éditeur de texte particulier, on apprécie de pouvoir l’utiliser comme éditeur par défaut pour peu tout. Cela comprend également les messages de commit des outils tels que SVN ou Git.

    Malheureusement, utiliser un éditeur graphique pour cela n’est pas toujours trivial.

    La commande mate propose l’option -w qui permet de signifier que l’on veut attendre que TextMate en ait fini avec le fichier pour reprendre la main.

    Il est vrai que TextMate intègre les fonctionnalités SVN et Git. Personnellement j'ai toujours préféré m'occuper de ces choses là en ligne de commande... chacun son truc...

    Pour SVN

    Il y a plusieurs façons de dire à subversion d’utiliser tel ou tel éditeur, le plus simple est de donner une valeur à la variable SVN_EDITOR :

    export SVN_EDITOR="mate -w"

    Pour Git

    Pour rester dans l’utilisation habituelle de Git, on utilisera la commande suivante :

    git config --global core.editor "mate -w"
    Comments
  • Changer facilement la configuration proxy de SVN

    Publié le 13 mars 2009 à 14:51 - Général

    Comme de nombreux développeurs, je suis très souvent amené à utiliser SVN (Subversion). Comme de nombreux développeurs toujours, je suis amené à partir en mission chez différents clients qui ont chacun leur proxy. Pour peu qu’on en ait déjà un au boulot ou chez soi, ça devient vite fatiguant de jongler entre ces différentes configurations.

    Voici donc une petite astuce toute bête pour se rendre la vie facile.

    Configurer un proxy dans subversion

    Première étape, savoir où se configure les proxies dans subversion. Tout cela se passe dans le fichier ~/.subversion/servers où l’on peut trouver les lignes suivantes :

    # http-proxy-host = 
    # http-proxy-port = 3128
    # http-proxy-username =
    # http-proxy-password =

    Comme on peut le voir, il est facile de configurer un proxy selon le serveur svn que l’on veut atteindre. C’est très bien, seulement ça ne nous aide pas. Nous ce n’est pas le serveur qui change mais l’environnement de travail !

    Comment se sauver la vie

    Tout d’abord il faut créer un fichier servers par environnement. Idéalement on les place dans le dossier ~/.subversion avec un nom comme env1_servers, env2_servers (en ce qui me concerne je prends 3 lettres représentatives de l’environnement).

    Pensez à renommer le fichier servers existant, en def_servers par exemple car servers va devenir un lien symbolique vers le fichier qui nous intéresse.

    On pourrait se contenter ce ça et s’amuser à appeler ln -s à tout bout de champ, voir même créer un alias comme “ln -s ~/.subversion/env1_servers ~/.subversion/servers” mais honnêtement, une solution pérenne (quel horrible mot) serait bien plus agréable.

    Voici donc une petite fonction shell qui va nous faciliter grandement la vie !

    # switch de profile svn
    svnpro() {
    if [ -f ~/.subversion/$1_servers ]; then
    ln -nfs $1_servers ~/.subversion/servers
    else
    echo "$1\_servers n'existe pas."
    fi
    }

    Et voila, il nous suffit maintenant de l’appeler de la manière suivante et notre configuration de proxy changera.

    svnpro env1
    svnpro env2
    Comments
  • Un peu de couleur dans les diffs SVN

    Publié le 16 février 2009 à 20:35 - Général

    Les diffs SVN peuvent parfois être longs et souvent pénibles à lire. Oui il y a des + et des - mais ça ne fait pas tout. Un bon moyen de simplifier cette lecture est l’utilisation de couleurs.

    Un utilitaire bien sympathique, colordiff, permet justement de coloriser l’affichage des diffs. Packagé sous Debian ou disponible via MacPort.

    Voici comment l’utiliser pour les diffs SVN.

    Pour une utilisation occasionnelle :

    svn diff --diff-cmd colordiff

    ou

    svn diff | colordiff

    Pour l’établir de manière globale, il suffit d’éditer le fichier ~/.subversion/config et d’ajouter dans la section helpers :

    diff-cmd = colordiff

    EDIT: Pour afficher la sortie de colordiff dans less, il faut utiliser l’option -R de ce dernier :

    svn diff | less -R

    Pour aller plus loin, un autre utilitaire permet de coloriser bien plus de choses, il s’agit de colorsvn.

    Comments
  • Ignorer les fichiers de votre IDE dans Subversion

    Publié le 16 février 2009 à 15:21 - Général

    Il peut arriver que, sur un projet, chacun utilise son propre IDE. Le petit problème c’est que chaque IDE crée des fichiers qui lui sont spécifiques. Lorsque l’on utilise Subversion, gérer les svn:ignore devient vite lourd. Mais une solution existe ! Ignorer localement certains fichiers.

    Je prendrai NetBeans comme exemple pour cet article.

    Voici ce que l’on peut voir lors d’un svn status après la création d’un projet sous NetBeans depuis des sources existantes:

    svn status
    ? nbproject
    M some\_file

    Dans le dossier ~/.subversion, il existe un fichier config. Dans ce fichier, sous le groupe miscellany, vous trouverez les lignes suivantes :

    ## Debian
    # global-ignores = \*.o \*.lo \*.la \*.al .libs \*.so
    # \*.so.[0-9]\* \*.a \*.pyc \*.pyo \*.rej \*~ #\*# .#\* .\*.swp .DS\_Store

    ## Mac
    # global-ignores = \*.o \*.lo \*.la #\*# .\*.rej \*.rej
    # .\*~ \*~ .#\* .DS\_Store

    Il vous suffit de décommenter ces lignes et de rajouter les fichiers que vous souhaitez ignorer :

    global-ignores = *.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS\_Store nbproject

    Voilà le résultat :

    svn status
    M some\_file
    Comments