[Résolu] Mener un projet PHP en équipe (SVN)

:mrgreen:

Bonjour à tous! Vu le titre, ça fait vague je sais :slightly_smiling:

Mais j’aimerais savoir quelle serait la meilleure methode pour aborder un projet PHP en équipe (nous somme 3 développeurs)

J’ai premièrement pensé à SVN pour avoir un projet versionné et logiquement empêchant tout écrasement de nouvelles versions par des versions parallèles de fichiers. Mais après installation et tests, le système semble vraiment lourd de chez lourd. à la moindre update, c’est la procédure de 30 secondes pour tester sur serveur le résultat.

J’ai donc pensé à autre chose: genre partage NFS. Mais le soucis étant que l’ont peut travailler sur des versions parallèles et rencontrer plein de conflits/collisions de versions.

Avec Eclipse, un seul développeur saurait avoir accès au NFS entier du projet donc, c’est mort aussi.

Avez vous une idée ? Parce que je cherche depuis ce matin mais là je sèche…

Merci d’avance à tous :slightly_smiling:

Je ne comprend pas pourquoi tu dis SVN lourd, il ne met à jour que les fichiers modifiés. Le premier export est lourd oui mais après c’est plus rapide.

Tu créé ton projet du fais un checkout de ton dépot, tu modifie un fichier et tu commit tu verras c’est pas si long que ça :wink:

J’utilise eclipse avec le plugins PDT, j’ai un dépot SVN et c’est assez rapide.
Si tu veux héberger un projet tu peux te tourner vers sourceforge mais il doit être open source. Et il utilise SVN ou CVS

:mrgreen:

Bah c’est un projet Web et le but de l’utilisation de SVN ici serait de travailler à plusieurs sur le même workspace. Jusque là tout va bien. Mais le dépôt SVN n’est pas testable en temps réel, il faut, à chaque mise à jour, faire un update sur le serveur (ce qui implique connexion ssh > passage en root > aller à la racine web > svn update URL)

Avec NFS, l’avantage, c’est de bosser sur la source testable directement en temps réel mais le problème, c’est qu’il n’y a qu’une version et c’est tout à moins de sauver en local à côté mais ça fait bidouille et ça devient vite le bordel.

à moins que j’utilise SVN comme un gros manche (chose très probable puisque je découvre :slightly_smiling: )

Le point vraiment lourd c’est l’update sur le serveur à chaque souhait de test. Sinon, c’était une bonne solution :slightly_smiling:

Bah c’est un projet Web et le but de l’utilisation de SVN ici serait de travailler à plusieurs sur le même workspace. Jusque là tout va bien. Mais le dépôt SVN n’est pas testable en temps réel, il faut, à chaque mise à jour, faire un update sur le serveur (ce qui implique connexion ssh > passage en root > aller à la racine web > svn update URL)
[/quote]
Pour une conception, comme tu souhaite le faire il te faut en gros 3 environnements différents.
Un environnement de dev, ou tu met apache ensuite tu fait un checkout de ton projet dans ton répertoire web (/var/www par default) et tu travaille la dessus une fois que tu pense que c’est OK et que tu n’as pas de soucis particulier tu passe sur la seconde machine la machine de test. (là un commit vers ton dépot svn suivi d’un update)

Pour la machine de test, elle à la meme config que la machine de prod et tu regarde le comportement de ton prog si tout est ok tu passe en prod sinon tu corrige et tu retest.

quote="Dos"Avec NFS, l’avantage, c’est de bosser sur la source testable directement en temps réel mais le problème, c’est qu’il n’y a qu’une version et c’est tout à moins de sauver en local à côté mais ça fait bidouille et ça devient vite le bordel.[/quote]C’est pas recommandé, si tu pète ton prog pendant qu’un autre dev modifie quelque chose, vous allez mettre longtemps avant de trouver d’où viens le problème.

quote="Dos"à moins que j’utilise SVN comme un gros manche (chose très probable puisque je découvre :slightly_smiling: )

Le point vraiment lourd c’est l’update sur le serveur à chaque souhait de test. Sinon, c’était une bonne solution :slightly_smiling:[/quote]Tu peux regarder du coté de rsync ça pourrait t’aider.

En gros pour les tests tu ne commit qu’une fois tout est finit et que tu est quasiment sur que ton appli fonctionne. N’oublie pas de mettre ton error_reporting à all et strict dans ton environnement de dev.

Et tu met tout dans un fichier de log pour ton environnement de prod aucun display

