Frage

Ich habe für die Versionskontrolle immer Subversion oder CVS verwendet, die eine „Merge“-Methode verwenden.Einer meiner Freunde schwärmt von Perforce und wie großartig es mit seinen Änderungslisten und der Checkout-Methodik ist.

Obwohl ich sicher bin, dass ein Großteil davon von der Erfahrung und den persönlichen Vorlieben abhängt, habe ich mich gefragt, ob bereits Untersuchungen darüber durchgeführt wurden, mit welcher Methode der Versionskontrolle effizienter gearbeitet werden kann.

BEARBEITEN: Zur Klarstellung: Ich weiß, dass sowohl Perforce als auch SVN das Sperren und Zusammenführen zulassen, aber SVN „ermutigt“ eine liberale Bearbeitungs- und Zusammenführungsmethode, während Perforce meines Wissens nach eine Checkout-Checkin-Methode fördert.

War es hilfreich?

Lösung

Ehrlich gesagt denke ich, dass es von der Disziplin der Entwickler abhängt.

Ich verwende Subversion für meine persönliche Arbeit und habe es bei einigen Jobs verwendet.Was mir an Subversion gefällt, ist, dass ich niemanden aufspüren und ihn fragen muss, warum er an etwas arbeitet und ob es für mich in Ordnung wäre, etwas zu tun.Das Problem entsteht, wenn jemand beschließt, mit der Arbeit an etwas zu beginnen, es aber eine Zeit lang nicht eincheckt;Dies kann die Zusammenführung erschweren, da zwischen dem Auschecken und Einchecken mehrere Änderungen vorgenommen werden.

Ich verwende derzeit Perforce und aus irgendeinem Grund gefällt mir SVN besser.Perforce gibt mir definitiv einen besseren Hinweis darauf, dass es Zusammenführungskonflikte geben wird, und verfügt sogar über integrierte Tools, die mir bei der Lösung der Zusammenführungen helfen.Es besteht das gleiche Problem: Wenn jemand über einen längeren Zeitraum hinweg unzählige Änderungen vornimmt, wird die Zusammenführung schwieriger.

Grundsätzlich erfordern beide Modelle, dass Sie Änderungen häufig einchecken.Wenn Sie zahlreiche Check-ins durchführen, verringert sich die Wahrscheinlichkeit, dass eine Zusammenführung erforderlich ist.Ich mache mir die Schuld, dass ich Dinge viel zu oft zu lange überprüft habe.Ich persönlich habe das Gefühl, dass der Preis von SVN alles wettmacht, was ihm im Vergleich zu Perforce fehlt;Ich habe noch keinen Unterschied zwischen ihnen festgestellt.

Andere Tipps

Zusammenführen ist effizienter.Aus dem einfachen Grund, dass gleichzeitige Änderungen an derselben Datei häufig vorkommen und Sie durch die Zusammenführung eine Wiederherstellung durchführen können.Im Gegensatz dazu vermeidet die Einzelkasse ein wenig zusätzliche Arbeit, allerdings auf Kosten enormer Ineffizienzen bei der Terminplanung.Normalerweise dauert es nur kurze Zeit, zwei Änderungen an derselben Datei zusammenzuführen (z. B.Minuten), wohingegen es viel Zeit in Anspruch nimmt, Änderungen an einer Datei vorzunehmen (z. B.viele Stunden oder Tage), so dass die Verhinderung des Zugriffs auf die Bearbeitung einer Datei eine große Ineffizienz darstellt.

Beachten Sie, dass Perforce die Checkout-Methodik nicht erzwingt, sondern gleichzeitige Checkouts ermöglicht (entspricht einer Zusammenführung).

In unserer letzten Bewertung übertraf Perforce Subversion bei der Unterstützung von Verzweigungen und der Integration von Änderungen zwischen Zweigen.Es wurde an Subversion gearbeitet, um diesen Mangel zu beheben, aber wir waren noch nicht zurück, um es uns anzusehen.

