2009-04-16 9 views
4

Meine Firma hat zwei oder drei Web-Apps, die viel gemeinsamen Code verwenden - ein benutzerdefiniertes MVC-Framework, Dienstprogrammklassen, JavaScript-Bibliotheken und so weiter.Mehrere Apps mit gemeinsamem Code - wie geht man damit um?

Wir würden es vorziehen, nicht alle diesen Code in jeder App zu duplizieren, weil wir am Ende einige leicht unterschiedliche Versionen davon verwenden. Wir möchten jedoch nicht, dass die Apps genau die gleiche Kopie dieses Codes benötigen, da wir nicht möchten, dass ein Update für eine App einen anderen Code beschädigt.

Hat jemand irgendwelche Tipps zum Umgang mit diesem Problem? Ich glaube nicht, dass ich nach einer technischen Antwort suche - eher nach einem allgemeinen Ansatz.

Wir könnten den Code in eine Bibliothek umwandeln und Apps erlauben, auf einer älteren Version der Bibliothek zu bleiben, bis sie für ein Upgrade bereit sind. Oder wir könnten es in mehrere Bibliotheken schaffen, so dass wir nicht alles auf einmal upgraden müssen. Aber wäre es schwierig, die Abhängigkeiten zwischen den Versionen der Bibliotheken zu verwalten?

Antwort

5

Ich benutze SVN mit svn: externals. Dinge, die stabil sein sollen, sollten sich im Tag-Ordner befinden, damit abhängige Projekte nicht durch andere Entwicklungen im Stamm beeinflusst werden.

+1

+1 bis svn: externals. Sie sind bei weitem der effizienteste Weg, dies zu tun, und einfach. –

+1

Ich fand ein tolles Tutorial dazu für TortoiseSVN: http://justaddwater.dk/2007/10/23/setting-up-subversion-externals-with-tortoisesvn/ –

0

Es hängt von vielen, vielen Faktoren ab - verschiedene Sprachen haben unterschiedliche Verhaltensweisen in Bezug auf Bibliotheken. Die Art und Weise, wie ich das im Allgemeinen handhabe, ist, dass jede App eine Reihe von Tests auf ihre externen Abhängigkeiten hat, einschließlich der Bibliotheken, die ich geschrieben habe, und um zu verhindern, dass Upgrades auf diese Bibliotheken die App kaputt machen.

Gibt es weitere Details zu Ihrer Plattform? Möglicherweise gibt es spezielle Tools, die Ihnen bei Ihren speziellen Anforderungen helfen.

+0

Wir verwenden PHP mit CVS (obwohl wir vielleicht wechseln zu SVN). Aber ich frage mich eher nach dem Ansatz zur Verwaltung des Codes als nach den spezifischen Tools. Guter Punkt über Komponententests. –

0

Ich zweite das SVN mit svn: externals. Wir haben einen Client und einen Server, die etwas Code teilen. Der Code wird unter dem Server verwaltet (kann aber in einen eigenen Repo verschoben werden) und der Client zieht ihn mit svn: externals ein. Die Client-Leitung wird vom Serverstamm abgezogen. Aber wenn wir verzweigen (sagen wir für die Veröffentlichung), dann peggen wir das eingezogene externe an einer bestimmten rev, einem bestimmten Zweig oder einer bestimmten Marke. Wenn Sie das nicht tun und Sie zu einem alten Zweig zurückkehren und aktualisieren, erhalten Sie möglicherweise den Stamm des geteilten Codes, der höchstwahrscheinlich nicht das ist, was Sie wollen.

0

Ich würde einen Quellcode-Kontrollzweig für den gemeinsamen Code erstellen, der die neueste und beste Version darstellt.

Dann für jedes Projekt haben Sie Ihre eigene unabhängige Zweigstelle des Codes, wo Sie schnelle Korrekturen vornehmen können, wo erforderlich oder Stabilität haben, wenn Sie in der Nähe eines Release sind.

Sie möchten vielleicht ein Wiki haben, in dem Fehler im gemeinsamen Code aufgelistet sind, damit die anderen Benutzer des freigegebenen Codes davon Kenntnis haben und Zeit haben, es in Ruhe zu beheben.

Git würde dafür gut funktionieren, da es gut darin ist, Änderungen in den 'Master'-Zweig zurückzuführen.

Verwandte Themen