Soll der Festschreibungsverlauf verwendet werden, um Entwicklern wichtige Informationen zu übermitteln?


94

Während einer Besprechung zum Rollback eines SDK von Drittanbietern aus der neuesten Version wurde festgestellt, dass unsere Entwickler bereits im Festschreibungsverlauf darauf hingewiesen haben, dass die neueste Version nicht verwendet werden sollte.

Einige Entwickler argumentierten, dass dies eine schlechte Praxis sei und stattdessen entweder in der Quelldatei (dh // Don't upgrade SDK Version x.y.z, see ticket 1234) oder in einer READMEDatei auf Projektebene hätte vermerkt werden müssen . Andere argumentierten, dass der Commit-Verlauf Teil der Projektdokumentation ist und ein akzeptabler Ort für solche Informationen ist, da wir ihn sowieso alle lesen sollten.

Soll der Festschreibungsverlauf verwendet werden, um wichtige Informationen an andere Entwickler weiterzuleiten, oder sollten diese Informationen an einen anderen Speicherort kopiert werden, z. B. in ein Projekt READMEoder in Kommentare in der entsprechenden Quelldatei?


60
Es hört sich so an, als hätte Ihr Projekt ernsthafte Kommunikationsprobleme.
Zerb

82
Benötigen Sie neue Mitarbeiter, um die gesamte Commit-Historie durchzugehen?
Steven Evers

3
Neue Mitarbeiter sollten sich nicht durch die Codebasis wälzen und Abhängigkeiten ändern, ohne dass dies einer bestimmten Anweisung bedarf.
Midnotion

28
@Midnotion Irgendwo auf dem Weg vom neuen Mitarbeiter zum Hauptentwickler nehmen Sie sich Zeit, um die gesamte Commit-Historie durchzugehen? Faszinierend.
Nathan Cooper

6
Das macht es immer noch nicht zu einer guten Idee, wichtige Informationen ausschließlich in den Commit-Verlauf aufzunehmen.
17 von 26

Antworten:


143

Wenn ich ein Upgrade auf eine neuere Version eines SDK eines Drittanbieters durchführen wollte, war der letzte Punkt, den ich suchen würde, in der Geschichte des Versionsverwaltungssystems .

Wenn Ihr Produkt die Version 2.0 eines SDK verwendet und jemand an einem Upgrade auf 3.0 interessiert ist, ist es meines Erachtens nicht vernünftig zu glauben, dass er in Ihrem Versionsverwaltungssystem rechtzeitig nach hinten schauen sollte, um festzustellen, dass dies keine gute Idee ist.

Hier haben wir ein Team-Wiki, das eine Handvoll Seiten mit interessanten Informationen enthält, die jeder Entwickler liest (Kodierungskonventionen, wie man eine Entwicklungsumgebung einrichtet, um das Produkt zu erstellen, welche Sachen von Drittanbietern Sie installieren müssen usw.). Dies ist die Art von Ort, an der eine Warnung vor dem Upgrade einer Drittanbieter-Bibliothek angezeigt wird.


52
In der Tat ist der Festschreibungsverlauf der Verlauf des Projekts. Genauso dumm wäre es, wichtige Informationen in der Geschichte der Wiki-Änderungen zu haben und nicht auf der eigentlichen Seite. Die Historie (ob Code oder Wiki) dient als Referenz für das, was zuvor passiert ist, und nicht für das, was jetzt geschehen soll.
Ordentliche

48
Wenn es für das fiktive SDK möglich ist, würde ich einen Komponententest hinzufügen, der speziell für das Bestehen unter V2 und das Nichtbestehen unter V3 entwickelt wurde, mit einer expliziten Aussage, die den Grund angibt, kein Upgrade auf V3 durchzuführen. Der Festschreibungsverlauf ist ein guter Ort, um anzugeben, warum Sie diese Änderung für Codeüberprüfer vornehmen und nicht, um Best Practices zu dokumentieren.
Klors

3
@Klors Solange Sie sich nicht auf die umständlichsten Definitionen von Komponententests beschränken und andere Arten automatisierter Tests ablehnen, ein Test, der darauf basiert, das Dateisystem / etc auf den Bibliotheksnamen zu überprüfen (sofern die Version codiert ist) in it) oder ein Hash / eine Prüfsumme der Datei selbst könnte verwendet werden, um jeden, der die Bibliothek aktualisieren möchte, mit einer roten Flagge zu markieren, selbst wenn der Fehler der neuen Versionen in einem Test schwierig / unmöglich zu erfassen ist. (zB Multithreaded Race-Bedingungen)
Dan Neely

