66 links
  • Ban's links
  • Home
  • Login
  • RSS Feed
  • ATOM Feed
  • Tag cloud
  • Picture wall
  • Daily
Links per page: 20 50 100
10 results tagged git x
  • thumbnail
    Fancy highlighting of interactive staging diffs - Git 2.9 has been released | The GitHub Blog

    In Git 2.9, you can now ask it to filter the diffs [interactive staging] shows through any script you like:

    $ git config interactive.diffFilter diff-highlight

    December 2, 2018 at 11:17:17 GMT+1 * - permalink -
    QRCode
    - https://blog.github.com/2016-06-13-git-2-9-has-been-released/#beautiful-diffs
    git
  • Author name with etckeeper and Git

    Ever got annoyed how you get "root" as author in your etckeeper commits made through sudo? I do. The problem does not exist with etckeeper commit, but the etckeeper interface doesn't allow for committing only a subset of the changes (which is one of many Git super-useful features). So I want to use git commit. But it records myself as root.

    The problem is that sudo makes us essentially root. One could argue that well, it's the point! Indeed it is, though here we want to get root's rights, yet still be ourselves. There are various possible solutions to this, and here are some:

    1) use sudo -E. This tells sudo not to reset any of the environment variables, which keeps among other things $HOME, in which Git will find your .gitconfig. This is easy, but it's a nuclear option with a nuclear cloud coming back your way: you lose all security advantages of sudo's environment cleanup.

    2) if you're the only one on the machine, you can set user.name and user.email in the /etc repository. But if you're gonna do this, it's arguable how useful it is to know who committed, as it'll still always be the same person, just not root.

    3) manually pass --author to git commit. This is annoying, though.

    4) set GIT_AUTHOR_NAME/GIT_AUTHOR_EMAIL/GIT_COMMITTER_NAME/GIT_COMMITTER_EMAIL variables in your environment (.profile, .bashrc, wherever you get them the way you want), and list them in sudo's env_keep configuration setting. This mostly just Does What You Want™ -- but beware! these environment variables take precedence over Git's configuration, so it will apply whenever you use Git, not only in /etc, and regardless of your user.name and user.email settings.

    You can pick whichever solution you like the best (or find another one). A clever user could even write a script or shell function to wrap the git call to set the author info when appropriate (either a full wrapper being "smart", or a special named one for use when committing in /etc).

    Bonus, because I'm so kind, here's a script that picks the values from the .gitconfig of the user that called sudo, and runs git with whichever argument you gave it:

    #!/bin/sh
    
    # set to the git executable
    GIT=git
    
    # if running under sudo, try and use the caller's git config
    if [ -n "$SUDO_USER" ]; then
      if [ -z "$GIT_CONFIG" ]; then
        sudo_user_home=$(getent passwd "$SUDO_USER" | cut -d: -f6)
        [ -n "$sudo_user_home" ] && GIT_CONFIG="$sudo_user_home/.gitconfig"
      fi
      [ -n "$GIT_CONFIG" -a -f "$GIT_CONFIG" ] && export GIT_CONFIG
    
      [ -z "$GIT_AUTHOR_NAME" ] && GIT_AUTHOR_NAME=$("$GIT" config user.name)
      [ -z "$GIT_AUTHOR_EMAIL" ] && GIT_AUTHOR_EMAIL=$("$GIT" config user.email)
    
      [ -n "$GIT_AUTHOR_NAME" ] && export GIT_AUTHOR_NAME
      [ -n "$GIT_AUTHOR_EMAIL" ] && export GIT_AUTHOR_EMAIL
    fi
    
    exec "$GIT" "$@"

    Can be put in e.g. /usr/local/sbin/etcgit or something similar and called instead of git. Or it could be used as a drop-in replacement for git itself (just set GIT to the absolute path to the real git so the script doesn't call itself recursively).

    Of course, the script has to be in the PATH sudo uses (~/bin is not).

    April 5, 2015 at 19:00:23 GMT+2 * - permalink -
    QRCode
    - http://etckeeper.branchable.com/
    git etckeeper
  • Tab stops in Less (and Git love) - less(1) - Linux manual page

    Avec l'option -x de less, il est possible de définir la position des fins de tabulations (tab stops). C'est fort pratique pour visualiser un fichier qui utilise des tabulations d'une largeur différente de 8 (la valeur par défaut), avec par exemple less -x4.

    Encore mieux, il est possible de spécifier plusieurs positions, ce qui est très utile par exemple pour visualiser un diff d'un fichier contenant des tabulations : en effet, comme chaque ligne d'un diff contient un caractère de contrôle en plus (+, - ou espace), les tabulations peuvent ne plus être alignées (si par exemple une tabulation de 8 commençait à l'offset 7, elle commencera alors à l'offset 8… et terminera alors à 16).
    Et donc pour ce cas, il suffit de définir une première largeur de 9 (8 + le caractère de contrôle de diff), puis une de 8 : less -x9,17.

    Et bien sûr c'est fort pratique pour Git : si la majeure partie des sorties de Git qui contiennent des tabulations que vous consultez sont des diffs (ce qui est fort probable), définir core.pager à less -x9,17 (ou autre valeur appropriée à votre projet) permet d'avoir des tabulations bien alignées sans avoir à définir PAGER à la main pour chaque appel.
    À noter bien sûr que cette propriété de configuration peut être aussi bien définie dans votre ~/.gitconfig global que le .git/config d'un dépôt particulier (très pratique si un projet particulier utilise un largeur de tabulation différente de 8).

    November 28, 2014 at 17:19:24 GMT+1 * - permalink -
    QRCode
    - http://man7.org/linux/man-pages/man1/less.1.html#OPTIONS
    less git
  • Applying patches with embedded CR with git-am - Git - git-am Documentation

    Après vous être pris la tête pendant un bon moment à voir « le patch ne s'applique pas », vous vous rendrez compte que git am supprime les CR par défaut.

    J'imagine que le but est de simplifier la vie des gens qui reçoivent des patchs par email (puisque la fin de ligne pour les mails est CR-LF) et que la plupart des fichiers utilisent seulement LF.
    Moins pratique par contre si l'on a utilisé git format-patch et qu'un des fichiers avait des CR-LF.

    Solution : passer l'option --keep-cr à git-am.

    November 19, 2014 at 19:21:24 GMT+1 * - permalink -
    QRCode
    - http://git-scm.com/docs/git-am
    git
  • Specifying revisions - Git - git-rev-parse Documentation

    Je savais qu'on pouvait tout faire, mais bowdel !
    Lire aussi la section suivante pour les plages : http://git-scm.com/docs/git-rev-parse#_specifying_ranges

    November 11, 2014 at 19:15:06 GMT+1 * - permalink -
    QRCode
    - http://git-scm.com/docs/git-rev-parse#_specifying_revisions
    git
  • Git's format-patch in hg – Mercurial

    hg n'a pas directement le format-patch de Git, qui est très pratique non seulement pour envoyer des patches par mail (où hg a l'extension Patchbomb), mais aussi pour simplement exporter vers un fichier par exemple pour attacher à un rapport de bug.

    hg a export qui fait le boulot, mais qui n'écrit pas automatiquement dans un fichier. Pour ce faire, il faut utiliser -o (--output), et écrire un nom de fichier à la main. Heureusement on peut utiliser des des formats automatisés comme %n et %m. Pour une sortie similaire à format-patch on utilisera -o '%n-%m.patch'.

    Comme tout ça est bien verbeux, je suggère un alias (http://www.selenic.com/mercurial/hgrc.5.html#alias) :

    [alias]
    format-patch = export -v -o '%n-%m.patch'

    September 15, 2014 at 15:43:22 GMT+2 * - permalink -
    QRCode
    - http://www.selenic.com/mercurial/hg.1.html#export
    hg mercurial git
  • Git-style branches in hg: bookmarks – Mercurial

    Les branches sous Git sont réputées pour êtres différentes de celles des autres systèmes, et c'est vrai. La fonctionnalité de hg la plus proche de celle des branches Git sont les bookmarks.
    Pas évident de prime abord, mais ça marche plutôt bien (au moins pour un utilisateur occasionnel venant de Git).

    September 15, 2014 at 15:01:20 GMT+2 * - permalink -
    QRCode
    - http://www.selenic.com/mercurial/hg.1.html#bookmarks
    hg mercurial git
  • Git-style `log` output: hg -fv – Mercurial

    Le comportement par défaut du log de hg est proprement exaspérant pour un utilisateur de Git : la révision par défaut étant tip:0 (qui n'est pas nécessairement l'état courant).
    Pour avoir le log de l'état courant du dépôt, comme le fait Git par défaut : -f (--folow). On ajoutera -v pour avoir des messages complets.
    Pour inclure les différences on utilisera p, comme avec Git (peut-être en combinaison avec -g pour avoir le format étendu de Git, même s'il ne change rien pour les diffs les plus courants).

    September 15, 2014 at 14:54:15 GMT+2 * - permalink -
    QRCode
    - http://www.selenic.com/mercurial/hg.1.html#log
    hg mercurial git
  • ColorExtension - Mercurial

    Un autre must-have, le pendant du color de Git, et fonctionne à peu près pareil.

    September 15, 2014 at 14:47:58 GMT+2 * - permalink -
    QRCode
    - http://mercurial.selenic.com/wiki/ColorExtension
    hg mercurial git
  • PagerExtension - Mercurial

    Must-have, particulièrement pour tout utilisateur de Git qui a l'habitude d'un comportement pratique par défaut. Comme son nom l'indique, cette extension permet d'utiliser un pager automatiquement sur la sortie de la plupart des commandes, comme par exemple log ou export.

    Les options suggérées pour less sont très bonnes, et fonctionnent comme Git :
    F : quitter less automatiquement si la sortie tient sur l'écran
    R : garder les séquences d'échappement pour la coloration (utile en particulier avec l'extension color)
    X : ne pas vider la vue à la sortie, indispensable quand on utilise F

    September 15, 2014 at 14:39:56 GMT+2 * - permalink -
    QRCode
    - http://mercurial.selenic.com/wiki/PagerExtension
    hg mercurial git
Links per page: 20 50 100
Shaarli - The personal, minimalist, super fast, database-free, bookmarking service by the Shaarli community - Help/documentation