Proxy

Lorsqu’on travaille derrière un proxy, on se retrouve vite à devoir configurer nos outils pour être certain que leur trafic passera bien par celui-ci. Voici donc quelques paramètres de configuration pour répondre à ce problème.

GNU/Linux

Les variables d’environnement qui nous intéresse sont les suivantes:

  • http_proxy
  • https_proxy
  • ftp_proxy
  • no_proxy

On peut également les retrouver en majuscule: HTTP_PROXY par exemple.

La configuration s’effectue de la manière suivante dans un terminal:

export http_proxy=http://yourproxyaddress:proxyport
export no_proxy='127.0.0.1, *.local'

Pour visualiser le contenu d’une variable:

echo $http_proxy

GNOME

gsettings set org.gnome.system.proxy ignore-hosts "['127.0.0.1','*.local' ]"

APT-GET/APTITUDE

Si aptitude n’utilise pas le proxy défini au niveau système pour une raison ou une autre, on peut modifier le fichier /etc/apt/apt.conf pour y ajouter la ligne suivante:

Acquire::http::Proxy "http://yourproxyaddress:proxyport";

GIT

git config --global http.proxy http://yourproxyadress:port
git config --global https.proxy http://yourproxyaddress:port

Si le proxy bloque le protocole git://, on force l’utilisation de http:// :

git config --global url."http://".insteadOf git://

Et en cas de problème avec le protocole https://, on peut envisager :

git config --global http.sslVerify false

WINDOWS

NPM

Dans le fichier .npmrc, ajouter les lignes:

proxy=http://yourproxyadress:port
strict-ssl = false

BOWER

Dans le fichier .bowerrc, ajouter les lignes:

{
  "proxy":"http://yourproxyadress:port",
  "https-proxy":"http://yourproxyadress:port"
}

Git: Les commandes de base

Passons en revue les commandes basiques dont vous aurez besoin dès les premiers instants de votre utilisation de Git.

Pour créer un nouveau dépôt, il suffit de créer un dossier pour celui-ci puis d’effectuer un git init en se plaçant dans le dossier.
A noter que dans notre cas, l’utilisation de Gitolite implique que le dépôt doit être créer par un administrateur en modifiant conf/gitolite.conf.
Pour cloner un dépôt existant, c’est-à-dire, le récupérer sur votre machine:
git clone http://github.com/path/depository.git
Par exemple, ou avec ssh:// selon le protocole.

Pour connaître les fichiers modifiés récemment:
git status

Pour voir ce qui a été changé:
git diff
Il est possible de spécifier un fichier après diff.

Pour ajouter des fichiers à prendre en compte lors du commit:
git add fichier1 fichier2

Pour faire un commit, ie sauvegarder vos changements:
git commit
git commit -a pour inclure tous les fichiers listés dans git status.
git commit fichier1 fichier2 pour indiquer précisément quels fichiers inclure.

Visionner les logs:
git log
Options utiles: -p ou –stat

Modifier le dernier message de commit:
git commit –amend

Annuler le dernier commit:
git reset HEAD^ (Les fichiers restent modifiés)
git reset –hard HEAD^ (Les changements effectués dans les fichiers seront perdus)

Restaurer un fichier à son état du dernier commit:
git checkout fichier

Récupérer les nouveautés présentes sur le serveur:
git pull

Envoyer ses propres modifications au serveur:
git push

Annulé un commit publié:
git revert idDuCommit

Les branches

Quand faire une branche:
« Créez une branche pour toute modification que vous vous apprêtez à faire et qui risque d’être un peu longue. »

Voir les branches:
git branch
On trouve une étoile devant la branche où on se trouve.

Créer une branche:
git branch nomBranche

Se placer dans une branche:
git checkout nomBranche

Fusionner une branche dans la branche où vous vous trouvez:
git merge nomBranche

Scier/Supprimer une branche:
git branch -d nomBranche

Pour changer de branche sans avoir à faire un commit avant:
git stash
A pour effet de mettre de côté les fichiers en cours de modification.
On peut alors changer de branche, faire des modifs et revenir dans la branche précédente où on retrouve son travail avec:
git stash apply

Autres fonctionnalités:

Tagger un commit:
git tag nomTag idCommit

Appliquer les tags:
git push -tags

Supprimer un tag:
git tag -d nomTag

Chercher les fichiers contenant un mot:
git grep « mot »