18
@Klors Ich dachte das Gleiche, aber meiner Meinung nach sollte der Komponententest den Grund für die Verwendung von v2 über v3 aufzeigen. Wenn der Komponententest mit v4 bestanden wird, gibt es keinen Komponententest, der v2 für no erfordert Grund.
Matthew

9
Ein weiterer Grund, den Festschreibungsverlauf nicht zu verwenden: Der Festschreibungsverlauf ist ein permanenter Datensatz. Wenn der Grund für das Nicht-Upgrade nicht mehr vorhanden ist, enthält der Festschreibungsverlauf weiterhin die Warnung, dass kein Upgrade durchgeführt werden soll, was verwirrend sein kann. Sie benötigen einen Ort, an dem die Anforderungslisten auf dem neuesten Stand sind, damit Entwickler nicht noch einmal prüfen müssen, ob die Dinge noch relevant sind.
Jules

69

Es sollte im Festschreibungsverlauf vermerkt werden, aber der absolut beste Ort, um die Benachrichtigung zu platzieren, ist der Ort, an dem Sie die Abhängigkeit definieren. Wenn Sie zum Beispiel eine maven .pom-Datei haben, die Ihre Artefaktabhängigkeiten deklariert, würde ich Folgendes tun:

<!-- Do not change the SDK version because it causes Foo crashes. For more detail see Issue #123 -->

Direkt über Ihrer <dependency>Linie.

Problem Nr. 123 enthält Details zu den Abstürzen, der von Ihnen aktualisierten Version, die die Abstürze verursacht hat, und sollte dann möglicherweise erneut zum Backlog hinzugefügt werden, damit Sie es später erneut überprüfen können. Möglicherweise gibt es eine neuere Version, mit der das Problem behoben werden kann. Entweder automatisch durch Bearbeiten des Tickets oder manuell per E-Mail an das Team, um es über das aktuelle Problem zu informieren, und indem es sich im Tracker befindet, können die Benutzer es später wiederfinden.

Der Grund für die Abhängigkeitsdeklaration ist, dass jeder, der die Version ändern möchte, sie in dem Moment sieht, in dem er sie ändern möchte, und versteht, warum er dies nicht tun sollte.

Ich würde im Quellcode keinen Kommentar abgeben, da ich mir leicht vorstellen kann, dass jemand Ihre Abhängigkeiten überprüft und mit dem Upgrade beginnt. Sie sollten nicht die Codebasis nach jedem TODO-Kommentar durchsuchen müssen, um dies zu tun.

Durch das Verknüpfen mit dem Issue-Ticket kann ein neugieriger Entwickler wissen, wie es fehlgeschlagen ist, und es möglicherweise später erneut aufrufen. Ohne das könnte es ziemlich statisch werden und nie wieder aktualisiert werden.


11
Ich stimme zu: Der beste Ort für wichtige Informationen ist "an so vielen Orten wie möglich". Vielleicht die pom.xmloder eine äquivalente Projektdatei, eine Readme-Datei usw., aber der Commit-Verlauf ist immer noch gut. Wenn ich eine Bibliothek aktualisieren möchte, überprüfe ich möglicherweise den Verlauf der vorhandenen Version, um festzustellen, wann sie aktualisiert wurde, sowie Hinweise zu Problemen, die der Committer hatte. Aber ich würde nicht in der Geschichte stöbern wollen, um alle Unterlagen zu sammeln. Es ist eine gute ergänzende Quelle.

35

Kritische und nicht intuitive Informationen sollten dokumentiert werden, auf die die Menschen bei der Betrachtung der Informationen achten werden.

