Question

Une question qui se pose au cours du développement Pinax traite des versions de développement d'applications externes. Je suis en train de trouver une solution qui n'implique pas apporter dans les systèmes de contrôle de version. Raison d'être faudrait que je préfère ne pas installer tous les systèmes de contrôle de version possible sur mon système (ou la force que sur les contributeurs) et de traiter les problèmes qui pourraient se poser lors de la création de l'environnement.

Prenez cette situation (savoir comment fonctionne Pinax sera bénéfique à la compréhension):

Nous commençons le développement d'une nouvelle version de Pinax. La version précédente a un pépin fichier d'exigences avec les versions explicites définies. Un bug vient pour une application externe que nous aimerions se résoudre. Pour obtenir ce correctif bogue dans Pinax le processus en cours est de faire simplement une version mineure de l'application en supposant que nous avons le contrôle de l'application. Apps, nous ne contrôlons que nous venons de traiter avec le cycle de libération de l'auteur de l'application ou les forcer à faire des communiqués ;-) Je ne suis pas trop friands de faire constamment versions mineures pour les corrections de bugs que dans certains cas, je voudrais être travailler sur de nouvelles fonctionnalités pour les applications aussi bien. De ramification Bien sûr, la version plus ancienne est ce que nous faisons et faisons backports que nous avons besoin.

J'aimerais entendre quelques réflexions à ce sujet.

Était-ce utile?

La solution 2

Je voulais dire que la solution que j'avais envisagé avant de demander était de mettre en place un Pinax PyPI et faire des communiqués de développement là-dessus. Nous pourrions mettre en place une instance de chishop. Nous utilisons déjà --find-liens de pépin pour pointer sur pypi.pinaxproject.com pour les paquets que nous avons dû nous libérer.

Autres conseils

Pouvez-vous gérer cela en utilisant le spécificateur version « == dev »? Si la page de distribution PyPI comprend un lien vers un .tgz de la version actuelle de dev (tels que les deux github et bitbucket fournir automatiquement) et vous ajoutez « # oeuf = project_name-dev » le lien, à la fois easy_install et pip utiliseront ce .tgz si == dev est demandé.

Cela ne vous permet pas d'épingler à quoi que ce soit plus spécifique que « pointe la plus / tête récente », mais dans beaucoup de cas qui pourraient être assez bon?

utiliser une sorte de mécanisme de gestion des correctifs La plupart des distributeurs open source (les debians, Ubuntu, LA MacPorts, et al). Donc, quelque chose comme: importer le code source de base pour chaque paquet comme libéré, comme une boule de goudron, ou comme un instantané SMC. Ensuite, gérer les modifications nécessaires sur le dessus de celui-ci en utilisant un gestionnaire de patch, comme couette ou les Queues de Mercurial . bundle ensuite chaque emballage externe avec tous les correctifs appliqués dans un format cohérent. Ou des URL pour les packages de base et les URL des patches individuels et les ont appliquées lors de l'installation. C'est essentiellement ce que MacPorts fait.

EDIT: Pour prendre un peu plus loin, vous pouvez alors contrôler la version de l'ensemble des correctifs sur l'ensemble des paquets externes et faire que disponible en unité. C'est assez facile à faire avec Mercurial Queues. Ensuite, vous avez simplifié le problème à publier juste un ensemble de patchs à l'aide d'un système SCM, avec les patchs appliqués localement comme ci-dessus ou disponible pour les développeurs à tirer et appliquer à leurs copies des paquets de libération de base.

EDIT: Je ne suis pas sûr que je lis votre question de sorte que le suivant ne peut pas répondre directement à votre question

.

Quelque chose que j'ai pris en compte, mais n'ont pas testé, utilise la fonction de faisceau de gel de pépin. Peut-être à l'aide et la distribution du paquet avec Pinax fonctionnerait? Mon seul souci serait différent de la façon dont sont gérées OS. Par exemple, je ne l'ai jamais utilisé pip sur Windows, donc je ne sais pas comment un paquet aurait-il interagir.

L'idée complète J'espère que d'essayer est la création d'un script qui contrôle la gestion paver des faisceaux, ce qui rend facile pour les utilisateurs de passer à une version plus récente. Cela nécessiterait un peu d'échafaudage bien.

Une autre option peut être vous tenir un miroir des applications que vous ne contrôlez pas, dans un VCS cohérente, puis la distribution de vos versions en miroir. Cela ôterait la nécessité de « tout le monde » d'avoir de nombreux programmes différents installés.

En dehors de cela, il semble que la seule solution est ce que les gars que vous faites, il n'y a pas une façon sans tracas que je suis en mesure de trouver.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top