Monthly Archives

2 Articles
Dev, Android et OsX

Dev, Android et OsX

by Throrïn 2 Comments

La semaine dernière, j’ai profité de la sortie d’OSX Maverick pour réinstaller proprement tout mon macbook. Et, venant tout juste de terminer l’installation de l’environnement de développement Android, je me suis dis que j’allais vous partager la bonne méthode pour mettre en place le votre.

Prérequis

  • Avoir une version d’OSX supportant Homebrew.
  • Un mac avec cette version d’OSX (le CD tout seul ou bien la clé ne vous aideront pas).
  • Un mug avec la boisson chaude de votre choix. (Petite préférence pour un thé de Noêl vu le temps).

Homebrew

Qu’est-ce qu’Homebrew? Pour répondre à cette question, je vous laisse lire directement ce qu’ils marquent sur leur site :

Homebrew installe ce dont vous avez besoin et qu’Apple n’a pas installé.

Homebrew va donc nous permettre d’installer tout ce dont nous avons besoin. Il s’agit dun gestionnaire de paquets (en gros), dans le genre d’apt-get sur Ubuntu, permettant d’installer donc facilement certaines librairies, logiciels, … simplement (mongodb, …).

Pour l’installer, rien de plus simple. Il vous suffit de rentrer la ligne suivante dans votre terminal avec un utilisateur disposant des droits d’administration :

ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"

MAJ, installation du SDK, …

Avant de continuer, il est requis de mettre à jour homebrew grâce à la commande suivante :

brew update

Quand la commande est terminée, nous allons installer tout le nécessaire (et même plus) pour le développement Android :

brew install android ant maven gradle

Cette commande va nous installer :

  • Ant
  • Maven
  • Gradle
  • Android SDK

Une fois que tout est terminé, vous aurez juste à lancer android dans votre terminal pour vous retrouver avec le gestionnaire d’installation des versions, extras, …

Un petit coup de GenyMotion ?

Maintenant, nous allons installer VirtualBox et GenyMotion afin de pouvoir tester nos applications directement sur notre mac sans avoir à jouer à Hearthstone le temps que le simulateur de base ne réagisse à notre action.

Bref, pour revenir sur Genymotion, il faut savoir qu’il permet de simuler, via une machine virtuelle, un device Android du type de votre choix (tablette, phablette, smartphone, nexus 4, 5, 7, …). Donc, je vous conseille fortement de l’installer de de travailler avec pour vos développements.

Pensez aussi à prendre l’intégration de Genymotion pour Eclipse ou Android Studio selon l’IDE que vous utilisez.

Et l’IDE ?

Comme je viens de vous le dire, c’est à vous de choisir entre Eclipse, IntelliJ et Android Studio. Je vous conseillerai quand même de prendre Android Studio ou IntelliJ car Eclipse commence à se faire lourd pour rien et dès qu’un projet devient trop important, il se met à planter trop souvent.

De plus Android Studio et IntelliJ gèrent nativement les projets gradle et possèdent même une intégration avec GitHub.

Migrer ses projets SVN vers GIT

Migrer ses projets SVN vers GIT

Nous allons voir aujourd’hui comment migrer un projet SVN existant vers un repository Git existant (GitHub, GitLab ou autre) en gardant toutes les branches et les tags. Cette migration va se dérouler en 6 étapes.

1. Récupérer la liste des utilisateurs

Pour pouvoir migrer convenablement votre projet SVN, nous devons mapper les utilisateurs SVN avec les utilisateurs GIT afin de pouvoir convertir l’historique de commit convenablement. Pour cela, placez vous dans le répertoire racine de votre checkout SVN et lancez la commande suivante :

svn log -q | awk -F '|' '/^r/ {sub("^ ", "", $2); \ 
sub(" $", "", $2); print $2" = "$2" <"$2">"}' | \
sort -u > authors.txt
Le caractère ‘\’ en fin de ligne permet juste de taper la commande sur plusieurs lignes afin d’avoir une meilleure visibilité du code sur le blog.

Attention cependant, les utilisateurs retournés ne correspondent qu’aux utilisateurs SVN. Pas aux utilisateurs GIT. Vous devrez donc remplacer chaque ligne :

jwilkins = jwilkins <jwilkins>

Par ceci :

jwilkins = John Albin Wilkins <johnalbin@example.com>

2. Cloner votre projet SVN avec git-svn

Maintenant, la conversion SVN vers GIT commence. Vous avez juste à lancer la commande suivante :

git svn clone [SVN repo URL] --no-metadata -A authors.txt --stdlayout ~/temp

Cette commande va convertir votre checkout SVN en repository GIT tout en effectuant un mappage des utilisateurs par rapport au fichier authors.txt généré tout à l’heure. Le checkout sera effectué dans le répertoire ~/temp.

3. Push vers un dépôt .git vide

Votre repository GIT est effectué mais il est lié à aucun dépôt. Nous allons donc créer notre dépôt vide comme ceci :

git init --bare ~/new-bare.git
cd ~/new-bare.git
git symbolic-ref HEAD refs/heads/trunk

Maintenant, vous n’avez plus qu’à envoyer votre repository vers le dépôt fraichement créé :

cd ~/temp
git remote add bare ~/new-bare.git
git config remote.bare.push 'refs/remotes/*:refs/heads/*'
git push bare
Maintenant, vous pouvez supprimer ~/temp en toute sécurité.

4. Remplacement de trunk par master

Dans les dépôts subversion, la branche de développement s’appelle trunk. Dans GIT, il s’agit de la branche master. Nous allons donc renommer notre branche trunk en master.

cd ~/new-bare.git
git branch -m trunk master

5. Nettoyage des tags et des branches

git-svn rend le nommage des branches et des tags très courts, de la forme tags/name, alors que GIT utilise des noms plus longs que ça pour s’y retrouver. Nous allons donc lancer une commande pour arranger tout ça.

cd ~/new-bare.git
git for-each-ref --format='%(refname)' refs/heads/tags |
cut -d / -f 4 | 
while read ref
do
    git tag "$ref" "refs/heads/tags/$ref";
    git branch -D "tags/$ref";
done

6. Copie du dépôt vers votre serveur GIT

Dernière étape : L’envoie du dépôt GIT vers votre dépôt GitHub, GitLab ou autres. Cette étape est relativement simple à effectuer. Voyez plutôt :

cd ~/new-bare.git
git remote add origin [GIT repo URL]
git push -f --tags origin refs/heads/*:refs/heads/*

Conclusion

Voilà. Votre repository SVN a été pleinement migré et converti sur GIT. J’ai oublié une étape vue dans mes sources. Il s’agit de renseigner tous les fichiers ignorés de SVN dans le .gitignore. Sauf que la commande en question n’a pas marchée chez moi sur mes différents postes (ubuntu 12.10 et OSX).

Sources :