Für die Teams und Projekte, an denen ich gearbeitet habe, würde ich das Rollback mit dem Kommentar bestätigen, warum die neue Version fehlgeschlagen ist. Ich würde eine Rückstandsgeschichte hinzufügen, um das Upgrade erneut zu versuchen, wenn die neue Version repariert wird. Ich würde Kommentare zu dem Build-System / den Build-Skripten hinzufügen, in denen die Bibliothek verlinkt ist.

Das Rollback wird zukünftigen Entwicklern einen Kontext bieten, wenn sie in die Projektgeschichte blicken. Die Rückstandsgeschichte hält die Notwendigkeit für dieses Upgrade als aktiven Teil des Projekts aufrecht. Die Buildsystem-Kommentare sind genau dort, wo die Änderungen sein müssen, wenn die Bibliothek endgültig aktualisiert wird.

Ich würde es nicht im Code kommentieren und ich würde es nicht zu einer README-Datei hinzufügen. Entwickler, die über ein Upgrade nachdenken, werden sich diese Teile nicht ansehen. Wenn Sie es dort hinzufügen, müssen Sie es entfernen, sobald das Problem mit der Bibliothek behoben und ein Upgrade durchgeführt wurde. Dieser Schritt wird oft vergessen, was zu Notizen führt, die für das Projekt kontraproduktiv sind.


Wenn Ihr Projekt ein anderes Setup oder einen anderen Ablauf aufweist, ist Ihre Antwort möglicherweise anders. Ich denke, der Schlüssel ist, die Informationen richtig zu stellen, wo der Entwickler sie sehen wird, wenn er die Arbeit für das Upgrade erledigt. Auf diese Weise wird der Entwickler die Zeit für das Upgrade nicht sehen und anhalten, und wenn die Zeit richtig ist, wird sie vom Entwickler gesehen und die Notiz entfernt, damit zukünftige Entwickler nicht verwirrt werden.


7
Ja, der Kommentar muss "im Pfad" der Änderung platziert werden. Daher ist es technisch unmöglich, die Aktion auszuführen, ohne die Warnung zu sehen. Es ist viel wie Sicherheitskontrollen.
Dss539

+1 für den Vorschlag, eine Story / ein Ticket für das Upgrade in Ihrem Issue-Tracker zu erstellen, setzen Sie die Option auf "Angehalten" und erklären Sie, warum dies noch nicht möglich ist. Die issue tracker ist ein Ort , den Sie wirklich kann vernünftigerweise Menschen vor der Arbeit an etwas suchen erfordern.
Andrew Spencer

+1 Zitiert Jeff Attwood (obwohl er über "Benutzer" spricht): "Wenn Sie das nächste Mal [X] entwerfen, denken Sie an [Client] Myopie. Sie werden vielleicht überrascht sein, wie kurzsichtig Ihre [Clients] sein können. Denken Sie lange und gründlich darüber nach, Dinge direkt davor zu platzieren, wo sie nicht nur sichtbar, sondern unvermeidlich sind. Andernfalls könnten sie überhaupt nicht gesehen werden. " blog.codinghorror.com/treating-user-myopia
heltonbiker

17

Ich wollte Matthews Kommentar mehr Aufmerksamkeit schenken, indem ich seine wichtige Idee in einer Antwort hervorhob. Es gibt einen Grund, warum Sie Ihr SDK nicht aktualisieren möchten, und dieser Grund sollte in einem Komponententest erfasst werden. Keine Überprüfung auf eine Revisionsnummer, sondern der eigentliche Grund.

Angenommen, in der neuen Version ist ein Fehler aufgetreten. Schreiben Sie einen Komponententest, der nach diesem Fehler sucht. Wenn sie diesen Fehler später im SDK beheben, erfolgt das Upgrade reibungslos. Wenn eine inkompatible API-Änderung vorliegt, schreiben Sie einen Test, der überprüft, ob Ihr Code die neue API oder das SDK die alte API unterstützt. Das ist eher ein Integrationstest als ein Komponententest, sollte aber dennoch machbar sein.

Mein Unternehmen generiert mehr als 50 Commits pro Tag und wir sind nicht gerade riesig. Selbst wenn jeder Entwickler jede einzelne Commit-Nachricht liest, was offen gesagt nicht der Fall ist, liegt der Grund dafür, dass wir einen aufgezeichneten Commit-Verlauf benötigen, darin, dass sich die Leute nicht daran erinnern können. Und die Leute gehen nicht zurück und lesen die Geschichte später, es sei denn, es gibt ein Problem. Und sie haben keinen Grund, ein Problem bei einem Upgrade zu vermuten, das, soweit sie wissen, noch nicht aufgetreten ist.

