Utilisateur:Gotty/Extranet/Developpement

L'extranet ne peut voir de nouvelles fonctionnalités arriver qu'avec l'aide de développeurs. Ceux-ci devront maîtriser le PHP et le SQL. Un bon moyen de débuter est de prendre le cours de Daniel Muller ([1]) puis d'essayer de modifier une petite partie de l'extranet simple, comme modifier un texte donné, ajouter un lien à un endroit... : cela permet de se confronter à l'organisation du site et à se familiariser avec PHP.

Gestion du SVN

modifier

Le SVN est le serveur sur lequel sont stockées les sources de l'extranet. Ces sources sont ensuite transférées de temps en temps sur Arges, la machine qui abrite concrètement l'extranet au sein de Centrale : ainsi il est possible de développer ensemble des modifications sans impacter directement le fonctionnement du site. Ce n'est que lorsque toutes les modifications auront été testées que le déploiement pourra avoir lieu.

Vocabulaire

modifier

Généralités

modifier
  • Version locale : ce sont les sources que l'on a sur notre ordinateur personnel.
  • Dépôt : c'est le serveur de partage des sources.
  • Révision : Une version de l'ensemble des fichiers.

Actions

modifier

De nombreuses actions sont possibles pour gérer ses sources. Voici un récapitulatif de celles qui peuvent servir le plus souvent :

Commande Signification
add Déclare l'ajout d'un nouveau fichier pour la prochaine révision. A effectuer dès que l'on ajoute un fichier.
checkout Récupère en local une révision depuis le dépôt. C'est l'opération que l'on effectue en général lorsque notre version locale est corrompue.
cleanup Nettoie la copie locale pour la remettre dans un état stable.
commit Envoi la version locale sur le dépôt, entrainant la création d'une nouvelle révision. C'est ce que l'on fait lorsque notre version locale est a priori stable, et que l'on veut pouvoir la partager avec les autres développeurs.
delete Déclare la suppression d'une ressource existante pour le prochain commit (ou supprime directement une ressource du dépôt)
diff Calcule la différence entre deux révisions (permet de créer un patch à appliquer sur une copie locale)
revert Revient à une révision donnée d'un fichier. Les modifications locales sont écrasées. C'est un checkout pour un petit nombre de fichiers.
update Met à jour la copie locale existante depuis la dernière révision disponible sur le dépôt. A faire lorsqu'un développeur nous a prévenu qu'une nouvelle version était disponible.

Fonctionnement du projet

modifier

Organisation du dépôt

modifier

Le dépôt contient les 3 répertoires suivants : trunk, branches, tags.

Les principaux développements, relatifs à la version instable, se font dans le répertoire trunk. Une fois que l'on pense que notre version est stable, on transfère tout le contenu du trunk dans un tag. Les corrections de bugs éventuels se font alors dans une branche.

NB. : aucun développement ne doit être effectué dans le répertoire tags.

Cette organisation permet de :

  • pouvoir sortir des versions correctives de versions antérieures tout en continuant à travailler sur la version en cours ;
  • avoir un tronc correspondant toujours à la dernière version de l'extranet, la version dite 'unstable' ;
  • avoir une succession de versions dites stables marquées par des tags et des branches contenant leur(s) correctif(s).

Numéros de versions

modifier

Ils ont la forme x.y.z.

  • x est le numéro de version majeure : il est incrementé lorsque de grosses modifications ont été apportées, et qui cassent la compatibilité avec la version majeure précédente x-1, nécessitant donc de grosses modifications dans les projets pour la migration.
  • y est le numéro de version mineure : il est incrémenté quand il y a de nouvelles fonctionnalités, évolutions, corrections de bugs etc. Par contre un projet basé sur une version x.y devrait être compatible avec une version x.y-1.
  • z est le numéro de version de correction : il change quand il y a eu simplement des corrections de bugs par rapport à la version x.y.z-1.

Dans les dépôts, les tags de livraison sont de la forme livraison_EXTRANET_x_y_z, ceux de merge de la forme merged_EXTRANET_x_y_z et les branches de la forme EXTRANET_x_y.