Hinweis: Roundhouse ist "verlassen"
Roundhouse ist ein wunderbares Werkzeug, und ich war für ein paar Jahre einer der Hauptbetreuer, da niemand es beibehalten hatte und es mir einen großen Wert lieferte. Das Projekt gibt es jedoch seit vielen Jahren und hatte begonnen, technische Schulden zu erfassen, mit denen es schwierig war, mit dem Versuch, neue Funktionen oder Refaktor einzuführen, schwer zu arbeiten.
Nachdem ich mir einige Gedanken darüber gemacht hatte, entschied ich mich, von Null zu beginnen und einen Nachfolger für Roundhouse zu erstellen, angefangen von Grund auf modernes .NET (begonnen auf .NET 6 im Jahr 2021, jetzt auf .NET 8), plattformübergreifend, mit Verwendung Die neuesten Bibliotheken der Drittanbieter, um eine Verbindung zu den verschiedenen Datenbanken usw. herzustellen. weise mit einer so großen Abhängigkeit. Log4Net wurde auch durch Serilog ersetzt.
Roundhouse wird natürlich nie verschwinden, und der Quellcode bleibt hier. Aber es gibt vorerst keine aktive Entwicklung von Roundhouse. Ich setze meine Reise mit dem Nachfolger fort, den Rost. Es ist jetzt auf Version 1.6 und als stabil angesehen. Es ist in aktiver Entwicklung.
Bitte gehen Sie dort hin und probieren Sie es aus. Wenn Sie mit Roundhouse fast zu Feature-Vervollständigung sein sollten und wenn Sie etwas finden, das fehlt, stellen Sie bitte ein Problem ein oder senden Sie eine PR.
Projekt Roundhouse - Datenbankänderungsverwaltung richtig gemacht