Senden Sie auf jeden Fall eine E-Mail, um Doppelarbeit in naher Zukunft zu vermeiden, und notieren Sie sie in Ihren Build-Skripten und in einer README-Datei oder einer Errata. Vor allem, wenn das Problem mit der neuen Version subtil und zeitaufwendig ist, müssen Sie eine Möglichkeit finden, dies offensichtlich zu machen. Das bedeutet einen Unit Test.


1
Dies ist die einzig wahre Antwort. Das Erfassen des Fehlers in einem Komponententest verhindert, dass ein fehlerhaftes Upgrade durchgeführt wird. Zeitraum.
Dirk Bester

15

Ich fasse die Frage wie folgt zusammen: "Soll ich kritische Informationen, die ich entdecke, dem Rest des Teams nur per Festschreibungsnachricht mitteilen?" Weil ich denke, das macht es offensichtlich, dass du es nicht tun solltest. Ich versuche sehr viel zu kommunizieren (dies ist etwas, in das sich die meisten Entwicklungsteams meiner Erfahrung nach aktiv einmischen müssen) und ich tue auf jeden Fall alles, um zu vermeiden, dass Fallstricke entstehen oder sie lügen.

Wenn die Kette von Aktionen, die mich zu einer solchen Entdeckung führten, durch ein Ticket ausgelöst würde, würde ich das Ticket aktualisieren (und sicherstellen, dass die Personen, die dies wissen sollten, über Sichtbarkeit verfügen), ich würde es wahrscheinlich von Angesicht zu Angesicht erwähnen (in der Hoffnung) um zumindest jemanden mit dem nervenden Gefühl zu hinterlassen, dass "Gee, ich denke Damon hat etwas über das Aktualisieren gesagt"), und ich würde natürlich einen Kommentar im Code hinterlassen, an dem Punkt, an dem das SDK enthalten war, damit möglicherweise niemand aktualisieren konnte es, ohne eine Chance zu haben, es zu sehen. Ich könnte sehen, ob ich es auch irgendwo in unserem Entwickler-Wiki unterbringen könnte, obwohl dies mehr mit Blick auf zukünftige Einstellungen gemacht wird, nicht auf das aktuelle Team.

Es dauert nur ein paar Minuten länger, als es wahrscheinlich gedauert hat, um das Problem zu entdecken. Ich würde mich mit Sicherheit nicht für eines der am wenigsten verwendeten, signalarmen Teile unserer Dokumentation entscheiden und belasse es dabei.


4
+1 Das eigentliche Schlüsselwort ist nur . Es schadet sicherlich nicht, wenn die Informationen zusätzlich zu anderen, besser geeigneten Stellen in einer Festschreibungsnachricht gespeichert werden . Es traf das OP, da das Festschreibungsprotokoll die einzige verfügbare Dokumentation war.
JensG

13

Es sollte sich in der Commit-Historie befinden, aber nicht nur in der Commit-Historie. Stellen Sie sich für einen Moment vor, Sie würden einen neuen Entwickler einstellen. Erwarten Sie, dass der neue Entwickler in den letzten 10 Jahren Ihres Projekts jede Commit-Nachricht liest, da einige davon für das Verständnis Ihrer Codebasis von entscheidender Bedeutung sind?

Zweitens, sagen Sie, dass sich die Situation, aber nicht der Code ändert. Führen Sie "Dokumentations" -Commits durch, damit Sie Commit-Nachrichten hinzufügen können.


11

Ich bin mir nicht sicher, wie Ihr Team kommuniziert, aber ich bin der Meinung, dass der effektivste Weg, dies zu sagen, darin besteht, zuerst eine E-Mail an die E-Mail-Gruppe des Teams zu senden, die als "DRINGEND" gekennzeichnet ist und den Text enthält

Leute, wir können SDK v xyz nicht verwenden, da es den Foo-Puffer zum Überlaufen bringt und der Bar-Dienst abstürzt. Bleib bei Version xyy

Das haben wir hier getan und es ist der zuverlässigste Weg, um die Botschaft zu verbreiten. Wenn Sie wirklich pingelig sein möchten (und wenn Ihr E-Mail-System dies zulässt), fordern Sie eine "Lesebestätigung" in der E-Mail an.

Sobald Sie dem gesamten Team Bescheid gegeben haben, sollten Sie eine detailliertere Dokumentation in ein Team-Wiki stellen. Dies hängt davon ab, wie Sie Ihre Dokumentation strukturieren. Wenn Sie einen Abschnitt speziell für die Abhängigkeiten und Anforderungen Ihrer Anwendungen haben, ist dies ein guter Ort, um ihn hinzuzufügen.

Ein zusätzlicher Ort, um diese Art von Problem zu dokumentieren, ist möglicherweise der Quellcode selbst, obwohl dies möglicherweise nicht immer funktioniert. Wenn SDK version ...nur an einer oder zwei offensichtlichen Stellen darauf verwiesen wird, können Sie einen Hinweis hinzufügen, dass keine Aktualisierung erfolgt.

Der Dateiversionsverlauf in der Quellcodeverwaltung kann sehr lang sein und je nach Entwickler mehrere Einträge pro Tag enthalten. Jemand, der seit einer Woche im Urlaub ist, hat möglicherweise keine Zeit, die Commit-Geschichte einer Woche zu lesen. Die README-Datei ist ein besserer Ort, da sie etwas zentraler ist und die Leute eher dazu neigen, sie zu lesen, aber Sie können nicht sicherstellen, dass jeder die README-Datei tatsächlich liest . Nun, ich nehme an, sie könnten, wenn sie sehen, dass es geändert wurde ...


4
Ich mag die Idee der E-Mail-Gruppe. Zu viele Orte, an denen ich gearbeitet habe, hängen von individuellen Adressen ab und Dinge werden nicht an neue Mitglieder weitergegeben.
JeffO

20
Was passiert, wenn jemand neues in Ihr Team kommt? Wer ist dafür verantwortlich, ihnen diese Art von pseudoinstitutionellem Wissen zu vermitteln?
ABMagil

3
@ABMagil: Die Informationen gehen in ein Wiki. Entwickler, die neu im Team sind, werden in der Regel auf einigen Einführungsseiten von dort aus gestartet. Dann kommen sie zu bestimmten Personen (die Zeit zur Verfügung gestellt haben, um dem neuen Entwickler zu helfen), wenn sie bestimmte Fragen haben (und das tun sie immer). Für uns würde es wahrscheinlich im "Developer Setup Guide for ApplicationX" enden, NOTE: Do not use SDK vers. x.y.z because...aber die anfängliche Kommunikation sollte eine E-Mail sein.
FrustratedWithFormsDesigner

16
-1 E-Mails funktionieren nicht gut als Dokumentation
BlueRaja - Danny Pflughoeft

6
@ BlueRaja-DannyPflughoeft: E-Mail bietet eine einfache und benutzerfreundliche Methode, mit der jeder im Team sofort informiert wird, dass bei der Verwendung einer bestimmten Version einer bestimmten Bibliothek ein Problem festgestellt wurde und diese Version nicht verwendet werden sollte. Wie bereits erwähnt, erfolgt die Langzeitdokumentation am besten im Wiki eines Teams oder in einer anderen Art von Wissensdatenbank.
FrustratedWithFormsDesigner

5

So etwas hätte in den Commit-Kommentaren stehen sollen, aber es wird davon profitieren, wenn man sich auch an anderen Orten aufhält.

Wer sich für ein Upgrade entscheidet, muss die Fakten haben. Diese Person lebt möglicherweise nicht in der Quellcodeverwaltung. Was wäre, wenn jemand über dieses Problem auf SO gelesen und es nie in die Codebasis gestellt hätte?

Es muss eine Art Dokument über dieses SDK von Drittanbietern geben.

  • Welches Problem löst es?
  • Warum wurde dieser ausgewählt?
  • Welche Überlegungen müssen angestellt werden: Versionen, Upgrades, Tests usw.
  • Wer trifft diese Entscheidung?

