SVN schlecht nutzen - ist Mercurial die Antwort?


13

Bei der Arbeit verwenden wir SVN, jedoch nur im Namen. Wir verzweigen oder verschmelzen nicht. Wir behalten zwei Kopien des Repositorys bei, eine davon dient als "Tag" -Zweig, der bei der Bereitstellung kopiert und für Fehlerbehebungen und sofortige Funktionen wie "Das muss so schnell wie möglich live gehen" aufbewahrt wird. Wir müssen daran denken, Änderungen, die in einer Kopie vorgenommen wurden, in die andere Kopie (den "Stamm") zu kopieren. Wir haben ein Dutzend Projekte in einem einzelnen Ordner im Repository, anstatt sie aufzuteilen. Kurz gesagt, das Einzige, wofür wir SVN verwenden, ist, dass wir Commit durchführen können. Alles andere wird manuell erledigt.

Ich habe Mercurial evaluiert. Ich habe in der Vergangenheit Git verwendet (ich bin der einzige im Team, der DVCS verwendet hat), und ich lerne Mercurial schnell kennen. Ich diskutiere darüber, Mercurial dem Rest des Teams vorzustellen, um die Dinge "besser" zu machen, weil das Verzweigen ein Kinderspiel ist, das Zusammenführen viel einfacher ist und wir die Dinge lokal nach Herzenslust festschreiben und nur an die Zentrale bringen können Zweig, wenn sie fertig sind. Wir würden alle Vorteile von SVN nutzen (und wir bekommen im Moment sowieso nicht viele Vorteile, da niemand SVN wirklich versteht) und für neue Funktionen müssen wir nicht Tonnen von nicht versionierten Dateien haben, damit wir ein Rollback durchführen müssen Wir haben es verbockt. Der Workflow scheint ein bisschen einfacher zu sein - wir müssen uns nur daran erinnern, dass "Commit" lokal und "Push" wie das Commit von SVN ist.

Ist das ein guter Ansatz? Denken Sie daran, dass das Team sehr flexibel ist und alles tun wird, um unsere Arbeitsqualität zu verbessern und unsere Arbeit zu vereinfachen. Der CIO hat mich sogar gefragt, als ich erwähnte, dass wir SVN nicht nutzen, um sein Potenzial auszuschöpfen Gibt es etwas Besseres, das wir verwenden können? " Er ist also auch dabei.


13
HgInit - Es beginnt mit der Umerziehung durch Subversion, die Sie meiner Meinung nach nützlich finden werden.
Yannis

20
Haben Sie keine Angst, dass sie Hg auch schlecht gebrauchen werden?
Oded

6
Ich denke, ein DVCS wäre eine schreckliche Idee für Ihre Situation, da die Lernkurve höher ist und Sie als Organisation eindeutig Probleme haben, nur die Grundfunktionen von SVN zu nutzen. Die Umstellung auf DVCS sollte nur erfolgen, wenn Sie Tags, eine ordnungsgemäße Repository-Organisation und ordnungsgemäße Zusammenführungstechniken in SVN verwenden und feststellen, dass diese für Ihre Anforderungen immer noch fehlen.
maple_shaft

2
@WayneM Die Entscheidung, SVN über ein DVCS zu verwenden, ist nicht unbedingt falsch. Einige Leute (ich selbst eingeschlossen) haben keine Probleme mit dem Zusammenführen in SVN und stellen fest, dass die zusätzliche Komplexität von DVCS die wahrgenommenen Vorteile überwiegt, insbesondere wenn Sie ein kleineres lokalisiertes Team sind. Ich werde DVCS wahrscheinlich nicht sehr ernst nehmen, bis ich in einem großen Entwicklerteam gelandet bin, bei dem das Zusammenführen ein großes Problem darstellt.
maple_shaft

