Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
Il y a quelques mois je me suis posé la question sur la façon de travailler avec Subversion et PB et j'en étais arrivé à la conclusion que PushOk me permettrait de répondre avantageusement à mes questions.
Malheureusement, après quelques mois d'utilisation, on en est arrivé à la conclusion que tout n'étais pas aussi rose.
Pour faire simple, on a livré au client une version de l'application avec des régressions. Ceci étant dû à des pertes de modifications. Modifications mal reportées d'une version sur une autre !!!
De 2 choses l'une, soit je ne sais vraiment pas configurer correctement le tryptique PB-PhusOk-SVN (avec client Tortoise SVN) ce qui n'est pas impossible (je suis un boulet ....), soit le bidule est correctement configuré mais son utilisation au quotidien est vraiment hyper dangereuse...
Voici l'environnement de travail et la méthode :
PB 10.2.1 (Build 9858) - PushOk SVN SCC 1.5.0.1 - Tortoise SVN 1.5.6 - SVN server 1.4
Méthode
Au départ, on a un repository avec toutes les PBLs et tous les objets PB générés pour ces PBLs.
Chaque personne effectue un lien entre sa working copy et le repository.
Dès qu'un développeur doit apporter des modifications : il passe par l'explorer, effectue un SVN update, dans PB il fait un check-out, il fait un import à partir du fichier texte (updaté sur sa working copy), il apporte ses modifications, il fait un check-in, dans l'explorer il effectue un SVN commit !
Et tout ça, juste pour pouvoir récupérer d'éventuelles modifications apportées sur le même objet par un autre développer... Car on n'a pas réussi uniquement via les check-out/check-in à récupérer les modifs des autres utilisateurs, car elles sont gérées uniquement par PB dans les PBLs, et que SVN ne gère pas les fichiers bin.
Donc, si vous avez une méthode "pro" pour parvenir à mes fins, je suis plus que preneur.
Sinon, je me verrai dans l'obligation d'abandonner PushOk et de revenir à PBNative pour gérer au mieux les modifs entre développeurs et de n'utiliser SVN qu'à des fins d'historisation de versions (la recherche de modifs est quand même plus simple sur SVN que dans PB).
Merci d'avance à toutes et tous !
Bernard
Hors ligne
Dans mon équipe (20 personnes), nous sommes en train d'utiliser Subversion, nous faisons toutes les étapes que t'as défini [update/check in/lock/ commit(automatiquement le check out)] et nous avons pas ce genre des problèmes.
je te conseille de supprimer d'abord la PBL de ton PC puis fait le update
Hors ligne
Je n'ai pas tout compris dans ton explication.
- Est-ce que tu fais comme je l'ai indiqué la phase d'import de l'objet dans la PBL après avoir fait un Update ?
- Qu'est-ce que tu veux dire par [update/check in/lock/ commit(automatiquement le check out)] ?
- Comment faire pour supprimer toutes les PBLs de mon PC, sachant que PB ne "connait" que les PBLs ?
En plus clair, est-ce que tu peux me détailler ce qui se trouve (objets PB) sur le PC d'un développeur, sur le serveur SVN, et l'ordre des actions qu'un développeur doit faire pour apporter des modifications à des objets PB ?
Et pour terminer, quand tu souhaites générer un exe, si tu n'as plus les PBLs, comment procèdes-tu ?
Merci,
Bernard
Hors ligne
Ah, je suis désolé toto j'ai pas lu cette phrase.
toto a écrit:
Au départ, on a un repository avec toutes les PBLs et tous les objets PB générés pour ces PBLs.
En fait, j'ai cru que tu travaille seulement avec les PBLs. Au début du projet, j'ai essayé de travailler sous SVN avec les objets des PBLs, mais après on a conclu que la manipulation de ces objets sous SVN assez difficile.
Je voudrais dire par la phrase "supprimer d'abord la PBL de ton PC puis fait le update" parce que quand vous avez toutes les PBLs dans le serveur SVN tu peux la supprimer et de faire une update pour récupérer de subversion la bonne version de la PBL.
merci et bon courage
Dernière modification par mattdamon (16-02-2009 17:45:43)
Hors ligne
Bonjour,
J'utilise Powerbuilder 11.2.8565 - PusOK - Tortoise - CVSNT sans aucun problème.
J'essayerai de te faire une réponse complète demain. Effectivement, tu n'utilises absolument pas la bonne démarche.
Tu n'as pas à utiliser tortoise, tu dois simplement effectuer des check-in check-out (PushOk) à partir de Powerbuilder pour mettre à jour ton dépôt sous source contrôle.
Je pense qu'il faut que j'écrive un petit tutorial, ça sera beaucoup plus simple.
Hors ligne
Buck,
je me doute que ma méthode n'est pas la bonne et nous cause bcp de problèmes.
J'attend avec impatience tes explications détaillées !
Merci d'avance,
Bernard
Hors ligne
Bonjour,
J'ai mis en ligne le petit tutoriel : Tutoriel CVSNT/PushOk/Powerbuilder.
Je l'ai fait rapidement, il demande à être amélioré et complété.
Il s'applique à ce que j'utilise (CVSNT), mais le principe doit être exactement le même pour SVN.
Il faut que j'ajoute un chapitre concernant Tortoise. Mais comme, tu le verras le mode de fonctionnement ne nécessite absolument pas tortoise.
Hors ligne
Alors Bernard, tu as réussi à t'en sortir ?
Un petit retour serait le bienvenu, surtout pour buck qui a passé du temps la-dessus...
Hors ligne
Bonjour,
tout d'abord, un grand merci à Buck pour son doc. Rédigé en très peu de temps, ce doc est parfait !
Ça m'as permis de contrôler certains points chez nous.
Sinon, je me suis rendu compte qu'un des problèmes majeurs que nous avons est vraisemblablement lié aux attributs RO des librairies (PBL) et des objets PB.
Sur chacun des postes, jusqu'à présent, toutes les PBL étaient en RO et on avait des problèmes lors de la récupération des modifs effectuées par les autres développeurs. En ayant positionné toutes les PBL en RW, on n'a plus de problèmes... pour le moment.
Car ce que je craint maintenant, c'est quand 2 développeurs travailleront sur le même objet PB et qu'ils feront un check-in, c'est que la gestion des conflits ne se fasse pas et que le dernier à faire le check-in écrase les modifs du premier...
==> Mais nous avons peu de cas où 2 personnes travaillent sur le même objet (13000 objets PB). Donc, comme c'est moi qui distribue le travail, il faudra que je sois vigilant à ce que les tâches de chacun ne se marchent pas dessus.
A moins que quelqu'un ait une idée ?
En tous cas, à mon niveau je peux considérer que ce topic est clos, jusqu'à nouvel ordre.
Hors ligne
Bonjour,
Tout d'abord merci, j'aime bien avoir un retour même s'il est négatif ça permet de se remettre en cause ou de modifier le document de façon adéquate.
Car ce que je craint maintenant, c'est quand 2 développeurs travailleront sur le même objet PB et qu'ils feront un check-in, c'est que la gestion des conflits ne se fasse pas et que le dernier à faire le check-in écrase les modifs du premier...
==> Mais nous avons peu de cas où 2 personnes travaillent sur le même objet (13000 objets PB). Donc, comme c'est moi qui distribue le travail, il faudra que je sois vigilant à ce que les tâches de chacun ne se marchent pas dessus.
L'intérêt d'un gestionnaire est justement de s'affranchir de cette problématique. J'ai ajouté un chapitre 6 au tutoriel : Gestion de la concurrence d'accès.
Il faut travailler en mode "reserved checkout", ainsi un verrou est posé sur le fichier et interdit la modification par un autre utilisateur.
Le poste utilisateur est informé de la modification de l'objet par un autre utilisateur par le changement de l'icone de statut de l'objet (croix rouge) et interdit l'édition. De même, l'utilisateur est informé qu'il ne dispose pas de la dernière version de l'objet par un autre icône de statut (fléche circulaire).
Sinon, je me suis rendu compte qu'un des problèmes majeurs que nous avons est vraisemblablement lié aux attributs RO des librairies (PBL) et des objets PB.
Sur chacun des postes, jusqu'à présent, toutes les PBL étaient en RO et on avait des problèmes lors de la récupération des modifs effectuées par les autres développeurs. En ayant positionné toutes les PBL en RW, on n'a plus de problèmes... pour le moment.
Par expérience, Powerbuilder n'aime pas trop et ça rend l'environnement particulièrement instable. De plus, on est embêté avec les "regenerate" et "full rebuild".
Hors ligne
Bonjour,
je continue ma galère...
Quand je veux modifier un objet PB, je fais un check-in, je fais mes modifs, je fais un commit.
Push-ok réagit en faisant la chose suivante :
- il exporte l'objet au format texte dans le répertoire de ma PBL,
- il met à jour ma PBL (celle sur mon PC),
- il remonte sur le serveur de source l'objet modifié au format texte,
- MAIS il ne remonte pas la PBL sur le serveur de source.
Je ne sais pas si ce dernier point est "normal" au sens Push-ok, mais ce qui se passe ensuite, c'est si je fais un "Get Latest Version" sur ma PBL, je perd les modifs que j'avais effectué précédemment.
Donc, pour éviter ça, après avoir fait mon check-in de l'objet modifié, je fait un COMMIT manuel de ma PBL pour être sûr que la dernière version se trouve bien sur le serveur de sources...
==> Je pense qu'il me manque réellement une logique globale d'utilisation de l'ensemble PushOk-SVN mais avant je n'avais pas de problèmes en n'utilisant simplement que PBNative sans gestion de sources.
Est-ce que quelqu'un pourrait m'indiquer ce qu'il faut "garder" en local (j'ai tous les objets au format texte, les .pbl et les .prp), ce qu'il faut gérer en conf sur le serveur de sources (je pense les même objets qu'en local). Dans PB, faut-il faire un Get Latest Version sur la PBL sur laquelle on souhaite travailler, avant d'apporter des modifs, ou bien il suffit de faire des check-out et lors du check-in, si conflit il y a, il sera signalé ???
Encore une chose : en local, j'ai donc mes PBLs. Dans PB, quand je fais un check-out d'un objet, il me jette. Je suis obligé d'enlever la propriété Read-Only de la PBL avec l'explorateur et là je peux faire mon check-out... Qu'en pensez-vous ?
Et un dernier point : Mattdamon a dit précédemment que je n'avais pas besoin des .pbl sur mon poste. Mais dans ce cas, comment PB va travaillent et quand je devrai générer un nouvel exe, comment vais-je procéder ?
Comme vous le voyez, je suis vraiment largué et découragé, et ce n'est pas faute d'essayer !
Merci à Buck pour sa doc qui m'a aidé à vérifier des points chez moi, mais là, je pense qu'il s'agit plus de la façon de travailler que de paramètrages.
Merci à tous ceux qui pourront m'apporter de l'aide sur ce sujet.
Hors ligne
Bonjour,
La philosophie est très simple. Il faut simplement que tu perdes la notion de PBL sous source contrôle tu travailles à l'objet.
Lorsque, tu veux modifier un objet :
- Tu fais un check-in dessus (OK) => tu as alors une petite coche verte devant l'objet indiquant que tu as pris possession de l'objet (sur les autres postes, il s'actualise au bout d'un certain temps avec une petite croix rouge pour indiquer la modification en cours de l'objet par un autre utilisateur (avec concurrence d'accès correctement configurée).
- Lorsque, tu as finis tes modifications, tu fais un check-out : l'objet est exporté au format texte dans ton répertoire puis il est utilisé pour mettre à jour sur le serveur de sources (sur ton poste, le numéro de version de l'objet est incrémenté (=> library), il y a à nouveau un point vert. sur les autres postes, ils doivent au bout d'un moment s'actualiser avec une petite flèche circulaire devant l'objet pour indiquer qu'il n'ont pas la dernière version (forcer éventuellement avec "refresh status"), ils font alors un "Get Latest Version" pour actualiser leur poste).
Dans PB, faut-il faire un Get Latest Version sur la PBL sur laquelle on souhaite travailler, avant d'apporter des modifs, ou bien il suffit de faire des check-out et lors du check-in, si conflit il y a, il sera signalé ???
Le "Get Latest Version" est seulement nécessaire lorsque tu ne possèdes pas la dernière version de l'objet sur ton poste. Ceci est indiqué par une petite flèche verte circulaire devant l'objet.
Donc, pour éviter ça, après avoir fait mon check-in de l'objet modifié, je fait un COMMIT manuel de ma PBL pour être sûr que la dernière version se trouve bien sur le serveur de sources...
Tu ne fais pas de "commit" manuel de la pbl, car il n'a pas lieu d'avoir la PBL sur le serveur de sources.
=> Oubli la notion de PBL, il n'y a en aucun cas de PBL sur le serveur de sources. Il y a seulement un fichier PBG (et les objets textes de ta PBL) qui porte le nom de la PBL contenant le descriptif des objets de la PBL.
Le fichier PBG est automatiquement mis à jour par Push-OK lorsque tu ajoutes un nouvelle objet de ta PBL sous source contrôle.
Si tu dois configurer un nouveau poste avec le projet consulte le chapitre 7 du tutorial => Récupération d’une copie de travail sur un nouveau poste. ORCA te permet de ré extraire automatiquement tous les objets dans le répertoire local de ton poste et génère automatiquement les PBL à partir des fichiers descriptifs PBG et réimporte les objets dans les PBL.
Est-ce que quelqu'un pourrait m'indiquer ce qu'il faut "garder" en local (j'ai tous les objets au format texte, les .pbl et les .prp), ce qu'il faut gérer en conf sur le serveur de sources (je pense les même objets qu'en local)
Les objets contenus dans ta PBL exportés dans ton répertoire servent uniquement à Push-OK pour actualiser la version de l'objet sur le serveur de sources. Tu peux activer dans les propriétés du workspace (onglet source control) l'option : "Delete Powerbuilder-generated Object files". Ainsi, les objets seront automatiquement supprimés de ton répertoire après la mise à jour sur le serveur de sources.
Encore une chose : en local, j'ai donc mes PBLs. Dans PB, quand je fais un check-out d'un objet, il me jette. Je suis obligé d'enlever la propriété Read-Only de la PBL avec l'explorateur et là je peux faire mon check-out... Qu'en pensez-vous ?
Les PBL sur ton poste local ne doivent pas être en lecture seule.
Et un dernier point : Mattdamon a dit précédemment que je n'avais pas besoin des .pbl sur mon poste. Mais dans ce cas, comment PB va travaillent et quand je devrai générer un nouvel exe, comment vais-je procéder ?
Tu as raisons, les pbl sont nécessaires au fonctionnement de ton application Powerbuilder, elles doivent être présente sur ton poste (mais pas sur le serveur de sources).
Hors ligne
Super !
Encore une fois un grand merci à toi Buck pour ces précieux éclaircissements
Avec ces précisions, je devrai y arriver.
Je reviendrai ici dans quelques jours pour vous faire un retour, après une période de rodage de ma part et de l'équipe, et ce, sans aucun problèmes...
Merci et @ bientôt,
Bernard
Hors ligne
Salut à tous,
Merci pour le tuto Buck, en revanche j'ai un souci avec la partie 7 du tuto lorsque je lance mon script ORCA ça plante :s
Impossible de reconstruire les Pbl du coup il me dit :
Calling cm_rebuild_application(CM_REBUILD_FULL).
Library: c:\test\sourcespb\monapplication\src\monappli.pbl
Object: monappli
Global Variables
(0002): Error C0001: Illegal data type: nvuo_monobjet
Errors encountered during import/compile. Check SMS log.
l'objet en question est un objet non visuel déclaré en tant que global de l'application et qui ne pose aucun souci lorsque l'on compile les pbl avant l'utilisation du source contrôle
Si quelqu'un a une idée je suis preneur
Merci :-)
EDIT : Petite précision, l'objet qui est référencé par le .sra n'est pas dans la même pbl, ni dans le même répertoire car il s'agit d'un ancêtre commun à plusieurs applications.
Dernière modification par Praet (15-10-2009 09:06:20)
Hors ligne
Bonjour,
As-tu vérifié que l'objet en question est bien dans le PBG?
Il est possible que PushOk ne l'ai pas modifié lors du register de l'objet en question.
Hors ligne
Hé bien en fait il n'est pas dans le même pbg mais dans un autre car à l'origine il n'était pas dans la même pbl.
D'ailleurs autre question les pbl sont elles toujours limitées en nombre d'objets ?
Merci
Hors ligne
Bonjour,
De temps en temps (je confirme), j'ai le problème récurrent lorsque j'ajoute un nouvel objet au dépôt la procédure échoue parce qu'il n'a pas pu correctement ajouter l'entrée au PBG.
Dans ce cas, j'édite manuellement le PBG sur le disque pour ajouter l'entrée manquante (implique l'utilisation de Tortoise pour mettre à jour le fichier dans le dépôt CVS).
Je n'ai jamais rencontré de problèmes avec une limitation du nombre d'objets. Mais, je structure mon application avec des pbl thématiques contenant un nombre limité d'objet.
D'ailleurs (de souvenir), il est conseillé dans un document sybase de ne pas dépasser une taille critique pour la pbl sous peine de ralentir notablement la vitesse de l'application.
Hors ligne
Pour la taille des PBL, il est effectivement recommandé de ne pas mettre trop d'objets dedans, car ceci est consommateur de mémoire.
De même, il est important de bien structurer dès le départ son application afin de ne pas avoir à charger en mémoire trop de PBDs
volumineuses.
Hors ligne
Après différents tests mon problème reste le même il ne trouve pas les objets déclarés en global lorsque se sont des classes.
Quand bien même ces objets sont tous dans la même PBL
EDIT : Je suis en train de faire le test en utilisant directement les sources de SVN
En spécifiant
scc connect
au lieu de : (j'avais déjà les dernières versions en local, mais récupéré directement via tortoise)
scc connect offline
A voir
Dernière modification par Praet (15-10-2009 13:42:52)
Hors ligne
La raison d'un échec d'un "full rebuild" après extraction du dépôt est essentiellement due à deux raisons :
- Les fichiers PBG (dans le dépôt) contenant la liste des objets à intégrer dans chaque PBL est incomplet.
- La target n'est pas à jour et ne contient pas la totalité de la liste des pbl du projet
- Réintégration partielle de plusieurs objets inter-dépendant (dépôt non totalement mis à jour).
Une piste est d'ouvrir la target reconstruite par ORCA et de vérifier la liste des objets dans les PBL par rapport au projet original pour détecter l'éventuel PBG qui n'est pas à jour, la raison de l'échec indiquant en général la piste à suivre (ton global objet ne doit pas être réintégré dans une PBL).
Hors ligne
Salut,
Il s'avère que le fait d'avoir supprimer le offline et de s'être connecté au source controle ont suffit à résoudre le problème.
Le full build fonctionne dès lors correctement.
Merci pour votre aide
Dernière modification par Praet (16-10-2009 07:47:35)
Hors ligne
n'oublie pas le [RESOLU]
Hors ligne
buck a écrit:
J'ai mis en ligne le petit tutoriel : Tutoriel CVSNT/PushOk/Powerbuilder.
Je l'ai fait rapidement, il demande à être amélioré et complété.
Merci ! Merci ! Merci Buck !
J'ai passé la moitié de la journée hier à me battre avec orca pour reconstruire une pbl à partir des sources en mode "offline".
Si on ne lance pas orcascrxxx en étant dans le répertoire des sources, cela ne fonctionne tout simplement pas.
Je l'ai compris entre les lignes de la fin de ton tuto après être tombé par hasard sur ce fil... Maintenant je vais pouvoir arrêter de versionner les pbl sur mes différents dépôts publics d'outils PB
Hors ligne