Sie haben einen Fall, in dem so etwas in die Versionskontrolle eingedrungen ist, und Sie sollten jedem empfehlen, diese Informationen so oft wie möglich zu verwenden. Nur Ihr Team kann entscheiden, wo jemand eine Suche in einer Dokumentation, Quellcodeverwaltung oder einem Bug-Tracker durchführt, um so viele Informationen wie möglich zum Thema zu erhalten. Andernfalls vergisst du, dass es sowieso jemand tut, und du wirst glücklich sein, wenn es jemandem im Gedächtnis stört und ihn schnell wieder zurückrollt.


2

Die Geschichte ist ein großartiger Ort, um Daten für einen Leser bereitzustellen, der sie bewusst sucht, und hat ein allgemeines Gefühl dafür, wo sie sich befinden sollten. Es ist ein sehr schlechter Ort, um Daten zu speichern, die einem Benutzer angeboten werden müssen, anstatt nach ihnen zu suchen.

Historien sind sehr große Textkörper mit relativ unsortiertem Text. Sie sind normalerweise dazu gedacht, einem Entwickler detaillierte Informationen darüber zu liefern, was sich geändert hat und warum es geändert wurde. Dies kann eine Informationsüberflutung sein, es sei denn, man weiß, wonach sie suchen.

Wenn ein Benutzer nicht weiß, wonach er sucht, werden die Informationen schnell in Hunderten von Festschreibungsprotokollen gespeichert, und er hat kein Werkzeug, um den Informationsstapel vor sich zu beschneiden.


Das liest sich eher wie ein Kommentar als eine Antwort. Siehe: So wird geantwortet
Mücke

Guter Punkt, ich habe es erweitert. Hoffentlich erfüllt dies die Kriterien von StackExchange besser.
Cort Ammon

Ich denke, diese Antwort spricht das Thema der Frage am besten an. Commit-Verlauf eignet sich zum Speichern von Informationen, wenn eine Person weiß, dass sie nach einer Notiz suchen sollte. Wenn es keinen Grund gibt, die 'Schuld' für eine bestimmte Zeile zu untersuchen, wie zum Beispiel die Aufnahme eines SDK, wird diese Dokumentation nicht gelesen.
Seth Battin

1

Ich interpretiere diese Situation als zwei grundlegende Probleme, möglicherweise drei.

  • Ein unerwünschtes SDK-Upgrade hat es zur Quelle gemacht, wo es sich negativ auf das Produkt auswirken kann.
  • Aus der Frage: Der Mitwirkende, der das unerwünschte Upgrade durchgeführt hat, wusste nichts über eine vorherige, spezifische Entscheidung, kein Upgrade durchzuführen.

Die erste davon ist meiner Meinung nach die schwerwiegendste. Wenn ein unerwünschtes SDK-Upgrade in den Code eingefügt werden kann, können auch andere Probleme auftreten.

Jemand schlug vor, einen Komponententestfall hinzuzufügen, der fehlschlägt, wenn das Upgrade erkannt wird. Ich glaube, dass dies ein gefährlicher Weg ist, der mit der Zeit zu einem Lavastrom führt . Es scheint unvermeidlich, dass das SDK irgendwann in der Zukunft aktualisiert wird, um neue Funktionen oder Bugfixes einzuführen, oder weil die alte Version nicht mehr unterstützt wird. Stellen Sie sich das Kratzen des Kopfes vor, vielleicht sogar Argumente, die auftreten, wenn ein solcher Unit-Test dann fehlschlägt.

Ich denke, die allgemeinste Lösung ist die Anpassung des Entwicklungsprozesses. Verwenden Sie für Git den Pull-Request- Prozess. Verwenden Sie für Subversion und ältere Tools die Optionen "branches" und "diff". Aber haben Sie einen Prozess, der es den Senior-Entwicklern ermöglicht, diese Art von Problemen zu erkennen, bevor sie es in die Codebasis schaffen und andere Entwickler betreffen.

