• Non classé
  • 1

Gitignore : Comment ne sauvegarder que les fichiers utiles ?

sauvegarder : git flow

 

Pourquoi sauvegarder vos fichiers à distance ?

Il est utile de sauvegarder votre travail pour garder une trace des différentes versions de son applications, travailler à plusieurs et/ou à distance…

Nombreuses sont les (bonnes) raisons d’utiliser le versionnage pour stocker ailleurs que sur son poste de travail les sources de son projet.

Mais ceux qui ont déjà fait un projet collaboratif savent que lorsque plusieurs personnes travaillent sur les mêmes fichiers, nombreuses sont les occasions où plusieurs personnes modifient le ou les mêmes fichiers.

Apparaissent alors les conflits et il faut souvent corriger les fichiers à la main pour rétablir un dépôt stable, afin que tout le monde puisse continuer de travailler.

Pour limiter les conflits, il est préférable de réduire le nombre de fichier qui sont versionnés, en gardant seulement les fichiers nécessaires.

La question du jour va être de savoir quels fichiers sauvegarder dans nos projets Studio, afin que tout le monde puisse travailler et que les conflits apparaissent le moins possible lorsque quelqu’un pousse une modification/une nouvelle feature.

Quels sont les fichiers utiles ?

Quels fichiers conserver ?

Pour savoir si vous devez ajouter un fichier à votre dépôt ou non, il faut se poser les questions suivantes :

Est-ce un fichier généré à la compilation ?

Dans ce cas le fichier peut-être exclus du dépôt car il est facilement récupérable, il suffit de compiler l’application, et il sera créé automatiquement par Android Studio.

Est-ce un fichier de configuration locale ?

Un fichier de configuration locale, par exemple, le fichier local.properties contient des informations qui sont relatives uniquement au poste de travail que vous utilisez (par exemple le chemin d’installation du SDK).

Cette configuration change d’un poste à l’autre, d’un développeur à l’autre, il faut donc exclure le fichier du dépôt car sinon il sera en conflit à chaque envoi de modification sur le dépot. (La dernière personne à avoir commit, envoyant sa configuration à tous les autres)

Est-ce une librairie que Gradle peux récupérer automatiquement ?

Même principe que pour les fichiers compilés, ici gradle peux récupérer les fichiers de la librairie à la volée. Il n’est donc pas nécessaire de les mettre dans le dépôt.

Est-ce un fichier qui n’appartient pas au projet ?

Certains fichiers sont présents dans le dossier mais n’appartiennent pas au projet, il n’ont donc pas leur place dans le dépôt. Par exemple, certains fichiers sont créés dans le dossier automatiquement par votre système d’exploitation. Ces fichier sont à exclure.

 

Comment gérer proprement son dépôt ?

La plupart des systèmes de versionnage nécessitent que les fichiers soient ajoutés pour être pris en compte dans le dépôt. Certains feront un ajout automatique de tout nouveau fichier dans le dossier racine du projet (et récursivement). Pour parer à cette éventualité, ou pour ignorer d’anciens fichiers stockés par mégarde sur le dépôt, il est possible de les ignorer. Android Studio offre un excellente compatibilité avec le système de versionnage Git, sur lequel nous allons donc nous concentrer dans notre exemple.

Dans son fonctionnement, Git intègre une liste noire des fichiers/dossiers à ne pas sauvegarder, et donc pour lesquels, il ne fera pas non plus de contrôle de fraîcheur sur les envois/récupération de fichiers.

Ce fichier s’appelle .gitignore, il s’agit d’un fichier qui est souvent caché, mais qu’il est facile de modifier, soit à la main, soit dans votre interface graphique (SourceTree, TortoiseGit, GitHub Desktop (spécifique GitHub)).

Ce fichier contient uniquement, ligne par ligne, la liste des dossiers/fichiers à ignorer.

Voici un exemple de fichier .gitignore à placer à la racine d’un projet Android Studio, pour lequel nous avons exclus certains fichiers non pertinents dans le cadre d’un travail collaboratif.


# Dossier de compilation
/*/build/

# Config Crashlitics, depends du poste de travail
com_crashlytics_export_strings.xml

# configuration locale (sdk path, etc)
local.properties

# fichier Gradle générés automatiquement
.gradle/

# Fichiers de signature
.signing/

# fichier de configuration Android Studio, specifiques à un utilisateur
.idea/libraries/
.idea/workspace.xml
.idea/tasks.xml
.idea/.name
.idea/compiler.xml
.idea/copyright/profiles_settings.xml
.idea/encodings.xml
.idea/misc.xml
.idea/modules.xml
.idea/scopes/scope_settings.xml
.idea/vcs.xml
*.iml

# Fichier générés par l'OS
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

Mise à jour des fichiers versionnés

Vous allez constater que même en ayant modifié le fichier .gitignore, il peut arriver que certains fichiers déjà sauvegardés au préalable ne sont pas ignorés par Git lors de vos commit ultérieurs.

La cause est que Git conserve dans un cache la liste des fichiers sur lesquels effectuer ses opérations, afin que les modifications soient prises en compte,
il va être nécessaire de vider ce cache.

La liste de commande ci-dessous va vous permettre de faire en sorte que Git prennent en compte vos changements.

git rm -r --cached .
git add .
git commit -m ".gitignore is now working"

N’hésitez pas à aller faire un tour sur notre Boutique et de partager ce tuto 😀

N’oubliez pas non plus de vous abonner dans le menu juste à votre gauche !

Vous aimerez aussi...

1 réponse

  1. Daycode dit :

    ou bien, générer le .gitignore depuis https://www.gitignore.io/ qui fournit également d’autres fichiers non nécessaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *