Frage

öfter als ich mag ich zugeben, Menschen zu einem Projekt neu hätte tut nur eine Kasse sie finden fehlt verschiedene Ressourcen, DLL, Einstellungen. Ich möchte in der richtigen Gewohnheit, meine Projekte Kompilation glatt sein, wie aus einer frischen Kasse sein.

Was sind einige Tipps oder Vorschläge, wie meine Projekte zu strukturieren, damit sie nicht Kompilation Fragen auf einem frischen Check-out aus der Versionskontrolle hat?

Ich habe begonnen, ein „Ressourcen“ Ordner halten in meinen Projekten, die alle benötigten DLL-Referenzen in der Quellcodeverwaltung enthalten. Kann jemand ein paar Vorschläge machen?

War es hilfreich?

Lösung

Angenommen, Sie in einer Visual Studio-Umgebung sind, dann sind hier einige Dinge, die Sie nützlich sein könnten, YMMV natürlich und beachten Sie, dass wir Subversion verwenden, aber jedes VCS-Tool sollte tun ...

  • Legen Sie alle (oder so viele wie möglich) Abhängigkeiten unter Versionskontrolle und verweisen diese in Ihren Projekten. Wir verwenden Subversion Äußerlichkeiten diese zu verwalten.
  • Sie keine Versionskontrolle Standardausgabeverzeichnisse (bin, obj), das heißt Verwendung svn: ignore
  • Ebenso ignorieren Versionskontrolle Benutzer Elemente (* .user, * .suo)
  • Sie auch nicht die Versionskontrolle von Konfigurationsdateien (App | Web.config) stattdessen eine App.default.config erstellen und in Ihren Projekten Before Aufgabe kopieren Sie diese Datei in App.config. Auf diese Weise können Sie mithilfe von RegEx und Token Setup-Compilations pro Entwickler oder bauen Server Lust bekommen, es ermöglicht Ihnen auch alle vorhandenen App.config-Dateien zu löschen, die auf CI eine unberührte Build jedes Mal, um sicherzustellen, baut. Auf diese Weise können auch mit Konfigurationen vertrödeln Entwickler ohne alle anderen, bis sie zu stören, die bereit sind, das heißt Update App.default.config.
  • Versionskontrolle alles andere:)
  • Wenn Sie die Versionskontrolle Binärdateien benötigen (MSI, DLL-Ausgang, usw.) als Ergebnis Ihrer Zusammenstellung, in der Afterbuild Zielprojekt (wixproj, usw.), um die Ausgabe in ein anderes Verzeichnis kopieren, die unter Versionskontrolle ist. Ein Tipp Subversion ist, dass Sie können hinzufügen / commit zu einem svn:. Externen Verzeichnis, das Sie Bibliotheken schieben können, usw., um Projekt, das sie verweisen

letzten Tipp - Nachdem Sie eine saubere Kasse gemacht haben und haben eine erfolgreiche Kompilierung, um zu sehen, ob es irgendwelche Änderungen in Ihrer Arbeitskopie sind, z.B. TortoiseSVN -> Auf Änderungen prüfen. Wenn Sie Änderungen erkannt haben, dann müssen diese Dateien wahrscheinlich ignoriert werden.

Andere Tipps

Finden Sie einen älteren Computer, der nicht verwendet wird, und legen Sie es für die automatische up „Roll baut“:

  1. Warten Sie, bis jemand in einer Änderung
  2. prüft
  3. Update auf die neueste Version aller Dateien.
  4. Reinigen Sie alle Nicht-Source-Control-Dateien (make clean nicht genug ist - scannen für Schutt und entfernen Sie sie)
  5. Erstellen.
  6. Ausführen von Unit-Tests.
  7. Einmal täglich speichern Binärdateien von einem erfolgreichen Lauf. Nennen Sie es den „offiziellen Build“ für den Tag.

Wenn die Erstellung oder Tests fehlschlagen, senden E-Mail mit dem Fehler. Fügen Sie die Liste der Änderungen, die 2 in # abgeholt wurden.

Wenn Sie wirklich, wirklich nicht eine Maschine finden, tun Sie es in einer virtuellen Maschine.

Tools wie nmaven mit Abhängigkeitsproblemen helfen können, (Obwohl Sie das haben könnte aussehen java maven docs für info ....)

Continuous-Integration-Tools wie CruiseControl- wiederholt Check-out und bauen Sie Ihre Anwendung nach jedem Check-in, der alarmieren Sie checkins den build ... auch brechen, können sie Ihr Gerät-Tests durchführen, und warnt Sie damit auf alle von Ihrem checkin verursacht Regressionen auch ...

  

Kann jemand ein paar Vorschläge machen?

  1. die Dateien halten, die Sie bauen müssen, an einem Ort (ein Verzeichnis und dessen Unterverzeichnissen) ... die meisten Versionskontrollsysteme nennen dies Ihr „Arbeitsverzeichnis“
  2. Ihre Versionskontrollsoftware hat einen Befehl, um die Unterschiede zwischen aufzulisten, was in Ihrem Arbeitsverzeichnis ist und was unter Versionskontrolle ... diese „Differenz“ enthält Dateien, die im Arbeitsverzeichnis vorhanden sind und welche nicht unter Versionskontrolle
  3. Stellen Sie Ihr Versionskontrollsoftware (aus der Liste für Schritt angezeigt 2.) Ausschließen von Dateien, deren Typ Sie nicht möchten, speichern, ... zum Beispiel, möchten Sie vielleicht nur Quellcode speichern und *.obj ausschließen und so auf ... ohne diese Dateitypen bedeutet, dass, wenn Sie Schritt 2 die Liste der Unterschiede laufen nicht mit Dateien überfüllt ist, die Sie nicht zu speichern beabsichtigen
  4. Betrachten wir eine Maschine zu bauen, die, die automatisch tut Check-out-and-Builds (und welche E-Mails Sie, wenn überhaupt die 'Build ist gebrochen')

Debian Linux hat ein wirklich genial Tool namens pbuilder , die ein Bild von einem frisch installierten System erstellt und versucht dann, den Code zu bauen. Es funktioniert nur mit dem Debian-Paketsystem, aber man konnte die Ideen stehlen, die wirklich gut sind.

Automate Build aus einer chroot-Umgebung oder eine virtuelle Maschine, eine neue Installation aussieht. Ihr Build-Skript wird dann den DLLs installieren und so weiter. Oder Ihr configure die fehlenden Abhängigkeiten aufzählen (alle von ihnen, nicht nur die erste).

Es ist 01.00 Uhr und ich bin klingender inkohärent, aber zwei Ideen sind von zentraler Bedeutung:

  • Haben Sie eine virtuelle Maschine oder ein chroot-Verzeichnis, das ein leeres System nachahmen kann. In diesen Tagen eine virtuelle Maschine ist wahrscheinlich am einfachsten.

  • Ihr Build-System Tweak, bis es automatisch überprüft und baut auf der virtuellen Maschine --- oder sonst beschwert sich über das, was fehlt.

An diesem Punkt können Sie den Prozess Teil eines automatisierten Nightly Build machen, und du wirst ein glücklicher Mensch sein: -)

Alle Ressourcen / DLLs / Einstellungen sollten zusammen mit dem Quellcode in der Versionskontrolle überprüft werden.

Sie sollten ebenso mit dem Quellcode etikettiert und behandelt werden, mit dem Sie diese Ressourcen gegen die Quelle korrelieren können und die Source-Code / resources / Einstellungen als eine Einheit behandelt werden.

In meiner Firma verwenden wir Rational Clearcase. Alles wird in der Quellcodeverwaltung geprüft, mit Ausnahme der erzeugten Quellcodedateien (zum Beispiel CPP und .h aus dem MIDL-Compiler erzeugen Dateien). Aus diesem Grund sind die meisten Builds ziemlich glatt gehen.

Sie müssen auch sicherstellen, dass Ihre Abhängigkeiten richtig eingerichtet werden, so dass, wenn eine Quelldatei alle abhängigen Bibliotheken neu gebaut geändert wird, wird.

Sie können eine umfassende Checkliste aufbauen, die Sie vor beraten jeden Check-in -. Aber das wäre zeitraubend und fehleranfällig sein (über mehrere Entwickler vor allem nicht jeder die Persönlichkeitsmerkmale hat eine Checkliste genau jedes Mal folgen)

Verwenden Sie stattdessen eine einfache Continuous Integration Server einrichten - CruiseControl.Net ist Open Source; Teamcity von JetBrains ist kostenlos -., der prüft, die jedes Mal, wenn ein Check durchgeführt wird Arbeit baut

Auf diese Weise wissen Sie sicher - anstatt Folgern Dinge funktionieren, weil die Checkliste gefolgt

.

SCons ist ein weiteres Werkzeug, das plattformübergreifende arbeitet und Ihre Abhängigkeiten hilft bei der Verwaltung. Ähnlich wie GNU make in der Sie haben eine „scons Datei / script“ - und die Tatsache, dass es Python nutzt gibt Ihnen viel Flexibilität.

http://www.scons.org/

(ich habe nichts w / SCons zu tun, wir nutzen es nur)

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