Wie soll Code in der Versionskontrolle gespeichert werden?

19

Wie soll Code in der Versionskontrolle gespeichert werden?

Entwicklerfreundlich ? Damit der Programmierer schnell die neuesten und in der Lage, ohne viele Änderungen von seinem Editor ausführen zu können? (wie Konfigurationsdateien, die auf dev DB..etc zeigen)

oder

Sollte es produktionsfreundlich sein ? source sollte so gestaltet sein, dass die Bereitstellung in der Produktionsumgebung einfach ist, und wenn der Entwickler die neueste Version verwendet, sollte er Änderungen gemäß seinen Entwicklungsanforderungen vornehmen.

Pavan GR
quelle

Antworten:

56

Warum wählen ? Es sollte beides sein.

Ihre Entwicklungsumgebung sollte so konfiguriert sein, dass es so einfach ist wie das Auschecken, Öffnen, Erstellen, Ausführen und Debuggen (z. B. kein absoluter Pfad!). Sie können dies problemlos mit Kompilierungsanweisungen, Einfügung von Konfigurationsklassen und Abhängigkeiten oder Tricks wie der Datei perso.config in ASP.NET tun

Ihr automatisiertes Erstellungsskript sollte so angepasst werden, dass es die spezifische Produktionskonfiguration, Bereinigung, Verpackung usw. übernimmt.


quelle
Was ist perso.config? Ein schneller google hat mir nicht geholfen.
Tim Murphy
1
In der .NET-Anwendungskonfigurationsdatei können Sie auf eine andere Anwendungskonfigurationsdatei verweisen, die beim Auffinden die angegebenen Einstellungen überschreibt. Sie können also eine dev.config-Datei erstellen, die Dinge wie Verbindungszeichenfolgen und andere Dinge außer Kraft setzt und von Repos ausschließt.
5
+1 - Entwickler sollten nicht daran denken , die richtige Quelle zu finden. Auch die Bereitstellung in der Produktion sollte nicht direkt über die Quellcodeverwaltung erfolgen, sondern mit ordnungsgemäß erstellten, getesteten und verfolgbaren Komponenten. Dieser Prozess sollte vollständig automatisiert sein.
9

Wenn es sich um ein Open-Source-Projekt handelt, bei dem von den Leuten erwartet wird, dass sie einen Beitrag leisten, würde ich mich auf jeden Fall für entwicklerfreundlich entscheiden.

Meine größte Abneigung gegen Open Source-Projekte ist, dass das Repository nur sehr selten alle Abhängigkeiten enthält, die zum Erstellen des Codes erforderlich sind (manchmal aus praktischen oder rechtlichen Gründen) Sie benötigen, oder was noch wichtiger ist, welche Version von ihnen Sie benötigen. (und am besten, woher sie kommen)

Manchmal verbringen Sie mehr als einen halben Tag damit, mehrere andere Projekte abzurufen und zu kompilieren, um das gewünschte Projekt zu erstellen.

Dies ist natürlich nur für die Entwicklung unter Windows relevant.

Mark H
quelle
1
Es nervt mich zum Teufel. Sie finden es sogar auf sehr bekannten OSS.
Tim Murphy
1
Es gibt Systeme, die dieses Problem beheben, indem Abhängigkeiten automatisch abgerufen werden. ZB Apache Maven, Ivy oder Scons.
sleske
4

Beides, aber es kommt darauf an, wie oft Sie produzieren. Für viele angepasste Anwendungen werden Bereitstellungen manuell und lokal durchgeführt. Andererseits schreibt der Entwickler ständig Code fest, egal wie klein oder groß das Projekt ist. Meiner Meinung nach ist es wichtiger, sicherzustellen, dass der Entwickler die Versionskontrolle korrekt verwenden kann, damit er Zeit hat, sich auf den Code zu konzentrieren, anstatt den Weg durch die Versionskontrolle zu finden.

tia
quelle
Produktionsbereitstellungen sollten kein Problem darstellen, wenn Sie eine kontinuierliche Bereitstellungsengine zum Erstellen verwenden.
1

Es sollte produktionsfreundlich sein, da es sonst problematisch ist, automatisierte Builds zu unterhalten.

scharfer Zahn
quelle
8
Warum? Ein automatisiertes Erstellungsskript kann alle erforderlichen Übersetzungen vornehmen, um die Quelle in eine bereitstellbare Form umzustrukturieren. Belästigen Sie niemals Menschen mit etwas, das Automatisierung lösen kann.
Joeri Sebrechts
1

Ich bin alles dafür, die Reibung zu verringern, damit es einfacher ist, die Arbeit zu erledigen, aber Sie müssen auch die Fehlermodi berücksichtigen.

Wenn die Quell-Repository-Version immer für die Verwendung in der Produktion konfiguriert ist, was ist das Ergebnis, wenn ein Entwickler vor dem Ausführen des Systems keine Neukonfiguration durchführt? Ein Entwickler, der Code für die Produktion ausführt.

Unabhängig davon, ob der Entwickler zufällige Änderungen an der Produktion vornimmt oder nicht, erscheint es gefährlich, in einem Fehlermodus zu arbeiten, der dazu anregt, dass dies geschieht.

Ich schlage vor, dass die im festgeschriebenen Code enthaltenen Standardwerte immer sicher sein sollten . Überprüfen Sie die Produktionskonfigurationsdateien auch in der Quellcodeverwaltung, wenn Sie möchten - das tue ich fast immer -, aber bewahren Sie sie an einem Ort auf, an dem Sie nicht leben.

Bevan
quelle
0

Ich tendiere dazu, produktionsfreundlich zu sein. Es hält Ihre Builds sauber und verhindert, dass überflüssige Einstellungen in die Produktion gelangen.

Mike Clark
quelle
0

Definitiv entwicklerfreundlich, mit Skripten zur Automatisierung von Änderungen für QS und Produktion.

William Payne
quelle
-1

Warum nicht eine Verzweigung (abhängig davon, welche Versionskontrolle Sie verwenden - ich verwende Git) für den bereitstellbaren Code und eine andere für die Entwicklerversion? Das klingt viel besser und ist nicht so schwer einzurichten.

Sie können Ihre Änderungen bearbeiten und festschreiben und sie dann in der bereitstellbaren Version zusammenführen.

Ricardo Souza
quelle
Denn langlebige Filialen sind teuer in der Verwaltung und sind in der Regel schwer zu verschmelzen. Sie müssen daran denken, alle Änderungen in beiden Zweigen vorzunehmen. Es ist viel besser, beide Versionen gleich zu machen und / oder ein Skript zu haben, um das implementierbare Artifcat aus dem Entwickler-Ready-Code zu generieren.
BDSL