2015-08-05 1 views
2

Y at-il un moyen d'utiliser git avec base de données Pick D3 depuis le code source et les programmes compilés sont stockés dans D3?
Je pense que la seule option serait de construire des routines pour importer/exporter le code source dans les fichiers en D3, mais cela semble être beaucoup de travail, et aussi facilement contournable avec les éditeurs intégrés dans D3.en utilisant git avec Pick base de données D3

+0

Nous avons automatisé l'importation/exportation de source et vous avez raison, beaucoup de travail et pénible à roll-back etc. Je pense qu'il est temps que cela devienne un projet open source parce que nous détestons le système SCC de Pick-based nous avons. – belwood

Répondre

0

S'il vous plaît indiquer si cette réponse est trop clairsemée, et bien sûr s'il vous plaît accepter si cela répond à la question pour vous. J'utilise GitHub mais je n'ai pas de dépôt Git privé et je n'utilise jamais la ligne de commande. Cependant, j'utilise la technique suivante avec Subversion, et puisque rien de cela n'est spécifique à VCS, cela fonctionnera avec Git, Hg, et n'importe quoi d'autre.

La solution consiste à utiliser le BSIF D3.

  1. Configurez votre système de fichiers hôte pour git, pointant un dossier à une prise en pension, etc.
  2. Copiez la source de programme pour un seul fichier (je vais l'appeler BP) à un autre fichier D3.
  3. Supprimez simplement le fichier de données de votre fichier BP, laissez le dict.
  4. Maintenant, créez un pointeur QS dans Dict BP, appelé BP, dans le dossier hôte.
  5. Vous devriez maintenant être en mesure de LIST BP et d'obtenir aucun élément
  6. Copiez toute la source dans BP. Si vous regardez le système d'exploitation hôte, vous verrez tous les éléments dans le dossier.
  7. Faites votre première validation à partir de la ligne de commande du système d'exploitation, assurez-vous que cela fonctionne.
  8. Créez maintenant un programme BASIC qui enveloppe la ligne de commande du système d'exploitation. Demander des champs requis et l'obtenir à un point où vous avez juste besoin de EXECUTE "!cmd -options ..." CAPTURING OUT afin de faire un commit. Catalogue ce programme en tant que COMMIT ou GIT.COMMIT.

Alors maintenant, vous éditez/compilez/exécutez vos programmes normalement depuis D3. Lorsque vous êtes prêt, exécutez simplement COMMIT, fournissez des commentaires ou d'autres détails, et votre programme traitera les détails au niveau du système d'exploitation. La réponse devrait être affichée et/ou enregistrée. À ce stade, vous pouvez décider de modifier votre code BASIC en dehors de D3, puis d'envoyer une commande COMPILE dans D3 (car l'objet doit être généré dans le VME et stocké dans le Dict).

Vous pouvez également ajouter à votre « bibliothèque » de commandes wrapper git en BASIC pour rollbacks et d'autres fonctions.

Vous voulez un pointeur QS afin que les programmes de base également obtenir enregistrés dans le D3 sauvegarde de fichier et le compte-arrêts. Cela pourrait causer des problèmes si vous avez besoin de restaurer, vous devriez expérimenter avec cela. Si vous sauvegardez le compte et que vous le restaurez ailleurs, vous pourriez avoir des maux de tête car les données de la sauvegarde recouvriront tout ce qui se trouve dans le système d'exploitation hôte. Lors de la configuration du pointeur QS, n'utilisez pas les extensions hôte DOS: ou UNIX: utilisez simplement un chemin comme C:/Dev/Git/RepoD3 ou pour * nix/home/dev/git/repoD3. Si vous utilisez la mauvaise extension d'hôte, vous aurez les mauvais délimiteurs EOL dans vos données. Vous pouvez également ne pas vouloir les onglets convertis en espaces et vice-versa. Expérimentez avec ceci et vous pourriez décider de créer votre propre extension d'hôte qui fait exactement ce que vous voulez. (En dehors de la portée de cette réponse.)

Dans l'étape 8, vous pourriez faire une validation de TCL en utilisant la commande en ligne!. Vous n'avez pas besoin du wrapper BASIC. Cependant, il pourrait y avoir des problèmes avec la sortie du serveur essayant de revenir à travers ce canal, donc je conseille fortement de faire les fonctions du système d'exploitation à partir de BASIC.Vous pouvez utiliser quelque chose comme ceci pour répondre aux multiples invites:

CMD = "!do this " 
CMD := OPTIONS 
CMD<-1> = Response.To.First.Prompt 
CMD<-1> = Second.Response 
EXECUTE CMD CAPTURING OUT 

que rien de manière se raccrocha.

+0

Merci, c'est aussi la même approche que je suis venu avec. Le seul problème que j'ai rencontré à ce jour est que les ID d'élément sont désormais sensibles à la casse. C'est-à-dire que je pouvais auparavant faire: ed fichier myitem de TCL ut maintenant si MYITEM est majuscule puis il est stocké dans le système de fichiers Linux en majuscules donc ma commande TCL ne fonctionnera pas si j'utilise des minuscules. Pas un énorme problème, il suffit de faire attention à la casse. Je pourrais aussi essayer d'utiliser ciopfs pour contourner cela. http://www.brain-dump.org/projects/ciopfs/ – Adam

+0

Il se peut que vous souhaitiez initialiser votre commande d'éditeur (ED? Ugh.) Pour forcer le cas préféré. Ou créez un index afin de sauvegarder le cas préféré quelque part alors que l'ID de l'élément de système d'exploitation est toujours UC ou LC. Ensuite, votre commande d'éditeur trouvera toujours l'élément, peu importe ce que vous entrez à TCL. Je suis sûr que vous pouvez travailler sur ces détails - c'est le genre de prix qui est payé en travaillant sur n'importe quelle plate-forme. Heureux de vous aider. – TonyG

+1

Je pense que la meilleure solution pour le problème de sensibilité à la casse est la suivante: J'ai créé un nouvel élément 'unixs' dans dm, hosts, qui a rs dans attribut 3. puis dans l'élément QS pour le dictionnaire de données du fichier j'ai utilisé unixs:/dossier/chemin – Adam