4
@maple_shaft I will probably not take DVCS very seriously until I end up on a large development teamOder bis Sie in einem verteilten Team landen. Wir sind ein kleines Team (5 Personen), das an 3 Standorten arbeitet (und manchmal auch an 5, wenn wir keine Lust haben, aus dem Bett zu steigen), und der Wechsel von SVN zu HG war ein willkommener ...
yannis

Antworten:


15

Ja.

Wenn Sie "SVN" in Ihrem OP durch "Perforce" ersetzen, haben Sie so ziemlich die Situation, in der ich mich befand, als ich meinen aktuellen Job anfing, bis hin zum manuellen Kopieren von Änderungen. Zwei Jahre später sind wir bei Mercurial und alle sind sich einig, dass es eine große Veränderung war.

Wir haben die Möglichkeit, pro Support-Fall zu verzweigen und zusammenzuführen , was für die Qualitätssicherung unglaublich nützlich ist, und die Möglichkeit, eine beliebige Anzahl von Wegwerfzweigen und Repositorys zu erstellen, wann immer wir dies für richtig halten. Diese können wir dann auf unserem CI-Server erstellen und überprüfen und dann bereitstellen zu einer Cloud-Testumgebung und überprüfen Sie die Funktionalität. Dies hat im Hinblick auf die Sicherheit einen enormen Vorteil: Wenn wir eine Live-Bereitstellung durchführen, sind wir fast zu 100% sicher, dass sie funktioniert (Probleme ohne Umgebung / Datenbank, die offensichtlich nicht im Geltungsbereich des VCS liegen).

Was wir durch den Wechsel zu Quecksilber gewonnen haben, ist im Grunde genommen der Raum zum Atmen. Wir müssen uns nicht mehr um die Kosten einer Filiale oder die schrecklichen Zusammenführungssitzungen kümmern, die unweigerlich folgten. Alles ist viel einfacher. Wir verwenden FogBugz auch ziemlich häufig, daher ist die Anbindung an Kiln (das gehostete Quecksilberprodukt) sehr hilfreich.

Der Kommentar zur hginit- Site ist auch genau richtig , da er einen Versionskontrollworkflow beschreibt, der tatsächlich funktioniert (vorausgesetzt, Sie passen ihn an den speziellen QS-Workflow Ihres Unternehmens an).

Der einzige mögliche Fehler beim Verschieben von Versionskontrollen besteht darin, dass Sie jemanden benötigen, der wirklich eine treibende Kraft für die Änderung ist, der sich gerne mit dem Thema befasst und die Werkzeuge so gut wie möglich einsetzt, wie Sie es zu wollen scheinen tun.

Ich bin nicht einverstanden mit den Kommentaren zur Teamgröße und Teamverteilung in Bezug auf die Verwendung von DCVS. Es geht wirklich um die CODE-Verteilung. Wenn mehrere Entwicklungszyklen gleichzeitig ablaufen, entweder Supportfälle auf einem älteren System oder eine Reihe von Funktionen oder sogar neue Systeme (was Sie auch tun), profitieren Sie von der Verwendung eines DVCS.


3
-1, wenn die Entwickler bereits solche Probleme mit Subversion haben, ist es äußerst unwahrscheinlich, dass sie ein komplexeres System "bekommen". Die richtige Antwort ist, wie die Kommentare zu der Frage besagen, eine Umschulung der Funktionsweise von Subversion (und VCS im Allgemeinen) ...
Izkata

1
@EdWoodcock, ich denke, was Sie beobachtet haben, könnte daran liegen, dass Ihr Team mit einer "sauberen Tafel" beginnen musste. Die umfassende Umstellung von VCS auf Mercurial bedeutete, dass jeder neu anfangen musste und sich nicht mehr auf die schlechten Gewohnheiten verlassen konnte, die er in SVN verwendet hatte. Oft ist es einfacher, schlechte Angewohnheiten in einem anderen Kontext zu überwinden (in diesem Fall quecksilberhaltig).
Angelo

