Ermutigen Sie zu häufigen Commits. Teamkollegen, die neu in der Versionskontrolle sind, haben möglicherweise das Gefühl, dass sie den Code aus dem Repository heraushalten müssen, bis "es richtig funktioniert". Bringen Sie allen bei, sich früh und häufig zu engagieren, um Probleme so schnell wie möglich zu finden. Anstatt den Code zu halten, bis er funktioniert, schlagen Sie vor, dass Ihre Teamkollegen Zweige für Funktionen erstellen, die den Stamm beschädigen könnten. Das führt zu...
Richten Sie eine Verzweigungs- und Markierungspraxis ein. Ermutigen Sie Ihre Teamkollegen, zusätzlich zu Zweigen für Funktionen Zweige für Fehlerbehebungen zu verwenden. Kennzeichnen Sie wichtige Fehlerbehebungen zu Beginn und am Ende der Arbeit. Pflegen Sie Tags (und möglicherweise Zweige) für Produktions- / Qa-Releases.
Richten Sie eine Richtlinie für Trunk ein und halten Sie sich daran. Ein Beispiel könnte sein: "Trunk muss immer fehlerfrei erstellt werden." oder "Kofferraum muss immer alle Unit-Tests bestehen". Alle Arbeiten, die die Standards von Trunk noch nicht erfüllen können, müssen in einer Zweigstelle ausgeführt werden.
Übernehmen Sie keine Formatierungsänderungen mit Codeänderungen
Wenn Sie das Leerzeichen einer riesigen Datei ( Control+ K+ D) umstrukturieren möchten , ist dies in Ordnung. Übernehmen Sie die Formatierungsänderung getrennt von der tatsächlichen logischen Änderung. Gleiches gilt, wenn Sie Funktionen in Dateien verschieben möchten. Übernehmen Sie das Verschieben getrennt von der eigentlichen Bearbeitung.
quelle
Eines der Schlüsselkonzepte, an dem ich immer festhalte, ist das gemeinsame Festschreiben verwandter Codeänderungen . Die Konsequenz ist, keine nicht verwandten Codeänderungen in demselben Commit festzuschreiben . Dies bedeutet, dass Sie nicht zwei Fehler in einem Commit beheben (es sei denn, es handelt sich um denselben Fix), und dass Sie nicht in jedem der beiden Commits einen halben Fehler beheben. Wenn ich einem nicht verwandten Teil des Systems, den ich dann für eine andere Arbeit benötige, eine neue Erweiterung oder etwas hinzufügen muss, lege ich die Erweiterung separat (und zuerst) fest. Die Idee ist, dass jede Änderung, die jemand möglicherweise selbst vornehmen möchte (oder die er selbst zurücksetzen möchte), ein separates Commit sein sollte. Es erspart Ihnen jede Menge Kopfschmerzen, wenn es darum geht, Zusammenführungen durchzuführen oder defekte Funktionen zurückzusetzen.
quelle
Es wurde bereits viel erwähnt, und hier sind noch einige mehr:
Wenn Sie Dateien haben, die Sie nicht in der Quellcodeverwaltung haben möchten (z. B. Konfiguration, kompilierte Dateien usw.), fügen Sie sie der Ignorierliste hinzu . Auf diese Weise bemerken Sie alle Dateien, die Sie vergessen haben, hinzuzufügen, indem Sie immer eine leere Liste von Dateien erwarten, die SVN als unbekannt angezeigt werden.
Fügen Sie ein Post-Commit-Ereignis hinzu, das eine E-Mail an Ihre Entwickler-Mailingliste (oder eine für dieses Ziel spezifische) sendet, die sich auf die festgeschriebene Änderung und im Idealfall auf den Patch dafür bezieht.
Integrieren Sie sich in Ihren Bug-Tracker, sodass Verweise auf Commits in den Bugs / Feature-Anforderungen mit Links zu den Diffs angezeigt werden. Bug-Tracker wie MantisBT unterstützen dies.
Erwägen Sie die Integration mit kontinuierlicher Integration (z. B. CruiseControl.NET ), NAnt for Build und NUnit / VS für Komponententests . Auf diese Weise werden nach dem Einchecken eines Benutzers oder in einem festgelegten Intervall der Code kompiliert, Komponententests ausgeführt und der Entwickler erhält eine Rückmeldung über den Prozess. Dies würde auch den Rest des Teams alarmieren, wenn das Repository defekt ist (dh nicht erstellt wird).
quelle
Nun, die Grundlagen:
quelle
Die Antworten, die die Leute geben, sind großartig. Vieles davon ist im svn-Benutzerdokument für Best Practices für SVN zusammengefasst .
Wiederholen:
quelle
Ich möchte Best Practices zusammenfassen, an die ich mich halte:
Es sollte eine Repository-Struktur geben . Persönlich verwende ich folgende Repository-Struktur:
PA
(Pre-Alpha),A
(Alpha),B
(Beta),AR
(Alpha-Release),BR
(Beta-Release),RC
(Release-Kandidat),ST
(Stable).Sie finden einen Überblick über meine Best Practices für Subversion in Form eines Diagramms, in dem die wichtigsten Prinzipien des von mir verwendeten Ansatzes für das Softwarekonfigurationsmanagement dargestellt sind.
quelle
Eine Sache, die ich als sehr nützlich empfunden habe, ist die Eigenschaft svn: external, dh Sie können Verzeichnisse aus anderen Repositorys in Ihre eigenen verweisen. Es gibt wirklich schöne Möglichkeiten, Ihren Code und Ihre Daten zu organisieren. Einige Beispiele sind:
quelle
Verwenden Sie die Integration in Ihre Bug-Tracking-Software. Wenn Sie Bugzilla verwenden , können Sie es so einrichten, dass Ihr SVN-Kommentar automatisch als Kommentar zum angegebenen Fehler hinzugefügt wird, wenn Ihr Kommentar mit "Bug XXXX" beginnt, einschließlich eines Links zu Ihrer SVN-Weboberfläche zu dieser Revision.
quelle
Erfahren Sie mehr über die Tools und Konventionen für das Verzweigen und Zusammenführen von SVN.
Der beste Weg, mit anderen Teammitgliedern zusammenzuarbeiten, besteht darin, die Arbeit in vollständige Entwicklungsfunktionen / -korrekturen aufzuteilen und dann an einzelnen Änderungen in einer Zweigstelle zu arbeiten. Führen Sie dann die Änderungen wieder in den Hauptzweig / die Hauptleitung ein, wenn Sie fertig / bereit / für die Zusammenführung genehmigt sind.
Auf diese Weise können Einzelpersonen auf ein gemeinsames Ziel hinarbeiten (entweder auf demselben Zweig oder auf getrennten Zweigen), ohne mit anderen Änderungen zusammenzustoßen.
Ihr Kilometerstand kann variieren, und dies kann für nur zwei oder mehr Personen übertrieben sein.
quelle
Es macht es viel einfacher, wenn Sie gute Tools verwenden, die sich gut in SVN integrieren lassen. Diese machen es einfach zu sehen, was geändert wurde, und dann alle oder einen Teil Ihrer Änderungen festzuschreiben und Ihre Arbeitskopie regelmäßig auf die neueste Version in SVN zu aktualisieren.
Ich empfehle Tortoise SVN (wenn Sie Windows verwenden) und Visual SVN (wenn Sie VS verwenden).
Überprüfen Sie auch, ob Sie es so einrichten können, dass Sie bei jeder Festschreibung eine E-Mail oder eine ähnliche Benachrichtigung erhalten (normalerweise auch mit der Festschreibungsnachricht und einer Liste der geänderten Dateien). Dienstleistungen wie CVSDude bieten dies an. Ich finde es hilfreich zu wissen, dass ein Update durchgeführt wurde, und dann eine Vorstellung davon zu haben, was in diesem Update enthalten ist, bevor ich meine Arbeitskopie aktualisiere.
quelle
Neben Verzweigungsrichtlinien et al. (wo eine Größe definitiv nicht für alle passt), sollten Sie gute Commits haben:
quelle
Die goldene Regel für die Quellcodeverwaltung: Früh einchecken, häufig einchecken
Tipps zum Organisieren Ihres Repositorys:
quelle
Wenden Sie sich an Ihr Team, um Änderungen zu erfahren, oder schauen Sie sich den Unterschied zumindest sehr genau an, bevor Sie Zusammenführungskonflikte beheben. Bitten Sie sie, den zusammengeführten Code selbst zu überprüfen, um sicherzustellen, dass ihre Ergänzungen bei der Zusammenführung nicht verloren gegangen sind.
quelle
Eine Sache, die ich gesehen habe, die fehlerhafte Commits reduziert, ist, gute Pre-Commit-Skripte zu haben. Sie können beispielsweise beliebige Komponententests ausführen, bevor die Änderung festgeschrieben wird. Dies führt dazu, dass die Festschreibungen etwas langsam sind. Sie sparen jedoch Zeit, indem Sie vermeiden, jemandem auf die Zehen zu treten und sich entschuldigen zu müssen. Natürlich wird dies viel schwieriger zu handhaben, wenn Sie ein großes Entwicklungsteam und sehr häufige Commits haben.
quelle
Eines der Beispiele für die Integration in die Durchsetzung von Bug-Trackern und Commit-Richtlinien könnten Tracs SVN-Hook-Skripte vor / nach dem Commit sein, die das Commit ablehnen können, wenn die Commit-Nachricht kein Ticket im Bug-Tracker referenziert und Kommentare zu vorhandenen hinzufügt Tickets basierend auf dem Nachrichteninhalt (dh Commit-Nachrichten können so etwas wie "Fixes # 1, # 2 und # 8" enthalten, wobei # 1, # 2, # 8 die Ticketnummern sind).
quelle
Best Practice für die Verwendung von SVN :
Wenn Sie zum ersten Mal ins Büro gekommen sind und Ihr Eclipse- Projekt geöffnet haben, müssen Sie zunächst Ihr Projekt aktualisieren.
Beginnen Sie nach dem Update mit Ihrer Arbeit. Wenn Sie Ihre Codierung abgeschlossen haben, überprüfen Sie ordnungsgemäß, ob Ihre Anwendung ausnahmslos ordnungsgemäß ausgeführt wird. Sobald Sie sicher sind, dass Ihr Code ordnungsgemäß funktioniert, müssen Sie den Code festschreiben.
Hinweis: Während Sie den Code festschreiben, legen Sie ihn nicht direkt fest. Führen Sie eine Synchronisierung mit dem Server durch und überprüfen Sie, welche Daten festgeschrieben werden müssen. Hinweis: Übertragen Sie nicht den gesamten Ordner einmal. Möglicherweise haben Sie einige Änderungen an der Datei für Ihre Anforderung vorgenommen oder einige Dateien in Ihrem lokalen System gelöscht. Die Einstellungen auf dem Server sind jedoch unterschiedlich. Überprüfen Sie also die Dateien einzeln und schreiben Sie den Code fest.
Festschreiben / Aktualisieren von Konfliktdateien nicht direkt.
Wann überschreiben und aktualisieren?
Wenn Sie ziemlich sicher sind, dass Sie keine Ihrer lokalen Änderungen benötigen und die Serverkopie vollständig aktualisieren möchten. Beachten Sie, dass Sie beim Überschreiben und Aktualisieren keine Ihrer lokalen Änderungen erhalten.
Hinweis: Behalten Sie das Projekt nicht länger als einen Tag bei, ohne es zu aktualisieren. Behalten Sie den Code auch nicht für viele Tage bei, ohne sich zu verpflichten.
Kommunizieren Sie, wer alle in derselben Komponente arbeiten, und besprechen Sie, welche Änderungen sie täglich vorgenommen haben.
Übernehmen Sie die Eigenschaften und die Konfigurationsdatei nur, wenn ein Grund vorliegt. Weil die Einstellungen auf einem Server und in der Cloud unterschiedlich sind.
Übertragen Sie keine Zielordner in SVN, sondern nur Quellcode- und Ressourcenordner müssen in einem SVN-Repository verwaltet werden.
Wenn Sie Ihren Code verloren haben, geraten Sie nicht in Panik! Sie können die frühere Kopie aus dem SVN-Verlauf zurückerhalten.
Checken Sie das Projekt nicht an mehreren Stellen Ihrer Festplatte aus. Kasse es an einem Ort und arbeite damit.
quelle
SVN an sich ist ein guter Anfang und einige der anderen Poster haben einige großartige Vorschläge zu Best Practices gemacht.
Das einzige, was ich hinzufügen möchte, ist, dass Sie SVN mit CruiseControl oder TeamCity verbinden sollten, um einen kontinuierlichen Integrationsprozess voranzutreiben. Dadurch werden Build-E-Mails gesendet und alle wissen, wenn jemand den Build abgebrochen hat.
Es wird sehr früh sagen, wer Ihren Prozess verfolgt und wer nicht. Könnte zu Reibereien führen, aber Ihr Team wird auf lange Sicht besser dran sein.
quelle
Präziser Kommentar für jedes Commit
Brechen Sie nicht den (Haupt-) Build!
Commit, sobald sich eine logische Einheit ändert
Vermeiden Sie die Verwendung von Subversion als Backup-Tool
Ein wenig Verzweigung / Verschmelzung wie möglich
.
Weitere Informationen finden Sie in den Best Practices von SVN .
quelle
Arbeiten Sie mit DEV an Zweigen
Community Trunk
Denken Sie daran, dass es für Sie (oder wahrscheinlich für andere) umso einfacher ist, je inkrementeller, modularer, diskreter und prägnanter Sie Ihre Commits ausführen:
quelle
Verwenden Sie dies für die Kommentarvorlage:
[Aufgabe / Geschichte xxx] [Moll / Dur] [Kommentar] [Folgekommentar] [URL zum Fehler]
quelle