Ich habe vor einem Jahr mein Informatik-Studium abgeschlossen und arbeite jetzt bei einer kleinen Webentwicklungsfirma (ich und ein anderer Entwickler, plus Manager, Kundendienst und Tester). Bis kurz vor meinem Start gab es kein Versionsverwaltungssystem. Wir beginnen jetzt langsam mit der Implementierung von SVN, aber der andere (ältere) Entwickler (im Folgenden als Joe bezeichnet) besteht darauf, dass der einzige Code, der für unser SVN-Repository festgeschrieben werden sollte, derjenige ist, der als produktionsbereit getestet und genehmigt wurde. Dies bedeutet, dass bei größeren Projekten möglicherweise wochenlang oder länger keine Commits durchgeführt werden.
Ist das eine normale Praxis? Mir scheint, wir verlieren viele Vorteile der Quellcodeverwaltung, darunter:
- Genaue Verfolgung des Projektfortschritts
- Verfolgung von Problemen, sobald sie auftreten und behoben sind
- Einfaches Zurückrollen von Fehlern
- Einfaches Sichern von Code, sodass wir nicht viel verlieren, wenn eine Workstation ausfällt
- Es ist einfacher, genau zu identifizieren, welcher Code an welchen Produktionsstandorten ausgeführt wird, vorausgesetzt, wir stempeln Revisionen wie hier beschrieben in ausführbare Dateien
- Einfache Zusammenarbeit (obwohl wir keine Teamarbeit machen; es sind alles Soloprojekte)
- Etc.
EDIT: Ich sollte betonen, dass es in der Vergangenheit keine echte Teamarbeit in diesem Unternehmen gegeben hat. Nur zwei Entwickler arbeiten an separaten Projekten. Außerdem sind viele Projekte klein, sodass sie in ein paar Wochen abgeschlossen werden können. Und das Unternehmen ist seit mehr als einem Jahrzehnt im Geschäft und kommt ohne Quellcodeverwaltung zurecht. Projekte werden normalerweise innerhalb ihres geschätzten Zeitrahmens abgeschlossen.
quelle
Antworten:
Wenn Projekte innerhalb ihres geschätzten Zeitrahmens abgeschlossen werden, kann man davon ausgehen, dass die Kunden zufriedene Kunden sind? :)
Es scheint, dass das Unternehmen auch neue Arten von Projekten aufnimmt und einige wachsende oder sich verändernde Probleme hat. Es wird viel davon ausgegangen, dass hier etwas los ist ... Bitte, trage mich!
Wenn Sie sicher sind, dass die Organisation und Kontrolle des Codes Ihnen und Ihrem Team intern helfen kann, sollten Sie SVN in Betracht ziehen, IMHO. Sie erhalten Bonuspunkte, wenn diese Route tatsächlich funktioniert und das Unternehmen in der Lage ist, qualitativ hochwertigere Produkte herzustellen, wodurch die Kunden zufriedener werden!
Seien Sie vorsichtig, wenn es den Anschein hat, als würde ein Kampf mit dem Management ein angespanntes Arbeitsumfeld schaffen. Tatsache ist, dass die Eigentümer die Firma gemacht haben. Und nicht nur das, sie haben ein erfolgreiches Unternehmen gemacht. Es ist unwahrscheinlich, dass sie einen Jackpot knacken, weil sie gut spielen können.
Sei respektvoll und du wirst vielleicht gehört.
Hoffentlich wird dies zu einem effizienteren und glücklicheren Team führen. Nach meiner Erfahrung ist dies mit einem frustrierten Management nur schwer zu erreichen.
quelle
Joe liegt ziemlich falsch. Jetzt können Sie das Argument anführen, dass Sie einen "sauberen" Zweig haben, der den überprüften, produktionsbereiten Code darstellt. Aber die Quellcodeverwaltung erst dann einzusetzen, wenn alles fertig ist, ist offen gesagt selbstzerstörerisch. Ein bisschen wie der Versuch, einen Martini ohne Gin zuzubereiten.
quelle
Der "Senior" ist eigentlich sehr ungelernt. Jeder Code, der kompiliert werden kann (und Tests besteht, falls vorhanden), sollte der Quellcodeverwaltung übergeben werden. Die Quellcodeverwaltung ist eine zentrale Ressource für die gemeinsame Nutzung von Code und die schrittweise Erstellung von Software.
Der gute Punkt ist die Trennung des Produktionscodes (letzte stabile Version), aber in solchen Fällen enthält das Versionsverwaltungssystem Funktionen wie Tags / Labels und Verzweigungen.
Unser Team ist sehr misstrauisch, wenn jemand innerhalb von zwei bis drei Tagen nichts festlegt. Es bedeutet, dass er einige Probleme hat und vielleicht Hilfe braucht. Ein weiterer Punkt der Quellcodeverwaltung ist, dass diese normalerweise regelmäßig gesichert wird, was bei Entwicklungsmaschinen nicht der Fall ist. Wenn Ihre Festplatte abstürzt, verlieren Sie für einige Wochen Ihre Arbeit.
quelle
Abgesehen von der Frage, ob Joe Recht oder Unrecht hat (er liegt übrigens falsch), scheint es mir, dass ein Kompromiss erzielt werden könnte, wenn Sie ein verteiltes Versionskontrollsystem wie Git oder Mercurial verwenden .
Auf diese Weise würden Sie und der andere Entwickler Ihr lokales Repository bearbeiten und Ihre Änderungen frühzeitig und häufig an die Quellcodeverwaltung übergeben, Ihre Änderungen jedoch erst dann in das "Produktions" -Repository übertragen, wenn sie "als produktionsbereit getestet und genehmigt" wurden. Sie hätten eine vollständige Historie von jedem, an dem Sie im Laufe der Wochen gearbeitet haben, und Joe hätte ein makelloses Repository, in dem nur die Historie der Änderungen gespeichert war, die als produktionsbereit eingestuft wurden.
quelle
git svn
für die Interaktion verwenden. Sie müssen nichts kaufen und niemanden überzeugen. Sie müssen es nicht einmal wissen.git push
Ihre Änderungen regelmäßig auf einem anderen Computer vornehmen (als Backup). Es muss nicht das "Master" -Repository sein.Es macht aus den von Ihnen genannten Gründen keinen Sinn. Es ist wie bei der Verwendung der Versionskontrolle ohne die Vorteile der Versionskontrolle.
quelle
Ich glaube, Joe hat nicht verstanden, dass Quellcodeverwaltungssysteme keine verherrlichten Sicherungen von Quellcode-Produktionsversionen sind, sondern ein hilfreiches Werkzeug für Programmierer, indem er die kleineren Schritte des Codefortschritts und der Reifung für Ihr zukünftiges Ich und Ihre Kollegen beschreibt. Vielleicht ist Joe es nicht gewohnt, in Teams mit anderen Leuten zusammenzuarbeiten?
Schon einmal darüber nachgedacht, warum diese Codezeile hinzugefügt wurde? Suchen Sie das Commit, das es eingeführt hat, und lesen Sie den Kommentar. Wenn Sie sich nur in der Produktion engagieren, sind die Kommentare nicht spezifisch genug, um für Sie nützlich zu sein.
Ich würde auch vorschlagen, dass Sie ein leistungsfähigeres Tool als SVN verwenden. Eine gute Einführung zu den Möglichkeiten finden Sie unter http://hginit.com/ von Joel Spoelsky.
Er verwendet Quecksilber, und es gibt heutzutage mehrere Anwärter. Git gilt als sehr mächtig, und https://github.com/ hat einige sehr, sehr nützliche Tools und bietet kostenlose Starterkonten, damit Sie es wirklich ausprobieren können.
quelle
Joe scheint nicht über SVN Bescheid zu wissen, sondern versucht, etwas über Zweige, Tags und Trunk herauszufinden ... Tags stimmen mit den Wünschen von Joe überein. Einiges über SVN Best Practices zu lesen würde nicht schaden
quelle
Ich habe noch nie SVN verwendet, daher weiß ich nicht, wie das gehen soll. Wir verwenden ClearCase, und die Praxis hier besteht darin, dass jeder Entwickler seinen eigenen Entwicklungszweig hat, dann einen Integrationszweig, den wir zusammenführen, wenn wir mit dem Testen beginnen möchten, und einen oder mehrere Versionszweige für integrierten und getesteten Code .
quelle
Joe ist ein Hacker, kein Entwickler. Er klingt wie ein sehr guter Hacker, ist aber falsch, wie man die Revisionskontrolle einsetzt. Was tun?
Mir scheint, Ihre Organisation hat eine Investition in SVN und es wäre eine Karrierebegrenzung für Sie, Joe herauszufordern und die Dollar-Investition in den SVN-Server ungültig zu machen. Richten Sie ein GIT-Repo ein und verwenden Sie die git svn-Schnittstelle, um so zu arbeiten, wie Sie möchten (Dies ist alles freie Software und die Einrichtung dauert eine Stunde bis einen Tag, alles auf Ihrer Workstation). Sozialisieren Sie Ihren Workflow mit Joe - er kann sein "unverschmutztes SVN-Repo" -Glaubenssystem bewahren und seine Glaubwürdigkeit gegenüber dem teuren weißen Elefanten in der Ecke (und dem Ego) bewahren.
Ich gehe davon aus, dass Joe in Kürze nachsehen wird, wie Sie arbeiten, und dasselbe tun wird. In ein oder zwei Jahren wird der SVN-Server ein Git-Repo.
quelle
Sie könnten versuchen, Joe mit den obigen Argumenten zu überzeugen. Wenn dies nicht gelingt, verwenden Sie SVN lokal für Ihre eigene Entwicklungsarbeit und hoffen, dass es irgendwann von Joe abgeholt wird. Wenn Sie sie nicht mit Argumenten überzeugen können, tun Sie das, wovon Sie überzeugt sind, und zeigen Sie, dass es funktioniert. Art des verteilten Ansatzes, aber mit den vorhandenen Werkzeugen.
quelle
Ich werde hier @ Carson63000 wiederholen und sagen, dass ich diese Einstellung schon einmal gesehen habe und dass sie größtenteils durch die schrecklichen Verzweigungs- / Zusammenführungsfähigkeiten des VCS verursacht wird. Ein Zweig, der mit Tags für jede Version kompiliert und Tests besteht, ist ein großartiger Ansatz, der jedoch nicht bis zu dem Punkt befolgt werden sollte, an dem kein anderer Code festgeschrieben wird. DVCS im Allgemeinen und Git im Besonderen machen das Verzweigen zu einem einfachen und allgemeinen Vorgang, und es verringert einen Großteil der Schwierigkeiten mit diesem Workflow.
quelle
Der Grund, warum Versionskontrollsysteme Tags unterstützen, liegt darin, dass Sie den zertifizierten Code kennzeichnen können und Ihre tägliche Arbeit dennoch ausführen können. Immer wenn Sie einen Produktionsqualitätscode haben, übergeben Sie ihm ein Etikett, und Sie sind fertig. Sie kennen den genauen Zeitpunkt, zu dem Sie zurückkehren müssen, um das zu erhalten, was der Kunde hat. Und Sie können immer verschiedene Versionen Ihres Codes überprüfen und vergleichen. Auf diese Weise können Sie beide mit Ihren Daten in der Quellcodeverwaltungsdatenbank zufrieden sein. Es funktioniert für das Unternehmen, für das ich arbeite, mit 100 Entwicklern, die alle am selben Projekt arbeiten. Es wird definitiv auch für Sie funktionieren.
quelle
Es ist durchaus üblich, Dinge nur in Versionskontrollsystemen zu lagern, die zur Auslieferung an die Produktion bereit sind. So wird es in der Vergangenheit seit Jahrzehnten gemacht, seitdem Festplattenspeicherung Hunderte von Dollar pro Megabyte kostete und alles zu teuer war.
Es wird nicht mehr als die beste Methode angesehen, aber ich kann verstehen, warum die Leute es immer noch tun, da es immer noch viele ältere Versionskontrollsysteme gibt, die es schwierig, wenn nicht unmöglich machen, etwas anderes zu tun, und trotzdem wissen, was Sie tun Jede Veröffentlichung ist (oder besser gesagt, es gibt keine Möglichkeit, zu wissen, was eine Veröffentlichung ist, ohne die Tags in jeder einzelnen Datei zu überprüfen, wenn Sie zurückgehen müssen. Ich habe mehr als ein Repository gesehen, in dem die einzige Möglichkeit besteht, eine alte zurückzuerhalten release sollte eine zip-Datei mit dem Quellcode und den Binärdateien für dieses Release aus dem Repository abrufen.
quelle