2
@EdWoodcock: Perforce weist möglicherweise die schlechteste Verzweigung aller noch verwendeten VCS auf. Das Verzweigen in SVN ist viel einfacher.
Kevin Cline

1
Unabhängig davon, welches Versionskontrollsystem verwendet wird, ist es meiner Meinung nach wichtig, die Regeln festzulegen und Zeit zu investieren, um alle Nutzungsszenarien mit Ihrem Team zu besprechen. Die Leute sind nicht geboren, weil sie wissen, wie man Verzweigungen, Tags und Eincheckvorgänge durchführt. Unterschiedliche Teams führen diese Vorgänge auf unterschiedliche Weise durch, und VCS-Systeme erzwingen keinen Workflow über einen anderen. Wenn die Mitglieder des Teams in Bezug auf Erwartungen und Nutzung nicht alle auf einer Seite sind, wird die Versionskontrolle zum Albtraum. Dies sind Probleme, die ALLEN VCS-Systemen gemeinsam sind.
Angelo

1
@ChrisS Dieses Gleichnis gilt eher für ein Standard-VCS, bei dem Verzweigungskosten anfallen. Außerdem geht es um Verzweigen, Festschreiben und erneutes Zusammenführen, was <i> Sie jedes Mal tun, wenn Sie in einem DVCS klonen </ i>. Außerdem habe ich gerade erläutert, warum der Ansatz für uns wirklich funktioniert. Über Methodik dogmatisch zu sein, ist ziemlich dumm.
Ed James

21

Ein anderes Tool wird Ihr Problem wahrscheinlich nicht lösen. Ich würde sagen, Sie sollten diesen Artikel lesen. Ich fand ihn am hilfreichsten:

http://thedailywtf.com/Articles/Source-Control-Done-Right.aspx

Ich denke, der Hauptpunkt des Artikels ist hier zusammengefasst, aber bitte lesen Sie es:

Am Ende: Nicht wirklich über die Werkzeuge

In all der Zeit, in der ich mit verschiedenen Versionsverwaltungssystemen gearbeitet und diese integriert habe, bin ich zu dem Schluss gekommen, dass es nicht das Tool ist, sondern wie Sie es verwenden. Das ist eine furchtbar abgedroschene Aussage, aber es scheint hier besonders wahr zu sein. Bei der ordnungsgemäßen Verwaltung von Quellcodeänderungen - Beschriftung für Builds, Verzweigung ausnahmsweise usw. - übertrifft sogar das lahmste Quellcodeverwaltungssystem (* cough * SourceSafe * cough *) eine Mercurial-Konfiguration mit einer Reihe von zufälligen Commits und drückt.


6
+1, es geht wirklich nicht um die Tools. SVN ist perfekt in der Lage, wie es per se ist.
Angelo

1
Hier dreht sich alles um Menschen, nicht um Werkzeuge. Ich habe gut gemanagte Projekte gesehen, die immer noch Concurrent Versions System für die Versionskontrolle verwenden, sowie schreckliche Projekte, bei denen GIT oder Mercurial ausgeführt wird.
Alexander Galkin

Es geht nicht wirklich um Tools, es sei denn, Sie haben überlegene, um den Versionsverwaltungsanbieter wie Github, Bitbucket
Chris S

3
Ich bin damit einverstanden, dass es darauf ankommt, wie Sie Ihre Werkzeuge einsetzen, aber es ist auch so, dass verschiedene Werkzeuge Sie in verschiedene Richtungen führen. Werkzeuge wie Mercurial führen Sie auf einen Weg der Einfachheit und Flexibilität. Git führt Sie auf einen Weg der Komplexität, aber extremen Flexibilität. Subversion macht einige Dinge einfacher als andere und lenkt Sie so von den schwierigen und umständlichen Dingen ab, während Visual Sourcesafe Sie auf einen Weg der extremen Inflexibilität und der überwältigenden Frustration führt. * 8 ')
Mark Booth

