Utilisation des branches et de git stash

Posté le sam. 14 avril 2012 • Tags : git

Quand j'utilise git avec des branches il m'arrive d'avoir des fichiers sur une branche qui sont pas a commiter dans l'immédiat. J'utilise donc git stash, voyons voir comment l'utiliser simplement.

On regarde l'état du status et des branches :

git status
# On branch master
nothing to commit (working directory clean)

$ git branch
* master

Je travail sur la branche master et je n'ai pas d'autre branche. Je vais donc faire une branche API pour mon projet. :

git branch API

git branch
  API
  * master

Maintenant je vais changer de branche git checkout pour être sur ma branche API et modifier les fichiers sur cette branche. :

git checkout API
Switched to branch 'API'

git branch
* API
  master

Maintenant je vais modifier un mon fichier manage.py sur ma branche API. :

git status
# On branch API
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#    modified:   manage.py
#
no changes added to commit (use "git add" and/or "git commit -a")

Si je veux revenir sur mon master, sans avoir la modification du manage.py je vais devoir utiliser git stash (qui sauvegardera mes modifications du manage.py) :

git stash
Saved working directory and index state WIP on API: 8b6342d Fix register.py
HEAD is now at 8b6342d Fix register.py

$ git status
# On branch API
nothing to commit (working directory clean)

Maintenant que notre branche est propre on peut changer de branche revenir sur le master par exemple. :

$ git checkout master
Switched to branch 'master'

$ git status
# On branch master
nothing to commit (working directory clean)

On peut donc travailler tranquillement sur la branche master. Puis revenir sur notre branche API, lister les stash git stash list récupérer les modifications précédentes git stash pop. :

git checkout API
Switched to branch 'API'

git stash list
stash@{0}: WIP on API: 8b6342d Fix register.py

git stash pop
# On branch API
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#    modified:   manage.py
#
no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (533906a52b923a8960fa0f6fdf17a288c94f233a)

$ git status
# On branch API
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#    modified:   manage.py
#
no changes added to commit (use "git add" and/or "git commit -a")

Maintenant je peux continuer les modifications sur ma branche API réutilise git stash si besoin ou les commiter, merger ma branche…