Wenn Sie in Perforce eine Datei verzweigen, „merkt“ sich Perforce, woher sie stammt und welche Revisionen in die beiden Versionen „integriert“ wurden.Es gibt auch einige Speicheroptimierungen im Repository, sodass eine Zweigkopie erst dann wirklich entsteht, wenn jemand eine Änderung im Zweig vornimmt, und dann (wenn ich das richtig verstehe) Unterschiede zur Basiskopie verwendet, genau wie Revisionen innerhalb eines Zweig.

Die Verfolgung der Beziehungen zwischen Niederlassungen durch Perforce ist ein großer Vorteil.Wenn Subversion dies jetzt implementiert hat, benachrichtigen Sie mich bitte.

Vielleicht meinten Sie Source Safe und nicht Perforce?Perforce unterstützt das Zusammenführen und hatte bis SVN 1.5 tatsächlich eine bessere Zusammenführungsunterstützung als SVN, als benannte Zusammenführungen hinzugefügt wurden (sowie Änderungslisten, die Perforce schon immer hatte, und ich vermisse den Wechsel zu einem Shop, der SVN verwendet, sehr, aber wir haben gewonnen.) (Das Upgrade auf Version 1.5 wurde etwas länger getestet.)

Es ist erwähnenswert, dass Sie sowohl mit SVN als auch mit Perforce ein gesperrtes Auschecken durchführen können, sodass Sie bei Bedarf das „nicht zusammengeführte“ Modell verwenden können. Abgesehen von der Verwaltung von Binärdateien mit Versionskontrolle sehe ich jedoch keinen großen Nutzen dafür.

Wie auch immer, die einfache Antwort auf Ihre Frage lautet: „Merge-Modelle sind immer dann weitaus besser, wenn mehr als ein Entwickler beteiligt ist.“

Wenn ich das richtig verstehe, macht Perforce alle Dateien, die nicht ausgecheckt sind, schreibgeschützt.Dies ähnelt dem Verhalten unter Microsoft TFS und VSS.Subversion hingegen setzt keine schreibgeschützten Attribute.Meiner Meinung nach ist die Subversion-Methode einfacher, weil Sie sich nicht mit einem Quellcodeverwaltungs-Client herumschlagen müssen, um Dateien zu ändern. Sie ändern mit rücksichtsloser Hingabe und vergleichen dann, was sich auf der Festplatte geändert hat, mit dem Server, wenn Sie bereit sind Einchecken.

Wenn alle Dateien schreibgeschützt sind, ändere ich ständig eine Datei, versuche sie zu speichern, stelle fest, dass sie schreibgeschützt ist, und muss dann zum Versionsverwaltungsclient wechseln, um sie auszuchecken.Es ist nicht so schlimm, wenn der Quellcodeverwaltungs-Client in Ihren Editor integriert ist, aber wenn Sie Dinge, die kein Quellcode sind, unter Versionskontrolle speichern, ist dies oft keine Option.

Wenn ich das richtig verstehe, macht Perforce alle Dateien, die nicht ausgecheckt sind, schreibgeschützt.

Dies ist nur das Standardverhalten.Bei Bedarf können häufig wechselnde Dateien stattdessen auf Lese-/Schreibzugriff eingestellt werden.Sehen Sie sich eine vollständige Liste der Dateimodifikatoren an Hier.

Außerdem verwende ich für meine Umgebung Eclipse mit Perforce-Plugin.Mit diesem Plugin wird beim Bearbeiten einer Datei die Datei sofort zur Bearbeitung geöffnet.

Ich bin mir über die Recherche nicht sicher, aber hier ist ein Datenpunkt für Sie:
Mein Team hat sich vor allem wegen des Komforts für PVCS (zur Kasse) entschieden.Zweifel an der Zusammenführung und mangelndes Bewusstsein für Tools wie Subversion haben definitiv dazu beigetragen.

Ich bin mir nicht sicher, ob ich die Frage hier verstehe. Mir ist kein modernes Versionsverwaltungssystem (außer Visual SourceSafe) bekannt, das das Zusammenführen nicht vollständig unterstützt.