Pour obtenir également le numéro de ligne:
git grep -n « mot »

Je crois qu’on a fait le tour. Pour le reste, direction le manuel ou la doc en ligne ;).
ProGit Version Française.

Gitolite: Installation

Pour pouvoir travailler à plusieurs sur un projet, ou même tout seul, mais avec un gestionnaire de version et pas un Dropbox inutile, je me suis penché sur l’installation d’un serveur Git, associé à Gitolite pour la gestion des utilisateurs.
Alors, pourquoi se faire son propre serveur, quel intérêt? Bien sûr, Github nous propose déjà ses services, mais pour héberger ses projets persos, pas encore près pour Github car trop jeune, ou ses projets d’école, rien de tel que son installation à soi. Rajoutons à cela la satisfaction d’héberger les données sur son propre serveur, en sachant que nous les contrôlons.

Trêve de bavardage, on va tout d’abord générer une clé rsa avec:
ssh-keygen -t rsa
Donner à la clé votre nom d’utilisateur.

On envoie la clé sur le serveur:
scp ~/.ssh/id_rsa.pub user@serveur.exemple.org:/tmp/user.pub

On se connecte au serveur via ssh et on obtient les droits root:
ssh user@serveur.exemple.org
sudo su –

On commence par installer tous les paquets nécessaires:
aptitude install  git-all perl openssh-server gitolite

On ajoute un utilisateur gitolite avec:
adduser gitolite

On passe à l’utilisateur gitolite:
su – gitolite

Et on exécute le script d’installation de Gitolite:
gl-setup /tmp/user.pub

Retour sur le poste client.
On va récupérer le dépot gitolite-admin qui va nous permettre de donner des droits et d’ajouter des utilisateurs via Git:
git clone gitolite@serveur.exemple.org:gitolite-admin

A ce stade, si un message vous indique que le dépot n’est pas valable, une opération s’impose pour forcer l’utilisation de la clé précédemment générée lors de la connexion.
Dans le fichier .ssh/config sur le poste client:

Host gitolite
User gitolite
HostName 37.26.241.58
IdentityFile ~/.ssh/user
IdentitiesOnly yes

Cela devrait régler le problème, sinon une recherche sur le net s’impose.

On se place dans le dossier:
cd gitolite-admin

On édite le fichier de conf pour ajouter un dépot, par exemple test:
vim conf/gitolite.conf

repo    test
RW+    =   user

On commit:
git commit -a -m « Add test repository »

On peut ensuite cloner le dépôt test:
git clone gitolite@serveur.exemple.org:test

Ajouter un readme à celui-ci:
echo « Test Repo » > README

Faire un commit:
git commit -a -m « Initial commit »

Et faire le premier push:
git push origin master

Voilà, à ce stade, le serveur Git fonctionne parfaitement et je suis en mesure de créer des dépôts, ajouter des utilisateurs, faire des commits, des push, des pull, etc…
Une seule contrainte, paramétrer les clefs sur chacun des postes de développement.
Autre point à éclaircir, le paramétrage des clefs sous Windows (Beurk), pour ceux qui développent sur cette plateforme avec des outils propres à cet OS (Dev Ps Vita).
Prochaines étapes donc: documenter ce point pour les éventuels utilisateurs et étudier l’installation du Etherpad-Lite modifié de Framasoft pour compléter les outils disponibles.
Et bien sûr, proposer ces outils aux amis et connaissances ;).

J’allais oublier les liens qui peuvent servir:
Gitolite sur Github
Gitolite dans la doc Ubuntu
Concernant le problème de dépôts/clefs:
http://serverfault.com/questions/270688/gitolite-clone-not-working-as-intended
http://www.dotkam.com/2010/08/22/gitolite-does-not-appear-to-be-a-git-repository/

Git: Configuration

Les commandes utiles pour configurer Git lors de la première utilisation.

Activation des couleurs dans la console:

git config --global color.diff auto
git config --global color.status auto
git config --global color.branch auto

Configuration du pseudo et du mail:

git config --global user.name "pseudo"
git config --global user.email pseudo@exemple.org

Modification du fichier .gitconfig pour l’ajout d’alias:
vim ~/.gitconfig

[color]
diff = auto
status = auto
branch = auto
[user]
name = pseudo
email = pseudo@exemple.org
[alias]
ci = commit
co = checkout
st = status
br = branch

Pour voir tous les réglages de Git:

git config --list