Wenn der Pull-Anforderungsprozess in Ihrer Situation verwendet worden wäre und wenn jede Pull-Anforderung eng und spezifisch wäre, wäre nicht viel Zeit verschwendet worden. Eine Pull-Anforderung zum Aktualisieren des SDK wurde gesendet und mit dem Hinweis abgelehnt, dass das Upgrade nicht erwünscht ist. Kein anderer wäre betroffen gewesen, und das SDK-Upgrade müsste jetzt nicht zurückgesetzt werden.

Aber um die ursprüngliche Frage direkt zu beantworten, stimme ich anderen zu, dass es eine Verschwendung von wertvoller Zeit ist, von allen Entwicklern zu erwarten, dass sie den gesamten Versionsverlauf des Codes, die Versionshinweise usw. vollständig lesen. Was ist los mit einer kurzen Team-E-Mail?

Mögliches drittes Problem: Warum ist das Upgrade überhaupt nicht erwünscht? Mindestens ein Entwickler war der Meinung, dass das Upgrade eine gute Sache sein würde. Es gibt viele gute Gründe, ein Upgrade zu verzögern, aber auch viele schlechte. Achten Sie darauf, den Lavastrom (unnötiger Abwärtskompatibilitätscode) und den Frachtkult ("das können wir nicht aktualisieren, aber ich weiß nicht warum") zu vermeiden.


Während das SDK-Upgrade, bei dem es sich nicht um ein Haupt-, sondern um ein Nebenversions-Upgrade handelte, letztendlich zu dieser Frage führte, taucht diese Argumentation in der Gruppe bereits seit einiger Zeit auf.
rjzii

Warum wurde die Pull-Anfrage abgelehnt? Wie soll die für diese Entscheidung verantwortliche Person die Versionsbeschränkung erkennen (oder sich daran erinnern)?
Ben Voigt

@BenVoigt Nun, entweder wussten die Teamleiter von der Einschränkung, oder niemand erinnerte sich daran, und dies wurde wiederentdeckt, nachdem er auf Probleme gestoßen war. In
beiden Fällen

@wberry: Oder ein anderer leitender Entwickler hat die Pull-Anforderung von der verarbeitet, die über die Versionsbeschränkung Bescheid wusste. Es sei denn, alle Pull-Anforderungen müssen von allen Entwicklern genehmigt werden. Dies scheint ein zweifelhafter Ressourcenaufwand zu sein.
Ben Voigt

0

Ich würde sagen, dass das Hinzufügen dieser Art von Informationen zu einem Festschreibungsverlauf in Ordnung ist, sie jedoch noch ordnungsgemäß dokumentiert werden müssen. Wir haben kürzlich begonnen, confluence (von atlassian) zu verwenden. Durchsuchbar, Sie können bestimmte Seiten als Favoriten usw. festlegen.

Einige andere Tools sind möglicherweise ein öffentliches Notizbuch in Evernote oder Google Docs.


0

Um die Antwort von Karl zu erweitern , würde ich einen Ansatz wählen, der die Einschränkung automatisch im Rahmen des Eincheckvorgangs selbst erzwingt. Sie benötigen etwas, das keine proaktive Aktion im Namen des Entwicklers erfordert, z. B. das Lesen eines Dokuments / eines Wikis / einer README-Datei, und das nicht verdeckt überschrieben werden kann.

In der TFS-Quellcodeverwaltung können Sie benutzerdefinierte Eincheckrichtlinien codieren , die Regeln für das Einchecken ausführen. Beispielsweise könnten Sie eine Richtlinie definieren, die die Version in einer Konfigurationsdatei mit ausstehendem Einchecken auswertet und fehlschlägt, wenn sie nicht gleich xyz ist. Diese Regeln verhindern tatsächlich, dass der Entwickler das Einchecken durchführt, und können eine beschreibende Meldung bereitstellen. Die Richtlinien können überschrieben werden. In diesem Fall können jedoch Warnmeldungen generiert werden.

Eine Alternative könnten Gated-Checkins sein, die mit irgendeiner Form von Komponententest fehlschlagen, bei dem die SDK-Version entweder direkt oder indirekt ausgewertet wird, wie Karl erwähnte.

Ich schätze, diese Antwort ist sehr TFS-zentriert, aber möglicherweise gibt es ähnliche Funktionen in den Versionskontroll- / CI-Systemen, die in Ihrer Situation zutreffen (wenn nicht TFS).

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.