2008-10-03 5 views
8

Wir verwenden Subversion als unser Quellcodeverwaltungssystem und speichern die VisualStudio-Projektdateien (vcproj) im Quellcodeverwaltungssystem, so wie ich es normalerweise finde. Mit Subversion verwenden wir keine Form der Dateisperrung. Wenn also zwei Entwickler gleichzeitig an demselben Projekt arbeiten und beide Dateien zum Projekt hinzufügen oder Einstellungen ändern, muss der zweite die Änderungen zusammenführen.Wie verwalten Sie .vcproj-Dateien in der Quellcodeverwaltung, die von mehreren Entwicklern geändert wurden?

Wie werden diese Änderungen zusammengeführt?

Die vcproj-Dateien sind nur Textdateien, so dass es möglich ist, sie von Hand zu bearbeiten, aber sie sind nicht sehr zugänglich für die Bearbeitung von Hand, insbesondere von Junior-Entwicklern.

Die Möglichkeiten, die ich denken kann, sind

  • die neueste Version aus dem SVN holen und erneut hinzufügen alle lokalen Änderungen manuell
  • Bearbeiten Sie die von Hand Datei
  • Konflikte aus einer automatischen Zusammenführung zu lösen implementieren sie irgendeine Form Schema Sperren gleichzeitige Änderungen
  • haben eine Vereinbarung zwischen den Entwicklern zu verhindern, so dass sie die gleichzeitige Änderungen nicht

Derzeit verwenden wir die erste Option, alle Änderungen manuell hinzuzufügen, aber das ist zeitaufwändig und ich frage mich, ob es einen besseren Weg gibt.

Bei Quelldateien funktioniert die automatische Zusammenführungsfunktion die meiste Zeit und wir bekommen nicht viele Konflikte.

+0

Wenn häufige Kollisionen beim Einchecken auftreten, können Sie davon profitieren, indem Sie die Struktur Ihres Projektbaums ändern. IE: Anstatt ein .vcproj mit 500 Dateien zu haben, haben Sie 1 Projekt mit 50 Dateien, die zu 9 Bibliotheken mit je 50 Dateien verlinken. Wenn Sie feststellen, dass Sie * Ihr Projekt nicht in separate Bibliotheken aufteilen können, ist es möglich, dass Sie die Zeit für diese Entwicklung aufwenden, um die Effizienz der Entwickler zu erhöhen, da Modularität mehr als nur die Pflege von Projektdateien unterstützt. – KeyserSoze

Antwort

4

Ich habe gefunden, dass Option 2 (bearbeiten Sie die Dateien von Hand) im Allgemeinen ziemlich gut funktioniert, solange Sie ein gutes Diff-Tool verwenden (ich verwende WinMerge). Das Hauptproblem, auf das ich gestoßen bin, ist, dass Visual Studio manchmal die Datei neu anordnet. Wenn Sie jedoch ein gutes Werkzeug zum Vergleichen/Zusammenführen haben, sollte es in der Lage sein, zwischen geändertem und verschobenem Inhalt zu unterscheiden. Das kann viel helfen.

+0

Das ist traurig. 2010 und VCPROJ-Dateien müssen von Hand gepflegt werden, damit das Revisionskontrollsystem es nicht ausschlägt. – dwj

+0

Einverstanden, +1. In 95% der Fälle sind die Änderungen sehr klein (z. B. Hinzufügen oder Löschen von 1 oder 2 Dateien aus dem Projekt) und werden problemlos zusammengeführt. Solange Sie keine großen Änderungen an der Projektdatei vornehmen und das zusammengefügte Ergebnis sorgfältig betrachten, bevor Sie es automatisch akzeptieren, wird es Ihnen gut gehen. In den seltenen Fällen, in denen die Zusammenführung nicht funktioniert, sollten Sie Ihre lokalen Änderungen erneut vornehmen. –

-1

Wir verwenden ein Diff-Werkzeug (WinMerge), um Änderungen zusammenzuführen. Die Projektdateien sind (in den meisten Fällen) wirklich unkomplizierte XML. Der Schlüssel hier ist jedoch, dass es bei der Zusammenführung niemals Überraschungen geben sollte, denn gute Kommunikation ist Teil des Fundaments effektiver Quellensteuerung.

Gleichzeitige Änderungen an das Projekt sind völlig in Ordnung, solange Menschen kommunizieren.

+0

Heh. Mein Gehirn hat eine kleine Substitution bei deinem letzten Satz gemacht. "Simultane Änderungen sind vollkommen in Ordnung ... solange ich zuerst einchecke". :) – Herms

+0

Wenn Sie mehr als 10 Entwickler haben oder über mehrere Standorte oder Zonen hinweg arbeiten, ist dies einfach nicht zuverlässig genug, um auf Ihre Entwicklung zu wetten. – Simon

+0

Ich stimme überhaupt nicht zu. Wenn du Probleme hast, dann machst du etwas falsch. Genau das sollte die Quellcodeverwaltung lösen! –

1

Dies ist ein schwieriges Problem und ich denke, eine Schwäche in der Visual Studio-Architektur. Die Art und Weise, wie wir es gefunden haben, war, die proj-Dateien überhaupt nicht in der Quellcodeverwaltung zu haben und ein Build-Skript zu haben, das die Konfigurationseinstellungen gehandhabt hat.

Die Alternative war sehr chaotisch und wir konnten keine konsistenten Builds oder Umgebungen zwischen Entwicklern garantieren. Dies führte zu einer großen Anzahl von Downstream-Integrationsproblemen und schließlich haben wir den drakonischen Schritt unternommen, die Projektdateien aus der Quellcodeverwaltung zu entfernen.

Die Entwicklerumgebungen könnten immer noch fehlausgerichtet werden, aber es zeigte sich, wenn sie versuchten, selbst etwas aufzubauen.

1

Mit TFS hier, aber ich denke nicht, dass es einen Unterschied macht.
Wir sperren auch nicht und müssen manchmal mit dem Zusammenführen von Projektdateien umgehen. Ich habe es nie als so komplex oder sehr problematisch empfunden.Selten treten Probleme auf, die nicht automatisch zusammengeführt werden können, und der manuelle Zusammenführungsprozess ist ziemlich trivial.

Es gibt nur eine Einschränkung: Check-in oft! Wenn Sie größere Änderungen an der Projektstruktur vornehmen und diese nicht sofort einchecken, können diese Änderungen die Komplexität späterer Zusammenführungen erhöhen. Wenn ich die Struktur eines Projekts grundlegend ändere, gebe ich normalerweise jedem den Kopf. Ich werde sie alle bitten, ihre aktuelle Arbeit einzuchecken, und dann selbst für die Zusammenführung sorgen.

0

Die Optionen 1 und 2 schließen sich nicht gegenseitig aus - wenn der Entwickler Junior-Level ist, lassen Sie sie Option 1 verwenden (holen Sie die Projektdatei erneut und führen Sie die Änderungen aus), wenn das für sie komfortabler ist. Für ältere Entwickler ist Option 2 (Zusammenführen mit einem Merge-Tool) völlig in Ordnung.

Ich denke, das ist eine Situation, die derzeit keine magische Kugel hat - manchmal ist Verschmelzen ein Schmerz.

1

ich das vor kurzem gefunden: http://www.codeproject.com/KB/macros/vcproj_formatter.aspx Wenn Sie das Tool auf einer vcproj Datei und auf einer modifizierten Version davon laufen, dann können Sie sie einfach zusammen mit Ihrem Liebling Textmerge fusionieren Werkzeug, und zusätzlich ist das Ergebnis eine kompakte VCPROJ-Datei.