SVN Namenskonvention: repository, Zweige, tags
Einfach nur neugierig, was Ihr naming-Konventionen sind für die folgenden:
Repository-name
Filialen
Tags
Jetzt, wir sind beschäftigt die folgenden standards, die mit SVN, aber würde gerne, um ihn zu verbessern:
- Hat jedes Projekt sein eigenes repository
- Jedes repository hat eine Reihe von Verzeichnissen: tags, branches, trunk
- Tags sind unveränderliche Kopien der Baum (release, beta, rc, etc.)
- Zweige sind in der Regel feature-Zweige
- Stamm ist in der Laufenden Entwicklung (quick Ergänzungen, Bugfixes, etc.)
Jetzt, mit dieser sagte, ich bin neugierig, wie jeder ist nicht nur die Handhabung der Benennung Ihrer repositories, sondern auch Ihre tags und Zweige. Zum Beispiel brauchen Sie beschäftigen eine camel-case-Struktur für das Projekt name?
So, wenn Ihr Projekt ist so etwas wie Backyard Baseball for Youngins
wie geht man damit um?
- backyardBaseballForYoungins
- backyard_baseball_for_youngins
- BackyardBaseballForYoungins
- backyardbaseballforyoungins
Scheint ziemlich trivial, aber es ist eine Frage.
Wenn du gehst mit dem feature-branch-Paradigma, wie benennst du deine feature branches? Nachdem das feature selbst im Klartext? Eine Art Versionierung Schema? I. e. sagen Sie, dass Sie möchten, um Funktionalität hinzuzufügen, um die Hinterhof-Baseball-app, die Benutzern erlaubt, Ihre eigenen Statistiken. Was würden Sie Ihrer Branche?
- {repoName}/branches/user-add-Statistik
- {repoName}/branches/userAddStatistics
- {repoName}/branches/user_add_statistics
etc.
Oder:
- {repoName}/branches/1.1.0.1
Wenn Sie gehen, die version, die route, wie Sie korrelieren die Versionsnummern? Es scheint, dass die feature-Zweige würden nicht profitieren viel von einer Versionierung schema, dass 1-Entwickler arbeiten könnte, auf den "Benutzer hinzufügen "Statistik" - Funktionalität, und ein anderer Entwickler arbeiten könnte auf "admin hinzufügen "Statistik" - Funktion. Wie sind diese Filiale Versionen benannt? Sind Sie besser dran als:
- {repoName}/branches/1.1.0.1 - Benutzer hinzufügen, Statistiken
- {repoName}/branches/1.1.0.2 - admin hinzufügen Statistik
Und wenn Sie einmal zusammengeführt in den Kofferraum, der Kofferraum könnte Schrittweite angemessen?
Tags scheinen, wie Sie würde profitieren am meisten von den Versionsnummern.
With, die being said, wie Sie die Korrelation der Versionen für Ihr Projekt (egal ob trunk, branch, tag, etc.) mit SVN? I. e. wie kann man als Entwickler wissen, dass 1.1.1 admin hinzufügen, Statistiken, und Benutzer hinzufügen, Statistiken Funktionalität? Wie sind diese beschreibenden und verlinkt? Es würde Sinn machen für tags zu haben, die release notes in jeden tag, da Sie unveränderlich sind.
Aber, ja, was sind Ihre SVN-Politik der Zukunft an?
InformationsquelleAutor der Frage StephenPAdams | 2010-05-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich die
trunk, tags, branches Modell.
Stamm: sollte immer in eine stabile form. (nicht unbedingt lösbare, aber stabile wie keine compiler-Fehler) habe ich in der Regel machen Sie kleine änderungen und neue features, die klein sind und abgeschlossen werden kann in weniger als einem Tag. Wenn ich entwickeln etwas, dauert mehrere Tage und Eincheckvorgänge würde den Rumpf in einem instabilen Zustand ist, ich erstelle eine branch.
Branchen: sind für feature-Entwicklung, dass sich der Stamm in einen instabilen Zustand. Es wird auch verwendet für "Tests" die neuen Funktionen und Ideen. Ich stellen Sie sicher, einen Stamm auf den Zweig update merge zu halten, die neuesten Entwicklungen im trunk in sync mit meinem Zweig.
tags: sind für Release-oder stabile Version der code, ich würde wollen, um schnell wieder zu. In der Regel verwende ich diese für eine bestimmte version (1.00) von einem Modul oder-Anwendung. Ich versuche nicht, um alle check-ins bis zu den tags. Wenn es gibt Fehler, dann werden diese änderungen sind im Kofferraum und werden dort für die nächste Version. Die einzige Ausnahme die ich mache sind für den Notfall bugs. Dies bedeutet, dass die Tags ordnungsgemäß QA würde und ist Recht stabil.
InformationsquelleAutor der Antwort Jonathan S.
camelCase? Nein, wir setzen nicht irgendwelche Beschränkungen auf Namen, außer, dass die Räume neigen dazu, entmutigt zu sein. Der Inhalt ist was zählt, nicht die Aufmachung. Solange der name klar definiert ist, was es tut, sind wir glücklich.
Ich denke, die größte Veränderung, die Sie vornehmen können, um alle Ihre Projekte in einer einzigen repo auf der obersten Ebene.
Benutzen wir keine Filialen oder tags Verzeichnisse wie wir haben viele Hunderte von Projekten, die jeweils unterteilt sind versioniert Gruppen (das heißt, wir haben eine Basis-Plattform, die versioniert, und eine Menge von plugins, die live unter jeder Basis-version-Nummer)
zB:
Haben wir uns Gedanken darüber machen, dass ein tag-Zweig unter jedem der Modul-Verzeichnisse, aber wir fast immer mit dem head-version, so dass Ihr nicht ein Problem für uns. Wir regelmäßig Zusammenführen der änderungen von der älteren Basis-version Module zur neuen - z.B. eine änderung moduleA für Basis v1, werden die änderungen zusammengeführt werden, in die base v2 ist moduleA. Wir gehen nicht rückwärts, es sei denn notwendig.
Jedes Modul hat eine release-note mit, die beschreiben, die Versionsnummer und die änderungen. Die log-Kommentar hat einige der Beschreibung und die Versionsnummer. Dies macht es sehr einfach zu vorherigen Versionen, ohne zu viel von tag Zweige, die sind eindeutig benannt. Wenn wir beginnen mit tag-Zweige (wurde vorgeschlagen), dann würden wir machen, einen vollständigen Pfad kopieren in das /tags-Verzeichnis), würden wir immer noch fahren Sie auf einem einzelnen tag-Zweig und legen Sie ein log-Kommentar-Kennzeichnung die release-Nummer, wir haben einfach zu viele Module, die Sie zu verwalten als 1 tag-Ordner pro Zweig. Und Nein, wir nehmen Sie keinesfalls Veränderungen an der historischen Revisionen - wenn ein Kunde braucht eine neue Funktionalität, müssen Sie ein upgrade auf die neueste version (das ist nie ein problem, bis Sie ändern Sie die Basis-Plattform-version)
Benutzen wir keine Niederlassungen entweder, wie wir, sind in der Regel auf die head-version des jeweiligen Moduls, wenn wir das tun, müssen Sie einen Zweig für eine große Reihe von änderungen, werden wir den Zweig auf der Basis-Ebene, so würden wir erstellen eine "base v2 - "performance" - Zweig und ast alles. Dies macht es einfach, um der Gruppe eine Menge von änderungen zusammen, wie klappt es so am besten für uns. Verzweigung der einzelnen Module entstehen würden zu viel Unordnung in den repo - da haben wir ein paar hundert, es wäre leicht den überblick verlieren, ob wir bei Ihnen hatten, Verzweigungen pro Modul.
Ja, wir machen änderungen auf dem Stamm, aber das ist ok mit unserer workflow - Dinge nicht bekommen, verpflichtet sich, bis Sie bereit sind zu gehen. Alle änderungen, die vorgenommen wurden, um die älteren base-Versionen sind nur Bugfixes, und wir haben zu viele Module zu verwalten, Sie in einem full-dev-test-release-Zyklus. Wir reparieren, wenn es beweist, dass ein schlechtes Update, wir fix wieder. Wir ändern manchmal dieser Ansatz für größere Entwicklungen und erstellen Sie einen Zweig auf Zweige Ordner (aus der Wurzel). Der Zweig Pfad neu erstellt, den Pfad zum original-Modul (so seine leicht zu sagen, was es ist, und Zusammenführen von hinten ist so einfach wie das ändern /Zweige /Stamm am Anfang des Pfades).
Die einzige Frage, die wir begegnet bin, in diesem system, wenn wir ein Modul in einem web-app-Projekt (redmine). Wir wollten einen einzigen redmine-Projekt für alle Versionen eines Moduls, aber unsere Anordnung war so, dass es war ein bisschen schwierig, eine Ursache für das repository. Wenn wir könnten, zuordnen eines repo-Pfad mit der jeweiligen version im redmine, dann ist diese Einschränkung würde verschwinden.
Es ist nicht unbedingt das beste für alle, und ich würde empfehlen, mit den Zweigen, aber diese funktioniert für uns (teilweise war es die Art, wie wir gearbeitet haben in einem früheren source-control-system, das war "sicher" und nicht-support-branches/Zusammenführen).
InformationsquelleAutor der Antwort gbjbaanb
Habe ich StammFilialentagsund Arbeitsbereiche unter der Wurzel des Projektarchivs.
Alles ist in einem einzigen repository mit Stündliche/tägliche/etc. sicherungen. Alle Schritte wie branching, labeling, das Zusammenführen und das Gebäude sind scripted für Komfort und Stabilität (Skripte überprüfen repository Konsistenz).
Branching - /merging-darf für die zweite Stufe nur Verzeichnisse, und nur vollständig führt, nicht nur von einzelnen Dateien/Verzeichnissen (z.B. Branchen/LDN_FSHCHPS_REL_2010 --> Arbeitsbereiche/WS_345) zum aktivieren der automatischen Zusammenführen und zur Vermeidung von Problemen mit Teilbaum-merge-info (und auch zur Erleichterung der rootcausing der merge-Probleme, wenn Sie geschehen)
InformationsquelleAutor der Antwort bobah
Normalerweise sind Tags verändert werden. Der Grund, warum Sie tag-ein-release ist, so dass Sie anwenden können, bug-fixes, während die Entwicklung weiterhin auf dem Stamm. Natürlich, den selben bug fixes angewandt werden, um den Kofferraum.
Sind wir ein Java-shop, so dass alle unsere Projekte sind mit dem Namen gov.bop.Projekt. 🙂 Subversion funktioniert mit jedem Namen.
Gehen wir mit der generierten Zahl, die durch unser incident-reporting-system. Es erleichtert die Nachvollziehbarkeit.
Wir haben festgestellt, dass JJJJMMTT Termine besser arbeiten über einen langen Zeitraum.
InformationsquelleAutor der Antwort Gilbert Le Blanc