# # # patch "NEWS" # from [ab18bdc27e43f967753f1aa1b7c9ff6487f85b27] # to [c5dfe130fb53d6553fc530e7e94140ffd99fe2c3] # # patch "guitone.pro" # from [d67375db8600ebbcde7ab52d6a81b0f72da43354] # to [33545cda1a516aede1c2b494f1432818727048c9] # # patch "res/i18n/guitone_de.ts" # from [649e71aef7978bb7db4c33620a9977923ff333ab] # to [5fdafe6fa860ef1185766d27566bb7bf7930a9ff] # # patch "src/Guitone.cpp" # from [1a9d4af5358b813497cfab222ae2e857df360c95] # to [cae5d0b8210527a4327743b7ea8c4993d4e7639a] # # patch "src/model/Attributes.cpp" # from [aebaba821284e215181dd48f905cca2a112040f7] # to [2ea5d72737c95823852fbf7038235b8af7349d49] # # patch "src/monotone/Monotone.cpp" # from [71ca4fc6d7c7a51e41443be674a5e3993d93c026] # to [8d3d1bfe62b2dcb9f94f5f7f676e85bca5b16bbd] # # patch "src/monotone/Monotone.h" # from [25860d5a6a916ffcefd83275f203bd3d49be55ac] # to [eb86d372a5790b81c4e17e6c8a66ce7ec5cc90c7] # # patch "src/view/dialogs/Preferences.cpp" # from [00aed581d2c8b7991731472f2e9e54cdbcb4771f] # to [c34d5f6dce4113366c6d807b1b0a4bb97d3350b9] # ============================================================ --- NEWS ab18bdc27e43f967753f1aa1b7c9ff6487f85b27 +++ NEWS c5dfe130fb53d6553fc530e7e94140ffd99fe2c3 @@ -1,3 +1,10 @@ +2007-08-20 (0.6.4) + - compatibility with monotone 0.36 (and any upcoming monotone with an + interface_version above 5.0 and below 5.99) + - IMPORTANT NOTICE: do not update to this version if you're still using + monotone 0.34 or monotone 0.35. This version of guitone won't work + with earlier versions of monotone! + 2007-04-25 (0.6.3) - add RELEASE_CHECKLIST so I don't forget a dozen things for the next release - bugfix: no I() crash if an enclosure of appcast.xml is missing the ============================================================ --- guitone.pro d67375db8600ebbcde7ab52d6a81b0f72da43354 +++ guitone.pro 33545cda1a516aede1c2b494f1432818727048c9 @@ -1,8 +1,8 @@ # # Common configuration # -GUITONE_VERSION = "0.6.3" +GUITONE_VERSION = "0.6.4" TEMPLATE = app TARGET = guitone !macx { ============================================================ --- res/i18n/guitone_de.ts 649e71aef7978bb7db4c33620a9977923ff333ab +++ res/i18n/guitone_de.ts 5fdafe6fa860ef1185766d27566bb7bf7930a9ff @@ -60,37 +60,37 @@ Attributes - + added hinzugefügt - + dropped entfernt - + changed verändert - + unchanged unverändert - + Key Schlüssel - + Value Wert - + State Status @@ -106,52 +106,52 @@ Certs - + ok OK - + bad schlecht - + unknown unbekannt - + trusted vertrauenswürdig - + untrusted nicht vertrauenswürdig - + Key Schlüssel - + Name Name - + Value Wert - + Signature Signatur - + Trust Vertrauen @@ -350,7 +350,7 @@ Das Verzeichnis zum Auschecken ist nicht leer. Möchten Sie dennoch fortfahren? - + Select a directory for checkout... Wählen Sie ein Verzeichnis zum Auschecken aus... @@ -698,7 +698,7 @@ In jedem Fall sollte der derzeitige Arbe The path to the monotone binary is either invalid or points to an older version of monotone. Guitone requires monotone version %1 or a monotone with interface version %2 or later. - Der Pfad zur ausführbaren Datei von monotone ist entweder ungültig oder zeigt auf eine ältere Version von monotone. Guitone benötigt monotone Version %1 oder ein monotone mit einer Interface-Version %2 oder neuer. + Der Pfad zur ausführbaren Datei von monotone ist entweder ungültig oder zeigt auf eine ältere Version von monotone. Guitone benötigt monotone Version %1 oder ein monotone mit einer Interface-Version %2 oder neuer. @@ -710,6 +710,11 @@ In jedem Fall sollte der derzeitige Arbe Select your workspace... Wählen Sie Ihren Arbeitsbereich aus... + + + The path to the monotone binary is either invalid or points to a version of monotone with which guitone can't work with. Guitone requires monotone with an interface version between %2 and %3. You can check the interface version of your monotone installation by executing `mtn automate interface_version`. + + Inventory @@ -800,7 +805,7 @@ In jedem Fall sollte der derzeitige Arbe &Hinzufügen - + Add to workspace Zum Arbeitsbereich hinzufügen @@ -810,7 +815,7 @@ In jedem Fall sollte der derzeitige Arbe En&tfernen - + Remove from workspace Vom Arbeitsbereich entfernen @@ -820,7 +825,7 @@ In jedem Fall sollte der derzeitige Arbe &Einpflegen - + Commit Einpflegen @@ -830,7 +835,7 @@ In jedem Fall sollte der derzeitige Arbe Datei &ignorieren - + Ignore file Datei ignorieren @@ -840,7 +845,7 @@ In jedem Fall sollte der derzeitige Arbe Datei nicht ign&orieren - + Unignore file Datei nicht mehr ignorieren @@ -850,7 +855,7 @@ In jedem Fall sollte der derzeitige Arbe &Zurücksetzen - + Revert uncommitted changes Nicht eingepflegte Änderungen verwerfen @@ -860,7 +865,7 @@ In jedem Fall sollte der derzeitige Arbe Um&benennen - + Rename file Datei umbenennen @@ -870,7 +875,7 @@ In jedem Fall sollte der derzeitige Arbe U&nterschiede anzeigen - + Diff against base revision Unterschiede im Vergleich zur Basisrevision anzeigen @@ -880,7 +885,7 @@ In jedem Fall sollte der derzeitige Arbe &Wechseln zu - + Go into the directory Wechsle in das Verzeichnis @@ -890,22 +895,22 @@ In jedem Fall sollte der derzeitige Arbe &Öffnen - + Open in default program In Standardprogramm öffnen - + Error Fehler - + The file you're trying to open does not exist. Die Datei, die Sie versucht haben zu öffnen, existiert nicht. - + Unable to open files on your platform - please contact the author about this problem. Kann keine Dateien auf Ihrer Plattform öffnen - bitte kontaktieren Sie den Autor über dieses Problem. @@ -915,67 +920,67 @@ In jedem Fall sollte der derzeitige Arbe Alle U&nterschiede anzeigen - + Show all differences Zeigt Unterschiede in allen Dateien - + No common action for selected items Keine gemeinsamen Aktionen auf selektierte Einträge anwendbar - + Go into Wechseln zu - + Open Öffnen - + Add Hinzufügen - + Remove Entfernen - + Ignore Datei ignorieren - + Unignore Datei nicht ignorieren - + Revert Zurücksetzen - + Diff Unterschiede anzeigen - + Diff all Alle Unterschiede anzeigen - + Rename Umbenennen - + Add %1 items Füge %1 Einträge hinzu @@ -985,7 +990,7 @@ In jedem Fall sollte der derzeitige Arbe Fügt mehrere Einträge hinzu - + Remove %1 items Entferne %1 Einträge @@ -995,7 +1000,7 @@ In jedem Fall sollte der derzeitige Arbe Entfernt mehrere Einträge - + Commit %1 items Pflege %1 Einträge ein @@ -1005,7 +1010,7 @@ In jedem Fall sollte der derzeitige Arbe Pflegt mehrere Einträge ein - + Ignore %1 items Ignoriere %1 Einträge @@ -1015,7 +1020,7 @@ In jedem Fall sollte der derzeitige Arbe Ignoriert mehrere Einträge - + Unignore %1 items Ignoriere %1 Einträge nicht mehr @@ -1025,7 +1030,7 @@ In jedem Fall sollte der derzeitige Arbe Ignoriere mehrere Einträge nicht mehr - + Revert %1 items Setze %1 Einträge zurück @@ -1035,32 +1040,32 @@ In jedem Fall sollte der derzeitige Arbe Setze mehrere Einträge zurück - + Add multiple items Füge mehrere Einträge hinzu - + Remove multiple items Entferne mehrere Einträge - + Commit multiple items Pflege mehrere Einträge ein - + Ignore multiple items Ignoriere mehrere Einträge - + Unignore multiple items Ignoriere mehrere Einträge nicht mehr - + Revert multiple items Setze mehrere Einträge zurück @@ -1111,37 +1116,37 @@ In jedem Fall sollte der derzeitige Arbe Keys - + Database Datenbank - + Keystore Schlüsselspeicher - + Name Name - + Public Hash Öffentliche Prüfsumme - + Private Hash Private Prüfsumme - + Public Locations Öffentliche Speicherorte - + Private Locations Private Speicherorte @@ -1688,7 +1693,7 @@ monotone gab zurück: %2 - + [process not created] [Prozess nicht erzeugt] @@ -1724,35 +1729,40 @@ monotone gab zurück: Alle (Debugmeldungen) - + Error Fehler The path to the monotone binary is either invalid or points to an older version of monotone. Guitone requires monotone version %1 or a monotone with interface version %2 or later. - Der Pfad zur ausführbaren Datei von monotone ist entweder ungültig oder zeigt auf eine ältere Version von monotone. Guitone benötigt monotone Version %1 oder ein monotone mit einer Interface-Version %2 oder neuer. + Der Pfad zur ausführbaren Datei von monotone ist entweder ungültig oder zeigt auf eine ältere Version von monotone. Guitone benötigt monotone Version %1 oder ein monotone mit einer Interface-Version %2 oder neuer. - + Notice Hinweis - + You need to reload your current workspace or restart guitone to use the new monotone binary. Sie müssen Ihren derzeitigen Arbeitsbereich oder guitone neu laden, um die neue monotone-Binary zu nutzen. - + Choose the monotone executable Wählen Sie die ausführbare Datei von monotone - + Binaries (mtn mtn.exe) Binärdateien (mtn mtn.exe) + + + The path to the monotone binary is either invalid or points to a version of monotone with which guitone can't work with. Guitone requires monotone with an interface version between %2 and %3. You can check the interface version of your monotone installation by executing `mtn automate interface_version`. + + PreferencesDialog ============================================================ --- src/Guitone.cpp 1a9d4af5358b813497cfab222ae2e857df360c95 +++ src/Guitone.cpp cae5d0b8210527a4327743b7ea8c4993d4e7639a @@ -422,11 +422,13 @@ bool Guitone::addMonotoneInstance(MainWi wnd, tr("Error"), tr("The path to the monotone binary is either invalid " - "or points to an older version of monotone. " - "Guitone requires monotone version %1 " - "or a monotone with interface version %2 or later.") - .arg(Monotone::RequiredProgramVersion) - .arg(Monotone::RequiredInterfaceVersion), + "or points to a version of monotone with which guitone can't " + "work with. Guitone requires monotone with an interface version " + "between %2 and %3. You can check the interface version of " + "your monotone installation by executing " + "`mtn automate interface_version`.") + .arg(Monotone::MinInterfaceVersion) + .arg(Monotone::MaxInterfaceVersion), QMessageBox::Ok, 0, 0 ); ============================================================ --- src/model/Attributes.cpp aebaba821284e215181dd48f905cca2a112040f7 +++ src/model/Attributes.cpp 2ea5d72737c95823852fbf7038235b8af7349d49 @@ -64,7 +64,7 @@ bool Attributes::readAttributes(const QM } QStringList cmd; - cmd.append("attributes"); + cmd.append("get_attributes"); cmd.append(item->getPath()); return mtnDelegate->triggerCommand(cmd); ============================================================ --- src/monotone/Monotone.cpp 71ca4fc6d7c7a51e41443be674a5e3993d93c026 +++ src/monotone/Monotone.cpp 8d3d1bfe62b2dcb9f94f5f7f676e85bca5b16bbd @@ -83,14 +83,8 @@ #include #include -// -// this should be understood as either/or: -// - if the program version is sufficient, everything is fine -// - if not, we additionally check the interface version in case the user -// compiled his own version with all needed commands -// -const QString Monotone::RequiredProgramVersion = "0.34"; -const QString Monotone::RequiredInterfaceVersion = "4.1"; +const QString Monotone::MinInterfaceVersion = "5.0"; +const QString Monotone::MaxInterfaceVersion = "5.99"; const int Monotone::StdioBufferSize = 50 * 1024 * 1024; const int Monotone::WaitForMonotoneStart = 15000; // milliseconds @@ -148,7 +142,7 @@ bool Monotone::setMtnBinaryPath(const QS bool Monotone::setMtnBinaryPath(const QString & path) { - if (checkProgramVersion(path) || checkInterfaceVersion(path)) + if (checkInterfaceVersion(path)) { mtnBinaryPath = path; return true; @@ -603,35 +597,6 @@ bool Monotone::runCommand(const QString output.append(proc.readAll()); return true; } - -bool Monotone::checkProgramVersion(const QString & path) -{ - QString output; - QStringList opts; - opts << "--version"; - - if (!runCommand(path, opts, output)) - { - return false; - } - - QRegExp regex("^monotone (\\d+(?:\\.\\d+))"); - - if (regex.indexIn(output) == -1) - { - D(QString("couldn't parse output: %1").arg(output)); - return false; - } - - QString curVersion = regex.cap(1); - - D(QString("monotone version: %1, need: %2") - .arg(curVersion) - .arg(RequiredProgramVersion) - ); - - return versionCompare(curVersion, RequiredProgramVersion) >= 0; -} bool Monotone::checkInterfaceVersion(const QString & path) { @@ -653,14 +618,15 @@ bool Monotone::checkInterfaceVersion(con } QString curVersion = regex.cap(1); - QStringList needVersion = RequiredInterfaceVersion.split("."); - D(QString("interface version: %1, need: %2") + D(QString("interface version: %1, need something between %2 and %3") .arg(curVersion) - .arg(RequiredInterfaceVersion) + .arg(MinInterfaceVersion) + .arg(MaxInterfaceVersion) ); - return versionCompare(curVersion, RequiredInterfaceVersion) >= 0; + return versionCompare(curVersion, MinInterfaceVersion) >= 0 && + versionCompare(curVersion, MaxInterfaceVersion) <= 0; } // strip mtn: warning: and alike from error strings coming from mtn ============================================================ --- src/monotone/Monotone.h 25860d5a6a916ffcefd83275f203bd3d49be55ac +++ src/monotone/Monotone.h eb86d372a5790b81c4e17e6c8a66ce7ec5cc90c7 @@ -34,13 +34,12 @@ class Monotone : public QObject public: static bool runCommand(const QString &, const QStringList &, QString &); - static bool checkProgramVersion(const QString &); static bool checkInterfaceVersion(const QString &); static QString stripMtnPrefix(const QString &); static int versionCompare(const QString &, const QString &); static ByteArrayList stringToByteArrayList(const QStringList &); - static const QString RequiredProgramVersion; - static const QString RequiredInterfaceVersion; + static const QString MinInterfaceVersion; + static const QString MaxInterfaceVersion; static const int StdioBufferSize; static const int WaitForMonotoneStart; ============================================================ --- src/view/dialogs/Preferences.cpp 00aed581d2c8b7991731472f2e9e54cdbcb4771f +++ src/view/dialogs/Preferences.cpp c34d5f6dce4113366c6d807b1b0a4bb97d3350b9 @@ -69,18 +69,19 @@ void Preferences::accept() // check if the new executable satisfies our version needs // we'll first check the program's plain version and if this // does not succeed we check for the interface version - if (!Monotone::checkProgramVersion(newPath) && - !Monotone::checkInterfaceVersion(newPath)) + if (!Monotone::checkInterfaceVersion(newPath)) { QMessageBox::critical( this, tr("Error"), tr("The path to the monotone binary is either invalid " - "or points to an older version of monotone. " - "Guitone requires monotone version %1 " - "or a monotone with interface version %2 or later.") - .arg(Monotone::RequiredProgramVersion) - .arg(Monotone::RequiredInterfaceVersion), + "or points to a version of monotone with which guitone can't " + "work with. Guitone requires monotone with an interface version " + "between %2 and %3. You can check the interface version of " + "your monotone installation by executing " + "`mtn automate interface_version`.") + .arg(Monotone::MinInterfaceVersion) + .arg(Monotone::MaxInterfaceVersion), QMessageBox::Ok, 0, 0 ); return;