git stash pop (récupére le dernier stash enregistré stash@{0}, l'applique et le supprime de la liste) mon alias = git stapp

git stash apply (récupére le dernier stash enregistré stash@{0} et l'applique)

Et pour rien n'oublier (RTFM) : man git stash


Renomer des fichiers en CLI (ligne de commande)

Posté le sam. 14 avril 2012 • Tags : cli, file, linux

Lorsque je fais mes backups j'essaye d'avoir des noms de fichiers correct. Sous linux pour renomer plusieurs fichiers avec bash j'utilise "rename".

Exemple je veux supprimer tous les espaces d'un fichier :

rename "s/ *//g" *.*

Ou renomer tous mes fichiers .WAV en .wav etc… :

rename "s/\.WAV/\.wav/g" *.WAV

A vous de modifier l'expression régulière !


Update .gitconfig

Posté le ven. 13 avril 2012 • Tags : git, config

Ajout du pull, push, diff et surtout stash :

[user]
  name = François LASSERRE
  email = mon@email.fr
[diff]
  tool = vimdiff
[color]
  branch = auto
  diff = auto
  status = auto
  interactive = auto
  ui = true
[alias]
  br = branch
  ci = commit -a
  co = checkout
  sh = show --color-words
  st = status
  di = diff
  ph = push
  pl = pull
  sta = stash
  stalist = stash list
  stast = stash list
  stapp = stash pop
  starm = stash drop
  last = cat-file commit HEAD
  graph = log --graph --decorate
  tree = log --graph --oneline --decorate
  pom = push origin master
  logs = log --stat
  currentbranch = "!git branch | grep ^* | cut -d \" \" -f 2"
[core]
  excludesfile = ~/.gitignore
editor = vim
  filemode = false
[merge]
  tool = vimdiff
[http]
  #sslverify = false|

Git mes fichiers de config gitconfig / gitignore

Posté le mar. 31 janvier 2012 • Tags : git, config

Fichier .gitconfig :

[user]
    name = François LASSERRE
    email = mon@email.fr
[diff]
    tool = vimdiff
[color]
    branch = auto
    diff = auto
    status = auto
    interactive = auto
    ui = true
[alias]
    br = branch
    ci = commit -a
    co = checkout
    sh = show --color-words
    st = status
    last = cat-file commit HEAD
    tree = log --graph --oneline --decorate
    graph = log --graph --decorate
    pom = push origin master
[core]
    excludesfile = ~/.gitignore
    editor = vim
[merge]
    tool = vimdiff

Fichier .gitignore :

# Ignore files from git

# ._ files (Mac Os X)
._*

# .DS_STORE (Mac Os X)
.DS_STORE

# .swp (Vim)
*.swp

Créer paire de clé pour se connecter en SSH

Posté le ven. 13 janvier 2012 • Tags : ssh, key

On commence par ouvrir un terminal puis on tape :

ssh-keygen -t rsa -b 4096

Enter file in which to save the key (/Users/choiz/.ssh/id_rsa):

En général je garde le fichier id_rsa donc je tape "enter" sinon vous pouvez spécifier un autre chemin ainsi qu'un autre fichier. :

Enter passphrase (empty for no passphrase):

Ici on tape un mot de passe si on en veut un lors de la connexion aux différents hosts. En général j'en défini un.

Pour finir on copie la clé sur le serveur soit via scp :

scp ~/.ssh/id\_rsa.pub user@ip:~/.ssh/authorized\_keys/

ou via ssh-copy-id :

ssh-copy-id -i ~/.ssh/id\_rsa.pub user@ip

PHP + Gettext + Debian

Posté le dim. 04 décembre 2011 • Tags : php, gettext

J'utilise maintenant php-gettext pour mes traductions. C'est plus facile en utilisant des outils tel que pootle ou poedit. Pour utiliser gettext sur votre site en php il faut télécharger le package php-gettext :

apt-get install php-gettext

Ensuite il faut modifier le fichier /etc/locale.gen et enlever les commentaires devant les langues qui vont sont à traduire par exemple : Allemand, Anglais, Espagnol, Français & Suédois :

de_DE.UTF-8 UTF-8
en_GB.UTF-8 UTF-8
es_ES.UTF-8 UTF-8
fr_FR.UTF-8 UTF-8
sv_SE.UTF-8 UTF-8

Puis regénérer les locales :

locale-gen

Ensuite il faut définir votre chemin pour les traductions par exemple :

lang/fr_FR/LC_MESSAGES/domaine.mo

Puis dans votre fichier php de configuration :

<?php
// configuration de la langue
$lang = 'fr_FR'; // Langue a afficher
$lang_encode = 'utf8'; // Encodage du fichier
$lang_path = './lang'; // Chemin des fichiers de langue
$lang_file = 'domaine'; // Nom du fichier de langue

putenv('LANG='.$lang.'.'.$lang_encode);
putenv('LANGUAGE='.$lang.'.'.$lang_encode);
setlocale(LC_MESSAGES, $lang.'.'.$lang_encode);
bindtextdomain($lang_file, $lang_path);

if (function_exists('bind_textdomain_codeset')) {
    bind_textdomain_codeset($lang_file, $lang_encode);
}

textdomain($lang_file);
?>

Puis faites le test en affichant dans un fichier php le texte "hello" :

<?php
// on inclus la config…
include_once('config.php');
echo _('hello');
?>

Pour générer un fichier .mo a partir d'un fichier .po :

msgfmt domaine.po -o domaine.mo

Pour générer un fichier .po a partir de fichier php avec du gettext, faire un fichier texte avec tous vos fichiers php ou on doit récupérer le gettext.

Exemple listing_gettext.txt tel que :

index.php
contact.php
etc…

Ensuite il faut faire la commande suivante pour générer le fichier domaine.po dans le dossier lang/ depuis notre fichier texte avec les php :

find . -iname "*.php" | xargs xgettext --from-code=UTF-8 --default-domain=domaine -p lang/

Pour finir voilà le path des fichiers .po et .mo dans mon application web :

lang/fr_FR/LC_MESSAGES/domaine.po
lang/fr_FR/LC_MESSAGES/domaine.mo
lang/en_GB/LC_MESSAGES/domaine.po
lang/en_GB/LC_MESSAGES/domaine.mo

N'oubliez pas de redémarrer votre serveur web pour que les changements soient pris en compte.

Mise à jour le 30 Novembre 2015 par doogaille.


Clavier Apple sur debian

Posté le ven. 02 décembre 2011 • Tags : debian, keyboard, osx

Depuis le temps que je bosse avec un clavier Apple je me suis habitué au mapage clavier Mac. Il y a beaucoup de différences entre un clavier AZERTY de PC et un clavier AZERTY de Mac.

Les touches : @ # ~ | (pipe) = + - _ ! ( ) { } [ ] sont disposées à des endroits complétement différents.

J'ai donc décidé de modifier la configuration de debian pour prendre en compte un clavier mac. :

dpkg-reconfigure keyboard-console

Select keymap from arch list

azerty

French

Apple USB

dpkg-reconfigure keyboard-configuration

model: Apple

layout: France - Macintosh

Key for AltGr: No AltGr Key

Compose key: Right Alt (AltGr)

Use Control+Alt+Backspace to terminate the X server? no

J'ai choisi un clavier Apple, Français Mac, sans touche AltGr, avec comme touche de fonctionnalité secondaire "Alt droit". Malheureusement je n'ai pas réussi a mapper l'Alt de gauche pour avoir la même fonction qu'à droite…

Et ensuite j'ai indiqué que je ne voulais pas pouvoir quitter le server X avec la combinaison de touche Control+Alt+Backspace.

Si ceci ne fonctionne pas il faut se rendre dans la configuration du clavier de votre gestionnaire de fenêtre (xfce: dans mon cas). Puis désactiver le layout par defaut du système.

image0


Dual screen sur xfce

Posté le jeu. 01 décembre 2011 • Tags : linux

Un petit package bien pratique pour configurer le dual screen sur xfce se nomme : arandr :

apt-get install arandr

Ensuite il suffit d'ouvrir le menu d'xfce puis paramètres et vous avez le ARandR pour configurer les deux écrans.


Flash sous Debian

Posté le mer. 30 novembre 2011 • Tags : debian, linux

Lors de l'installation de Debian sur mon poste au travail j'ai eu la surprise en ouvrant Firefox que Deezer ne fonctionne pas ! Travaillant chez Deezer c'est un peu problèmatique.

J'ai donc téléchargé le package flashplugin-nonfree en procédant comme ceci :

vi /etc/apt/source.list

Ajouter contrib non-free aux différentes sources (sauf security) puis :

apt-get update

apt-get install flashplugin-nonfree

En relançant Firefox j'ai bien flash player fonctionnel sur Deezer.

Le package flashplugin étant nonfree Debian ne l'inclus pas directement lors de l'installation.


Voir les fichiers cachés sur Lion

Posté le mer. 02 novembre 2011 • Tags : file, osx

Dans un terminal :

defaults write com.apple.Finder AppleShowAllFiles TRUE

killall Finder

Ouvrir une fenêtre du Finder et vous voyez les fichiers cachés.