Frage

Ein Problem, das bei Pinax Entwicklung kommt mit Entwicklungsversionen von externen Anwendungen beschäftigen. Ich versuche, eine Lösung zu entwickeln, die nicht in den Versionskontrollsystemen bringt mit sich bringt. Der Grund, der ich lieber nicht alle möglichen Versionskontrollsysteme auf meinem System installiert haben (oder erzwingen, dass bei Mitwirkenden) und die Probleme zu behandeln, die während der Umwelt Schöpfung entstehen könnten.

Nehmen Sie diese Situation (zu wissen, wie Pinax arbeitet, wird zum Verständnis von Vorteil sein):

Wir beginnen Entwicklung an einer neuen Version von Pinax. Die vorherige Version hat eine pip Anforderung Datei mit expliziten Versionen eingestellt. Ein Fehler kommt für eine externe Anwendung, die wir gelöst bekommen möchten. dass Bug-Fix in Pinax Um den aktuellen Prozess eine geringe Freisetzung des App einfach zu machen, ist unter der Annahme, wir die Kontrolle über die App haben. Apps haben wir keine Kontrolle übernehmen wir mit dem Release-Zyklus des App Autors beschäftigen nur oder sie zwingen, Releases zu machen ;-) Ich bin nicht allzu gern ständig kleinere Releases für Fehlerkorrekturen, wie in einigen Fällen macht Ich mag würde sein so gut funktioniert für Anwendungen auf neue Funktionen. Natürlich ist die ältere Version Verzweigung, was wir tun und dann updates tun, wie wir brauchen.

Ich würde gerne ein paar Gedanken auf das hören.

War es hilfreich?

Lösung 2

Ich meinte zu erwähnen, dass die Lösung, die ich in Betracht gezogen hatte, bevor sie eine Pinax PyPI Aufmachungen war zu fragen und Entwicklung Mitteilungen zu machen. Wir könnten eine Instanz chishop setzen. Wir sind bereits Pip --find-Links verwendet für Pakete an pypi.pinaxproject.com verweisen wir uns gehabt haben zu veröffentlichen.

Andere Tipps

Könnten Sie dies mit der „== dev“ Version Spezifizierer umgehen? Wenn die Seite, die Verteilung auf PyPI einen Link zu einer .tgz der aktuellen Entwickler-Version (wie beide Github und automatisch bitbucket liefern) enthält und Sie anhängen „# Ei = project_name-dev“ auf den Link, beide easy_install und Pip wird verwenden, dass TGZ wenn == dev angefordert wird.

Dies ermöglicht es Ihnen nicht zu etwas spezifischer als „jüngste Spitze / Kopf“, aber in vielen Fällen Stift, der gut genug sein könnte?

Die meisten Open-Source-Distributoren (die Debians, Ubuntu, MacPorts, et al) verwenden irgendeine Art von Patch-Management-Mechanismus. So etwas wie: Importieren Sie den Basis-Quellcode für jedes Paket als freigegeben, als Tarball oder als SCM-Snapshot. Dann verwalten alle notwendigen Änderungen an der Spitze davon einen Patch-Manager, wie Quilt oder Mercurial Queues . bündeln dann jede Umverpackung mit irgendwelchen angewendet Patches in einem einheitlichen Format auf. Oder haben URLs zu den Basispaketen und URLs zu den einzelnen Patches und haben sie während der Installation angewendet. Das ist im Wesentlichen, was MacPorts der Fall ist.

EDIT: Um es noch einen Schritt weiter, könnten Sie dann steuern Version des Satzes von Patches über alle externen Pakete und machen , die als eine Einheit zur Verfügung. Das ist ganz einfach, mit Mercurial Queues zu tun. Dann haben Sie das Problem vereinfachen nur die Veröffentlichung eine Reihe von Patches ein SCM-System, mit dem Patches lokal wie oben oder für Entwickler angewandt zu ziehen und ihre Kopien der Basis Release-Pakete gelten.

EDIT: Ich bin nicht sicher, ob ich Ihre Frage richtig lese, so dass die folgenden nicht direkt Ihre Frage beantworten kann

.

Etwas, das ich habe in Betracht gezogen, aber noch nicht getestet wird Pip freeze Bündel-Funktion. Vielleicht mit, dass und zu verteilen das Bündel mit Pinax funktionieren würde? Meine einzige Sorge wäre, wie andere Betriebssysteme behandelt werden. Zum Beispiel habe ich nie verwendet pip auf Windows, so würde ich nicht wissen, wie ein Bündel würde es in Wechselwirkung treten.

Die vollständige Idee, die ich zu versuchen, Hoffnung ist einen Fertiger Skript erstellen, die Verwaltung des Bündels steuert, so dass es für die Benutzer einfach auf neuere Versionen zu aktualisieren. Dies würde allerdings ein wenig von Gerüsten erforderlich.

Eine andere Option kann man einen Spiegel der Anwendungen halten Sie kontrollieren nicht, in einem konsistenten VCS, und dann gespiegelte Versionen zu verteilen. Dies würde die Notwendigkeit für „Jedermann“ wegzunehmen viele verschiedene Programme installiert sein.

Anders als das, so scheint es die einzige wirkliche Lösung ist, was ihr tut, gibt es nicht einen stressfreien Art und Weise, die ich habe in der Lage zu finden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top