LIZENZ
Apache 2.0 - Siehe Dokumente Legal (nur legal im Zip -Ordner)
Dokumentation
Wiki
INFO
Überblick
Roundhouse ist ein automatisiertes Datenbank -Bereitstellungssystem (Change Management), mit dem Sie Ihre aktuellen Redewendungen verwenden und viel mehr gewinnen können. Derzeit arbeitet mit Oracle 1 , SQL Server (2000/2005/88/Express), Access 1 , MySQL, SQLite und PostgreSQL. Es gibt zukünftige Pläne für andere Datenbanken.
Es wird versucht, sowohl Wartungsprobleme als auch die einfache Bereitstellung zu lösen. Wir folgen einigen der gleichen Redewendungen wie andere Datenbankverwaltungssysteme (SQL -Skripte), aber wir unterscheiden uns darin, dass wir über zukünftige Wartungsbedenken nachdenken. Wir möchten immer bestimmte Skripte anwenden (alles, was staatsfreundlich wie Funktionen, Ansichten, gespeicherte Prozeduren und Berechtigungen), sodass wir nicht alles in unsere Änderungsskripte einwerfen müssen. Dies versucht, zukünftige Bedenken der Quellenkontrolle zu lösen. Wie süß ist es, wenn Sie die Datenbank entsprechend Ihrer aktuellen Quellangesteuerungsversion versionieren können?
1) Nur auf Vollbild unter Windows, nicht auf plattformübergreifender .NET Core Global Tool-Version.
Erste Schritte mit Roundhouse
Downloads
Sie können Roundhouse von https://github.com/chucknorris/roundhouse/releases herunterladen
Sie können auch eine Kopie vom Build -Server unter https://ci.appveyor.com/project/chucknorris/roundhouse/build/artifacts erhalten.
Edelsteine ( nicht aktualisiert für 0.9.0 und höher, sorry )
Wenn Sie Ruby 1.8.6+ (und Edelsteine 1.3.7+) installiert haben, können Sie schnell die aktuelle Version von Roundhouse an Ihrem Computer erhalten!
- Geben Sie
gem install roundhouse
- Dann können Sie von überall
rh [options]
eingeben
Nuget
Mit Nuget können Sie schnell die aktuelle Veröffentlichung von Roundhouse für Ihre Bewerbung erhalten!
- In Visual Studio Package Manager-Konsolen-Typ
install-package roundhouse
- Es gibt auch
roundhouse.lib
, roundhouse.msbuild
und roundhouse.refreshdatabase
Schokoladig
Schokolade ist wie passend, aber für Fenster! Dies ist eine alternative Methode, um die aktuelle Veröffentlichung von Roundhouse schnell in Ihre Maschine zu bringen!
- Geben Sie
cinst roundhouse
ein - Dann können Sie von überall
rh [options]
eingeben
Dotnet Core Global Tool (Windows, Linux, MacOS usw.)
- Geben Sie
dotnet tool install -g dotnet-roundhouse
- Dann können Sie von überall
rh [options]
eingeben
Weitere Informationen darüber, was im Hintergrund hier passiert, z ~/.dotnet/tools
Ordner.
Auf Ihrer Box benötigen Sie Dotnet Core, damit dies funktioniert. Sie können es hier bekommen: https://dot.net.
Docker: Dotnet Core Global Tool
Sie können Rundhouse problemlos in Ihre vorhandene Docker -Infrastruktur integrieren. Verwenden Sie Docker Compose oder ziehen Sie es einfach direkt ab und führen Sie es aus. Sie sollten wahrscheinlich auf dem Bild aufbauen und gegebenenfalls Ihre eigenen Anpassungen hinzufügen. Das Docker -Bild hat die Dotnet Core Global Tool -Tool -Verteilung von Roundhouse in einem Debian 10 Linux -Basisbild.
- Typ
docker pull dotnetroundhouse/roundhouse
- Typ
docker run dotnetroundhouse/roundhouse
Quelle
Dies ist der beste Weg, um zum Blutungskandel dessen zu gelangen, was wir tun.
- Klonen Sie die Quelle auf Ihre Maschine.
git clone git://github.com/chucknorris/roundhouse.git
- Geben Sie
cd roundhouse
- Geben Sie
git config core.autocrlf false
ein, um die Zeilenende so wie sie sind. - Geben Sie
git status
ein. Sie sollten keine Dateien sehen, die sich ändern können. - Run
build.ps1
. Hinweis: Sie müssen auf dem Pfad Git haben (öffnen Sie eine reguläre Befehlszeile und geben Sie Git ein).
Entwicklung
Das Build -System hat Uppercut verwendet, aber dies wird wahrscheinlich nicht in Zukunft beibehalten. Wir werden versuchen, mehr "Hauptstream" -Bauwerkzeuge wie Msbuild und PowerShell zu standardisieren. Es gibt immer noch einige Überreste von Uppercut im Quellcode (insbesondere im build
-Ordner), aber dies wird wahrscheinlich in naher Zukunft entfernt.
Um mit der Befehlszeile zu arbeiten, benötigen Sie Folgendes auf Ihrem Weg:
- MS Build
- Gitversion (am einfachsten zu leiten Choco Install install gitversion.portable. Sie laufen schokoladen, nicht wahr?)
- Nuget -Befehlszeile (am einfachsten auszuführen, um Choco zu laufen, installieren Sie Nuget.Commandline. Sie laufen schokoladig, nicht wahr?)
WICHTIG
HINWEIS: Wenn Sie sich die Quelle ansehen - bitte führen Sie Build.ps1 aus, bevor Sie die Lösung öffnen. Es extrahiert die für ilmerge-ing mySQL-DLLs benötigten keywords.txt
.
ANFORDERUNGEN
- .NET Framework 4.6.1 (für die volle Framework -Version) oder
- .NET Core 2.1+ (für die Dotnet -Kernverteilung)
- SA -Zugriff auf den SQL -Server (zur Erstellung oder Löschung)
- Ändern Sie den Zugriff auf die Datenbank (für alles andere)
SPENDEN
Spenden akzeptiert - Wenn Sie dieses Produkt gerne verwenden oder Sie in irgendeiner Weise Zeit und Geld gespart haben, sollten Sie eine Spende in Betracht ziehen.
Es hilft, das Produkt aktualisiert zu halten, für das Hosting von Site usw. zu zahlen
Versionshinweise
Bitte beachten Sie die Veröffentlichungen für die vollständigen Release -Protokolle
1.0.2
Bugfix Release
Fehler bei der Verpackung des Dotnet -Core -Tools und eines weiteren Fehlers mit Protokollordnerpfaden und Dickdarm in Verbindungszeichenfolge behoben.
1.0.1
FORTIERUNG MERGE-ERROR FIX
1.0.0
Plattformübergreifende DOTNET-Kern- und Dotnet-Standard ++
Große technologische Freisetzung. Roundhouse läuft jetzt zusätzlich zum guten, alten .NET -Framework auf .NET Core.
0.9.1
Zwei Bugfixes
Nach der Veröffentlichung von 0.9.0 identifizierten Benutzer zwei signifikante Fehler. Diese sind in einer schnellen Punktveröffentlichung festgelegt.
(Siehe Veröffentlichung für die vollständigen Versionshinweise)
0.9.0
Konzentrieren Sie sich auf die Modernisierung von Werkzeugen
Roundhouse hatte einige Nachhole, um Werkzeuge zu machen. Abhängigkeit von .NET 3.5, Alt, nantbasierte Build-Kette usw. Wir beginnen diese Arbeit. Es ist noch nicht getan, sondern auf dem Weg. In Bezug auf nicht viel zu prahlen, aber Rh.exe sollte jetzt in der Lage sein, auf dem Windows Server 2016 aus dem Feld auszuführen, da es nicht mehr von .NET 3.5 abhängt.
(Siehe Veröffentlichung für die vollständigen Versionshinweise)
0,8,8
Machen Sie sich mit Pull -Anfragen ein (siehe Veröffentlichung für die Versionshinweise)
0,8,7
OMG!! Es ist eine Roundhouse -Veröffentlichung !!
Es ist lange her. Ich wollte mich nicht in das Schreiben der perfekten Release -Notizen einstellen, daher fasse ich die letzten vier Jahre der Geschichte der Feststellung zusammen. Ich hoffe, dass niemand, der beigetragen hat, von meinem Versäumnis, Ihren Beitrag ausdrücklich anzuerkennen, beleidigt wird. Ich beabsichtige, in Zukunft besser zu werden.
Verbesserungen
- Die Option zum Ausführen von Skripten außerhalb des Transaktionsbereichs fügte hinzu
- Azure -Verbindungsketten behandeln
- Teilen Sie Dateien, die mit einem Splitter beginnen
- Respekt der Transaktionsflagge
- Verbesserte Protokollierung
- Switch --WarnandignoreOnonetimescriptChanges hinzugefügt
Fehlerbehebungen
- Wiederholen Sie die SQL -Verbindungsfehler nur wieder
- Behandeln Sie die postgres -Verbindung entsorgter Fehler korrekt behandeln
0,8,6
Verbesserungen
- Verwenden Sie Git als offizielles Repository. (mpareja)
- Uppercut auf Version 1.4.2 verbessern. (BERVENTCODER)
- Datenbankwiederherstellung: Verwenden Sie den spezifischen Zeitüberschreitungswert wiederher. (ICetoast - Pull #90)
- Ignorieren Sie Änderungen des EOL -Formats, wenn Sie Skriptänderungen erkennen. (Lahma - Pull #104)
- Fügen Sie SQL -Druckanweisungen in Debug -Protokoll ein. (BERVENTCODER - Ausgabe Nr. 68)
- Einbeziehung der Anweisung, die in Protokoll ausgeführt wird, wenn ein Fehler auftritt. (BERVENTCODER - Ausgabe Nr. 66)
- "RunBeforeup" hinzugefügt, jedes Time -Verzeichnis. (CDREXLE - Pull #51)
- Unterstützen Sie die Auflösungsversion aus einer Textdatei. (Mpareja - Pull #50, Pull #55)
- Fügen Sie die Option hinzu, um das Kopieren von Skripten in das Verzeichnis "itemsRan" auszuschalten. (Lahma - Pull #47)
- WarnononetimescriptChange wird nun veränderte, die einmal geänderten Skripte neu geführt werden. (Biggernoise - Pull #35)
- Aktualisieren Sie NHiberNate auf Version 3.3.2. (Drusellers)
- Aktualisieren Sie Fubucore, HTMLTAGS und Structuremap. (Drusellers)
Fehlerbehebungen
- SQL -Batch -Parser: Schulungskommentare, einzelne Zitate. (Mpareja - Pull #108)
- SQL Batch Parser: Fix Hang. (AndersMalmgren - Pull #100)
- Token -Ersatz: Erhalten Sie den Fall für unvergleichliche Token. (Mpareja - Pull #65)
- SQL -Skripte wurden nicht mehr auf 4000 Zeichen abgeschnitten. (Charoco, BERVENTCODER - Pull #61)
- Oracle: Beheben Sie die Handhabung von Nullwerten. (Rdingwall - Pull #59, Ausgabe Nr. 58)
- Skriptdatei Versioner: Ausnahme beheben. (Michael Kobaly - Ausgabe Nr. 68 auf Google Code)
- Ändern Sie nur den DB -Wiederherstellungsmodus, wenn dies explizit mitgeteilt wird. (BERVENTCODER - Ausgabe Nr. 69 auf Google Code)
- Der Debug -Befehlszeilenschalter wurde behoben. (BERVENTCODER - Ausgabe Nr. 40)
- Stellen Sie sicher, dass die Version 1.2.10 von Log4Net bei der Installation von Nuget -Paketen verwendet wird. (BERVENTCODER - Ausgabe Nr. 41)
- Fix: Verbesserung der Protokollierung von RH -Ausnahmen. (Torkelo - Pull #60)
Veränderungen brechen
- Roundhouse ändert den DB -Wiederherstellungsmodus, wenn die Option
recoverymode
-Modus" explizit auf simple
oder full
eingestellt ist. In der Vergangenheit würde Roundhouse standardmäßig full
ausfallen, aber nur den Wiederherstellungsmodus festlegen, während die Datenbank erstellt/restauriert wird. Wenn Sie auf das Roundhouse angewiesen sind, um die Datenbank für Sie zu erstellen/wiederherzustellen und nicht möchten, dass der Datenbankserver -Standard verwendet wird, sollten Sie die Option für Wiederherstellungsmodus angeben.
0,8,5
- Fix: KeynotFoundException in NhiberNateSessionFactoryBuilder. Weitere Informationen finden Sie unter [Ausgabe 59] (http://code.google.com/p/roundhouse/issues/Detail?id=59). (R361)
- SQLite -Unterstützung! . Siehe Details #21 (R360)
- PostgreSQL Support! Danke Siimv! Siehe Details #30 (R359)
- Neuer Konfigurationsschalter! SearchAllSubDirectorysinsteadOfTraverse - Alle Migrationsunterordner werden standardmäßig überquert und in der Reihenfolge der Skripte jedes Ordners ausgeführt. In dieser Option werden alle Elemente gleichzeitig in Unterordnern ausgeführt. Danke Siimv! Siehe Details #31 (R359)
- Fix: Transaktionen funktionieren nicht mit Wiederherstellung. Siehe Details #26 (R357)
- Fix: Ein böser Fehler mit SQL Server behoben, in dem versucht wird, eine Verbindung zu halten (stört den Drop/Create -Modus) und gibt einen Transportfehler an. Siehe Details #12 (R357)
- Neue Version Resolver! - Skriptnummer Versioning. Siehe Details #25 (R356)
- Fix: Custom Create Skript sollten Stapelanweisungen teilen. Siehe Details #22 (R353)
- Neuer Migrationsordner! RunAfterCreatedatabaseFolder - Läuft nur einmal und erst nach dem Erstellen einer Datenbank. Dies funktioniert derzeit mit einem begrenzten Satz von Datenbanktypen. Bitte testen Sie, wenn Sie vorhaben. Siehe Details #20 (R351)
- Fast alles ist jetzt verinnerlicht. Siehe Details #8 und #15 (R350)
- Fix: Datenbanken können keine Schnappschüsse fallen lassen. Siehe Details #13 (R349)
- Datenbank erstellen Benutzerdefinierte Skript können Dateipfade verarbeiten. Siehe Details Nr. 17 (R348)
- Fix: SQL Server 2000 muss alle Tabellen erstellen. Siehe Details #18 (R346)
- RH -Baugruppen sind jetzt unterschrieben. Siehe Details #14 (R342)
- Fix: Entfernen Sie den temporären Protokollort. Siehe Details Nr. 7 (R340)
- Neuer Konfigurationsschalter! DefablETokenreplacement - Token -Ersatz sollte konfigurierbar sein. Weitere Informationen finden Sie in Ausgabe 56. (R339)
- Fix: Token -Austausch sollte nur für Elemente ersetzen, die es findet. Weitere Informationen finden Sie in Ausgabe 56. (R339)
- Mögliche Veränderung! Die Dateikodierung wird immer versucht, Dateien als UTF-8 zu lesen, fällt aber auf ANSI zurück. Sie können nichts falsch machen, wenn Sie in ANSI codieren. Weitere Informationen finden Sie in Ausgabe 39. (R337)
- Wiederherstellungen sind etwas schlauer, wenn sie Dateien an einen Standardspeicherort verschieben, wenn man nicht angegeben wurde. Siehe Details Nr. 9 oder Ausgabe 13 (R336)
- Fix: Führen Sie keinen Token -Ersatz auf leerem Text aus. Siehe Details #10 (R330)
- Benutzerdefinierte Skripte werden auch Token -Ersatz ausführen (R321)
- Neue Konfigurationsschalter! Zwei neue Switches erhältlich - CommandTimeout und CommandTimeOutAdmin! (R329)
- Fix: Migrate versucht nicht, Log4Net jetzt zu konfigurieren (verursacht Probleme mit Bibliotheken, die dies tun) (R326)
- Neuer Migrationsordner! Indizes Ordner jetzt verfügbar (R327)
- Neuer Migrationsordner! Änderungspunktordner jetzt verfügbar. Siehe Details Nr. 6 (R324)
- Fix: Das enthaltene Beispiel für Oracle funktioniert nicht. Weitere Informationen finden Sie unter [Ausgabe 55] (http://code.google.com/p/roundhouse/issues/Detail?id=55). (R322)
- Benutzerdefinierte Wiederherstellungsoptionen sollten Token -Ersatz verwenden (R321)
- MySQL Support! . Danke Diyan. Siehe Details #3 (R320)
0,8.0.300
- RH Now macht Token -Ersatz in den SQL -Dateien mit '{{PropertyName}}'. Weitere Informationen finden Sie unter [Ausgabe 33] (http://code.google.com/p/roundhouse/issues/Detail?id=33). (R299)
- Führen Sie immer Dateien aus, die '.ye Time' haben. im Namen. Weitere Informationen finden Sie unter [Ausgabe 51] (http://code.google.com/p/roundhouse/issues/Detail?id=51). (R299)
- Roundhouse versendet eine DLL zum Einbetten. Weitere Informationen finden Sie unter [Ausgabe 44] (http://code.google.com/p/roundhouse/issues/Detail?id=44). Es gibt eine halbfluente Schnittstelle - siehe (https://gist.github.com/977990) für Details. (R299)
- Fix: Umgebungsspezifische Dateien führen andere Umgebungen aus, in denen andere Umgebungen Teil des Namens sind (dh Bobtest wird mit Test ausgeführt). Weitere Informationen finden Sie unter [Ausgabe 50] (http://code.google.com/p/roundhouse/issues/Detail?id=50). (R299)
- Ein Ordner, der nach den anderen Any Time -Skriptordnern ausgeführt wird, wurde hinzugefügt. Weitere Informationen finden Sie in #1. (R297)
- Behebung des Skripts, das jedes Mal für den Fehler geändert wird. Weitere Informationen finden Sie in #5. (R296)
- Beispiel ist jetzt ein Projekt im Release -Ordner. (R287)
- MSBUILD ist wieder verfügbar. (R288)
0,7.0.281
- Einige Probleme mit der Verwendung der Verbindungszeichenfolge behoben. Sie sollten jetzt in der Lage sein, nur die Verbindungszeichenfolge und nicht die Server-/Datenbank anzugeben.
0,7.0.276
- In den Verfolgungstabellen wurde ein Collationsproblem mit Roundhouse -ID -Spalten behoben. Weitere Informationen finden Sie unter [Ausgabe 46] (http://code.google.com/p/roundhouse/issues/Detail?id=46). (R274)
- RestoReFrompath kann einen relativen Weg einschlagen. (R269)
- RH kann jetzt seine Interna ohne Benutzerinteraktion aktualisieren. Weitere Informationen finden Sie unter [Ausgabe 40] (http://code.google.com/p/roundhouse/issues/Detail?id=40). (R268)
- MSBUILD / NANT -Aufgaben sind veraltet und nicht mehr angeschlossen. Bitte benutzen Sie die Konsole und rufen Sie sie von Ihren Aufgaben an. (R268)
- RH hat unterschiedliche Unterstützung durch NhiberNate -Schema -Generierung/-aktualisierungen (R267 - Branch, R268)
- FluentnhiberNate und Nhibernate werden jetzt für die Interna verwendet (R267 - Branch, R268)
- SMO ist veraltet und entfernt (R203 - Zweig, R268)
- Edelsteine und Upgrades erstellen, oh mein Gott! (R259)
- SQL2000 bis 2005 ist jetzt ein reibungsloser Übergang. (R221)
- Fix: SQL2000 - ScriptSrun nun referenziert die Version für den Fremdschlüssel. (R220)
- Fix: Die Verbindung sollte initialisiert werden, bevor die Datenbank gefragt wird, ob sie DDL -Transaktionen unterstützt. (R215)
- Fix: Großbuchstaben Benutzernamen beim Ausführen mit Oracle. (R200)
- RH hat unterschiedliche Unterstützung bei Redgate. Einzelheiten siehe Beispielprojekt. (R197)
- Fix: Scrips Ausführen Fehler jetzt aktualisieren die Versionsnummer und Pfad mit einer Abhängigkeit von Skripten. Ermöglicht es, während der Transaktionsläufe fertig zu werden und trotzdem Fehler aufzunehmen. (R196)
- Fix: Erfassen Sie irrortastische Änderungen an DDL/DML -Dateien (UP) -Dateien in der Tabelle "Skript -Ausführen". (R191)
- Admin -Verbindungszeichenfolge hinzugefügt, um Verwaltungsaufgaben auszuführen. (R190)
Vorherige Versionshinweise
Vorherige Veröffentlichungen befinden sich auf dem Wiki.
Credits
Uppercut - Automatisierte Builds (automatisierter Build in 10 Minuten oder weniger?!) Http://projectuppercut.org