jeudi 19 mai 2016

Tuto Git - Commiter calmement

Vous l'aurez compris Git est loin d'être intuitif pour ceux qui auraient l'habitude d'un autre outil de gestion de configuration c'est un peu... la panique. Pourtant on est toujours dans une logique Checkout / Commit.

Mais nous allons nous en sortir, la meilleure page de doc est la suivante à lire rapidement est :

Git.scm - 2.2 Les bases de Git - Enregistrer des modifications dans le dépôt

Notez le diagramme des états du fichier en gestion de configuration avec Git :

Git - Etats du fichier en gestion de configuration

Création de la "localisation" dans les fichiers ressources du projet

Je vais m'intéresser à la création de la "localisation" de mon application. Je souhaite que mon application parle plusieurs langues. Je vais donc créer automatiquement des fichiers de ressources.

Avec Visual Studio, je me positionne dans la partie Design du formulaire que je souhaite "localiser", ici il s'agit du formulaire de Login des utilisateurs qui se trouve dans le répertoire Member. Et je clique sur le menu Outil->Créer automatiquement des fichiers de ressources. Voilà le travail est fait, le fichier :
/Member/App_LocalResources/Login.aspx.resx est créé.

Je créé la langue "en" (English) en dupliquant le fichier Login.aspx.resx et en le renommant en Login.aspx.en.resx puis je traduis les labels.

Voilà, c'est terminé !

Vous pouvez retrouver ce travail sur le site GitHub du projet : ASP-NET-Survey-Online

Commiter ce travail de "localisation"

Je cherche maintenant à commiter ce travail dans mon GitHub. On me dit que la meilleur commande pour savoir ce qu'il se passe, c'est de vérifier l'état des fichiers par :

$git status

Command Git Status
Si je compare avec ce que j'obtiens dans Git UI :

Git UI
Pas de doutes, c'est sensiblement la même chose. Et maintenant comment commiter ?

Ignorer certains fichiers

C'est indispensable pour une bonne gestion du votre projet. En effet "mettre sous surveillance" des fichiers inutile peut être néfaste...

Posez, à la racine du répertoire un fichier .gitignore avec au moins une ligne (Visual Studio)  :
*.suo

Pour ignorer les fichiers de Visual Studio, whaou mais .gitignore n'est pas un nom de fichier ! ... ma ma ma poua grrrrr ! Donc la seule façon de créer un fichier .gitignore, c'est avec la console Git Bash et la commande :

$ echo "*.suo" > .girignore

Et oui, pensons Linux !

Checkout master

Voici, ici expliquée la philosophie du truc. Dans le Tuto Git précédent on est coincé, on va donc chercher à "Brancher" à "Merger" pour se retrouver sur la branche master. Car une branche HEAD à été crée pour réaliser cette nouvelle fonctionnalité et l'on en a plus besoin.

https://git-scm.com/book/fr/v1/Les-branches-avec-Git-Brancher-et-fusionner%C2%A0%3A-les-bases

On ouvre "Visualize All Branch history" de Git UI menu "Repository" et l'on obtient "après opération", le résultat suivant :

gitk
J'ai donc checkouté la branche master. Je veux essayer de Merger Head avec master. Je retourne dans Git UI. Je Merge->Local Merge... Et je peux alors pusher sur le serveur.

Je pushe pour mettre mon travail sur le serveur :

Git me laisse Pusher ma branche mergée
Je vérifie et ça fonctionne, j'ai bien la Localization dans mon GitHub :

Résultat du Push je retrouve mon travail sur le serveur GitHub
C'est un peu empirique mais bon ...

Pour aller plus loin je vous propose une vidéo :

https://www.grafikart.fr/formations/git/fork-pull-request
Ca part d'un peu trop loin, en plus il mélange GitHub et Bitbucket mais c'est intéressant sur les notions de Fork et de PullRequest.

Comprendre la philo de Git

C'est une différence essentielle entre Git et TFS avec TFs vous travailler sur la branche principale, le tronc. Vos modifications sont en différence par rapport au tronc et c'est elles qui constituent le "commit" ou le "checkin".

Avec Git, dès que vous avez une modification à faire, vous devez créer une branche et c'est la branche que vous commitez. Sans branche point de commit !

Have fun !

Tuto Git - Pourquoi on ne peut pas Pusher ?

C'est délicat, vous avez fait un peu de travail dans GitHub par exemple vous avez complété le fichier README.md directement dans l'interface Web et donc :

Tuto Git - pourquoi je ne peux plus pusher ?
Bon ce n'est pas grave vous checktoutez : Branch->Checkout. Puis vous faites un peu de travail en local et vous tentez de pusher et là :
Tuto Git - pourquoi je ne peux plus pusher ?
Ah, ce n'est tout à fait le même message... On va peut être finir par y arriver.

Tuto Git
Clique sur le bouton "Commit" :

Git - Commit potentially dangerous
En effet c'est dangereux si vous procédez, les fichiers de votre copie locale seront vu comme étant archivés alors qu'ils ne le sont pas.

On se retrouve dans une situation où l'on ne peut pas "pusher" mais on peut "commiter" ! 

What the fuck !

mardi 17 mai 2016

Tuto Git - Comment créer un fichier sur GitHub et le conserver dans Git UI

Vous venez d'effacer le fichier README.md, et bien oui Git a tout effacé. En effet lors de votre dernier commit vous en aviez marre de voir le message "Impossible de commit" bla bla bla... en fait vous aviez créé un fichier sur GitHub et vous ne l'aviez pas rapatrié sur votre disque dur.

Et oui, GitHub va vous harceler afin de créer un fichier README.md et c'est bien normal car c'est le fichier de présentation de votre solution dans GitHub. Vous cliquez donc "Create README.md" et lors du prochain Commit ce fichier sera effacé.

GiHub Création du fichier README.md

Retrouver le fichier README.md sur votre Disque Dur

Vous me direz c'est super simple il suffit de faire un Get Lateste Version sur le fichier README.md dans Git cela donne ceci :

Merge Into master
Et vous retrouvez votre fichier, créé avec GitHub sur votre disque dur :



Have fun !