Meine SW-Gruppe versucht, unser Quellcodeverwaltungssystem von Visual Source Safe, das nicht mehr von Microsoft unterstützt wird, zu Subversion zu aktualisieren (weil unsere Schwestersite es bereits verwendet). Wir haben viel geteilten Code, der in VSS direkt mit internen Links gemacht werden kann. Diese müssen in freigegebene Ordner für mehrere zu verwendende Projekte verschoben werden. Obwohl externe Quellen verwendet werden können, um diese einzubringen, sind sie etwas riskant und nicht natürlich in die SVN-Architektur integriert (obwohl wir sie immer noch für Code von Drittanbietern und andere Dinge verwenden, die sich nicht ändern). Wie auch immer, wir haben eine Lösung gefunden, die ich nirgendwo anders gesehen habe, aber wir denken alle macht Sinn, also wollte ich sehen, was andere denken und ob es Fallstricke gibt (habe es noch nicht wirklich versucht).Subversion - Freigeben gemeinsamer Ordner ohne externe Elemente
So rufe ich diese "Shared Internal" Ordner, um mit externen zu kontrastieren. Angenommen, ich habe in meinem Repository-Stammverzeichnis ein Verzeichnis namens Common_Code, das generische Bibliotheksdateien für eine bestimmte Sprache enthält (in diesem Fall C++). Jetzt erstelle ich MyProject mit trunk/branches/tags und möchte den freigegebenen Ordner in ein Unterverzeichnis meines Projekts stellen. Also erstelle ich einen normalen Subversion-Zweig, der von Common_Code zu MyProject/trunk/Common_Code verzweigt. So arbeiten verschiedene Teammitglieder an MyProject, indem sie den Stamm abzweigen. Bobs Zweig könnte so aussehen: MyProject/branches/Bob_Working und der Unterordner würden zu MyProject/branches/Bob_Working/Common_Code verzweigen. Dies ist effektiv ein Zweig des Zweigs des freigegebenen Ordners.
Wenn Bob fertig ist, geht er zurück zum Kofferraum. Dies wird fortgesetzt, ohne andere Projekte zu beeinträchtigen, die möglicherweise auch einen "internen Zweig" aus dem freigegebenen Stammordner erstellt haben. Wir veröffentlichen schließlich unser Produkt, stellen jedoch fest, dass wir generische Änderungen an Common_Code vorgenommen haben, von denen andere Projekte profitieren würden. Nach einer Gruppenüberprüfung stimmen wir zu, die Version von Common_Code des Projekts wieder mit der Root-Version zu verbinden, von der die ursprüngliche Version stammt. Dies entkoppelt die Notwendigkeit, freigegebenen Code für eine Veröffentlichung zu aktualisieren, und die Notwendigkeit, die Änderungen mit dem Rest der Firma zu teilen.
Dies scheint eine einfache, aber flexible Möglichkeit, Code nativ zu teilen. Ich sehe zwei mögliche Einschränkungen. Erstens wird es nicht über Repositories hinweg funktionieren, in diesem Fall müssen externe Daten verwendet werden. Zweitens, Sie können den ersten Zweig nach der Zusammenführung nicht löschen, daher glaube ich nicht, dass -integrate verwendet würde. Ich bin mir immer noch nicht sicher, ob ein normales Zusammenführen akzeptabel wäre oder ob unser Tortoise-Client dies unterstützt.
Erfinden Sie das Rad nicht neu !!! SVN Externals sind ** The Natural Way (TM) ** des Teilens von Code und ** SIE SIND NATÜRLICH IN SVN-ARCHITEKTUR INTEGRIERT **. Mit Ihrem "Workflow" werden Sie viele Kopfschmerzen haben, wenn Sie die Änderungen von der Kopie der Kopie in den ursprünglichen Speicherort zurückführen, sicher. Lesen Sie mehr über PEG-Revisionen in externen (und vergessen Sie nicht über PEG-ed) und externen gemeinsam –
Ist die fast unvermeidliche Divergenz der geteilten Interna in diesem Schema, bis sie nicht mehr in Wahrheit von Projekt zu Projekt "geteilt" werden , etwas, das du vermeiden willst? Oder bist du damit einverstanden? – Ben
Unsere Schwesterseite verwendet verlinkte Externe (pegged ist der Weg, ja zu gehen). Aber sie haben eine sehr komplexe Methode, um Updates zu machen. Um Änderungen vornehmen zu können, müssen sie den gemeinsamen Zweig verzweigen und auf die externe Revision des Zweiges zeigen. Wenn Sie fertig sind, führen Sie den Zweig in den gemeinsamen Stamm zusammen und binden Sie den externen an die neue Stammversion. Scheint wie eine kompliziertere Version des oben beschriebenen gleichen. Wir erlauben immer noch, dass Projekte einen externen Verweis auf den gemeinsamen Code verwenden, wenn sie nicht beabsichtigen, Änderungen daran vorzunehmen. Aber wenn sie es tun, scheint diese Methode einfacher zu sein. –