:mrgreen:

Salut ash, merci pour les réponses. Le soucis, c’est qu’on ne comptait pas tester tout en local sur nos machines mais tester sur le serveur (de test). Ce que tu préconise par contre serait pour un environnement réseau.

je vais regarder du côté de rsync. Mais je pense qu’il faut le lancer à la main aussi donc, ça ne nous arrangerait pas trop. à moins d’écrire un crontab qui synchronise tout le bourdel toutes les 5 minutes mais bon, ce serait lourd de ne pas savoir si ce qu’on test a bien été updaté sur le serveur.

Ou alors programmer un démon qui ferait ça tout seul comme un grand. je vais étudier un peu le problème.

Merci encore.

Salut,

Si je puis me permettre…
Je pense que Ash a visé juste. Chaque développeur doit tester en local, sur sa machine de dév, les modifications sur lesquelles il a travaillé, lui, et pas les autres. L’idée est de s’assurer que ça marche un minimum (genre pas de parse error, etc) avant de tester sur une machine de test.
Même (et surtout), si c’est un développement à plusieurs. Les tests sur la machine de test sont donc normalement plus rares, en tout cas, ils ne sont pas du tout de même nature : on ne doit plus avoir de parse error, de faute de frappe, d’oubli de fichier inclus, etc. Sur une machine de test, on s’assure que, justement, les modifications que chacun a apportées ne posent pas de problèmes avec celles des autres.
Du coup, s’il faut 30 secondes pour que SVN fasse la mise à jour, c’est pas un problème : t’es pas censé le faire toutes les 2 minutes, mais plutôt genre 1 fois par jour par exemple.

C’était juste mon avis ^^

:mrgreen:

Salut neige :slightly_smiling:

Merci pour ces explications. Tant mieux alors si SVN nous oblige à changer nos habitudes de travail pour travailler mieux :slightly_smiling:

Je vais suggérer ce processus de développement à mes collègues.

Merci encore :slightly_smiling:

Tiens nous au courant du système que tu vas mettre en place. Il y aura peut-être des nuances intéressantes avec celles que j’utilise actuellement.

:mrgreen:

Salut Ash. Ce que j’ai décidé de mettre en place sera un environnement de test sur chaque machine des développeurs (php5 + apache2) avec logs en mode ‘debug’ et error reporting E_ALL | E_STRICT (ce qui était déjà installé sur le serveur Test).

Chacun aura RapidSVN pour les mises à jour ou bien le plugin SVN pour Eclipse afin de mettre leurs revisions à disposition.

Ensuite, on fera un checkout sur le serveur lors de bonnes mises à jour.

Ce que j’ai pensé faire, c’est monter en NFS le répertoire web du serveur sur ma machine afin de lancer le checkout sur ma machine via un script (ce qui me permettra d’éviter de me connecter en ssh et de lancer le checkout à la main)

En gros, c’est ce que vous m’avez suggéré :wink:

C’est un peu tard, toutes mes excuses …

Tu peux ordonner au serveur subversion de créer une copie complète de la dernière version en utilisant un script post_commit.

regarde “implementing repository hooks” ici
http://svnbook.red-bean.com/en/1.4/svn-book.html#svn.reposadmin.create.hooks

Par exemple il est possible de faire un script du type
rm -Rf /srv/mon_projet
svn export snv://mon_projet /srv/mon_projet

export permet d’extraire les fichiers sans les informations de version (sans le .svn), c’est un poil plus lent parce qu’il faut recopier a chaque fois les fichiers mais c’est nickel …

:mrgreen:

[quote=“xavshef”]C’est un peu tard, toutes mes excuses …

Tu peux ordonner au serveur subversion de créer une copie complète de la dernière version en utilisant un script post_commit.

regarde “implementing repository hooks” ici
http://svnbook.red-bean.com/en/1.4/svn-book.html#svn.reposadmin.create.hooks

Par exemple il est possible de faire un script du type
rm -Rf /srv/mon_projet
svn export snv://mon_projet /srv/mon_projet

export permet d’extraire les fichiers sans les informations de version (sans le .svn), c’est un poil plus lent parce qu’il faut recopier a chaque fois les fichiers mais c’est nickel …[/quote]

Merci pour ces précisions. je vais regarder le lien. En fait dès qu’on ferait un commit le serveur subversion réagirait en exécutant le script si j’ai bien compris?

C’est bien ça qu’il me fallait. je vais lire ça de plus près. Merci !