Ich bevorzuge definitiv die Merge-Methode.

Ich habe Visual Sourcesafe (hoffentlich nie wieder), CVS, Subversion und BZR verwendet.Visual SourceSafe erzwingt die Methode „Auschecken vor Bearbeiten“ und kann schmerzhaft sein.CVS und Subversion waren in der Vergangenheit nicht besonders gut darin, Zusammenführungen zu akzeptieren, obwohl ich gehört habe, dass Subversion 1.5 das verbessert hat.

Ich würde die Verwendung eines VCS empfehlen, das von Anfang an auf häufiges Zusammenführen ausgelegt ist.Ich habe bzr verwendet, das dies tut, aber die anderen großen verteilten VCS-Systeme (Git und Mercurial) tun dies auch.

Letztlich kenne ich aber keine Forschung zu diesem speziellen Bereich.Im Allgemeinen gibt es nur sehr wenig Forschung zur Effizienz der Programmierung. Peopleware Dies ist eine der bemerkenswerten Ausnahmen.

Ehrlich gesagt verstehe ich die Frage nicht wirklich.Aber ich kann für die Effizienz und die Fähigkeit von Perforce bürgen, mit mehr als einer Person zurechtzukommen, die asynchron eine Datei ändert und die Bearbeitungen zusammenführt.

Wenn in Perforce jemand eine Datei eincheckt, die Sie ebenfalls ändern, wird bei der nächsten Synchronisierung vom Server (d. h.Aktuelle Dateien abrufen) werden Sie darüber informiert, dass einige Änderungen behoben werden müssen.Die Wahl, wann dies geschieht, liegt bei Ihnen.Wenn Sie eine Datei „auflösen“, erfolgt die Zusammenführung in Ihre lokale Version – und die Tools sind hierfür gut geeignet.

Es ist wichtig, die Wahl zu haben, wann Sie dies tun. Möglicherweise führen Sie eine Synchronisierung durch, um einige Aktualisierungen zu erhalten, die nicht direkt mit Ihrer Aufgabe in Zusammenhang stehen (z. B. Bugfix), und Sie möchten sich zu diesem Zeitpunkt nicht damit befassen, herauszufinden, ob die Aufgabe einer anderen Person erledigt ist Änderungen an denselben Dateien, an denen Sie gerade arbeiten, wirken sich auf Sie aus.Sie machen also weiter, erstellen und testen und lösen anschließend die Dateien in Ihrem eigenen Tempo auf.

Der andere Fall ist, dass Sie Ihre Änderungen übermitteln, ohne zuvor eine Synchronisierung mit der aktualisierten Datei durchgeführt zu haben.In diesem Fall verhindert Perforce die Übermittlung und markiert die zu lösenden Dateien.Jeder vernünftige Entwickler wird in dieser Phase die Zusammenführung durchführen, dann neu kompilieren und/oder testen, bevor er die Änderung zurück an Perforce sendet.

Was mir daran gefällt, ist, dass es wirklich versucht, Sie daran zu hindern, Änderungen an den zentralen Server zurückzusenden, die nicht explizit verarbeitet wurden, und somit die Wahrscheinlichkeit minimiert, dass der Build kaputt geht.Der Lösungsprozess ist einfach und erfordert nur einen sehr geringen Aufwand, sodass keinerlei Effizienzprobleme bestehen.

Perforce legt großen Wert darauf, Ihnen Auswahl und Kontrolle darüber zu geben, wie Änderungen weitergegeben werden, und untermauert dies mit hervorragenden Tools zur Verwaltung der Zusammenführung von Änderungen.Persönlich mag ich die Wahlmöglichkeiten und die Fähigkeit, Entscheidungen leicht treffen zu können.Zweifellos hat Subversion auch seine eigenen Alternativen.

Ich denke, es kommt wahrscheinlich darauf an, was Sie gewohnt sind – ich glaube nicht, dass es ein signifikantes oder messbares Effizienzproblem gibt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top