10

Nein. Technologie löst selten solche Probleme.

Mercurial ist komplexer als Subversion (ja, Verzweigen und Zusammenführen ist besser und vielleicht einfacher, aber das Modell von Subversion ist viel einfacher als das von Mercurial). Wenn Sie Subversion auf eine solche Art und Weise verwenden, könnten Sie Mercurial verwenden:

  • a) Angemessen oder besser
  • b) Unangemessen, aber besser als Ihre derzeitige Verwendung von Subversion
  • c) So unzulänglich wie jetzt
  • d) Schlimmer als jetzt

c) und d) klingen nach den wahrscheinlichsten Ergebnissen. Schreiben Sie auf, warum Sie glauben, in a) oder b) zu enden.


5

Ich kann nicht darüber sprechen, wie große Teams arbeiten, aber für kleine Teams sind viele dieser großen SVN-Probleme keine wirklichen SVN-Probleme ... Sie sind Entwicklungsprobleme. Wenn Sie sich nicht an moderne Entwicklungsstandards halten (vor allem an die kontinuierliche Integration), wird die Versionierung genau zu dem Chaos, das Sie beschreiben ... Stellen Sie vor dem Wechsel zu einem neuen System sicher, dass Sie eine echte Ursachenanalyse für Ihr Problem durchführen ...


3

Nein. Werkzeuge ersetzen nicht die Methodik.

Wenn Sie Subversion nicht als SCM verwenden , können Sie Mercurial auch nicht verwenden (und es wird höchstwahrscheinlich passieren)


2

SVN kann das tun, wofür Sie es brauchen, und es besteht keine Notwendigkeit, die Pferde mitten im Strom zu wechseln, um eine zweifelhafte Auszahlung zu erhalten.

Was auch immer Sie tun, Sie müssen ein Vertrauensproblem überwinden. Jemand muss in der Lage sein, jeden davon zu überzeugen, seinen Workflow zu ändern. Dies ist selbst unter den besten Umständen nicht einfach, selbst wenn Sie Logik und Fakten auf Ihrer Seite haben. Es ist eines der schwierigsten Dinge in einer Organisation. Wenn Sie es verpfuschen oder es wird hart, verlieren Sie das Vertrauen und es wird sehr schwer sein, dieses Vertrauen wiederzugewinnen.

Es gibt ein paar Dinge, von denen ich weiß, dass die Leute es erfolgreich versucht haben. Vielleicht arbeitet einer von ihnen für Ihr Team:

  1. Bringen Sie einen "Coach" mit, um eine Reihe von Workshops für das Team anzubieten. Dies muss wahrscheinlich eine externe Person sein (ironischerweise ist es für viele Teams oft einfacher, einem Außenstehenden zu vertrauen, als jemandem im Team zu vertrauen). Es muss jemand sein, der sich mit ihren Dingen bestens auskennt und diese Fähigkeiten effektiv Menschen auf allen Ebenen des Verstehens beibringen und einen pragmatischen Plan für die Einführung des neuen VCS (*) in den Arbeitsablauf des Teams ausarbeiten kann.

  2. Starten Sie ein "skunk-works" -Projekt, um das neue VCS in einem kleinen Nebenprojekt zu testen und zu validieren. Wählen Sie ein paar "Alpha" -Entwickler aus, die bereit sind, neue Dinge auszuprobieren, und stören Sie sich nicht daran, eine Reihe von erfolglosen Experimenten durchzuführen. Wenn die Skunk-Werke in der Lage sind, BETON unwiderlegbare Verbesserungen des Arbeitsablaufs aufzuzeigen, können Sie versuchen, ihn dem Rest des Teams zur Verfügung zu stellen, und Sie haben ein paar Evangelisten, die Ihnen dabei helfen.

(*) mit "neues VCS" meine ich nicht unbedingt mercurial oder git, es kann auch SVN sein (richtig gemacht).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.