gitPull(): don't use regex anumore, but just plain
string-matching/searching. Regex seems to be quite error-prone.
This commit is contained in:
		@@ -303,25 +303,34 @@ std::optional<QString> GitClient::gitPull() {
 | 
			
		||||
            if (!s.isEmpty()) {
 | 
			
		||||
                QStringList lines = Update::split(s, '\n');
 | 
			
		||||
                if (!lines.empty()) {
 | 
			
		||||
                    int zoneNr = Utils::read1stLineOfFile("/mnt/system_data/zone_nr");
 | 
			
		||||
                    m_branchName = (zoneNr != 0) ? QString("zg1/zone%1").arg(zoneNr) : "master";
 | 
			
		||||
                    // lines can look like this:
 | 
			
		||||
                    // From https://git.mimbach49.de/GerhardHoffmann/customer_281
 | 
			
		||||
                    //   41ec581..5d25ac3  master     -> origin/master
 | 
			
		||||
                    //   ff10f57..43530a1  zg1/zone1  -> origin/zg1/zone1
 | 
			
		||||
                    //   6ed893f..5d9882c  zg1/zone2  -> origin/zg1/zone2
 | 
			
		||||
                    //   4384d17..77045d8  zg1/zone3  -> origin/zg1/zone3
 | 
			
		||||
                    //   89d2812..36a0d74  zg1/zone5  -> origin/zg1/zone5
 | 
			
		||||
                    bool found = false;
 | 
			
		||||
                    for (int i=0; i < lines.size(); ++i) {
 | 
			
		||||
                        if (lines.at(i).contains(m_branchName)) {
 | 
			
		||||
                            found = true;
 | 
			
		||||
                            // 409f198..6c22726  zg1/zone1  -> origin/zg1/zone1
 | 
			
		||||
                            static QRegularExpression re("(^\\s*)([0-9A-Fa-f]+..[0-9A-Fa-f]+)(.*$)");
 | 
			
		||||
                            QRegularExpressionMatch match = re.match(lines.at(i));
 | 
			
		||||
                            if (match.hasMatch()) {
 | 
			
		||||
                                if (re.captureCount() == 3) { // start with full match (0), then the other 3 matches
 | 
			
		||||
                                    return match.captured(2);
 | 
			
		||||
                    static const QRegularExpression alreadyUpToDate("^\\s*Already\\s+up\\s+to\\s+date.*$");
 | 
			
		||||
                    if (std::none_of(lines.cbegin(), lines.cend(),
 | 
			
		||||
                        [](QString const &s) { return s.contains(alreadyUpToDate); })) {
 | 
			
		||||
                        int zoneNr = Utils::read1stLineOfFile("/mnt/system_data/zone_nr");
 | 
			
		||||
                        m_branchName = (zoneNr != 0) ? QString("zg1/zone%1").arg(zoneNr) : "master";
 | 
			
		||||
                        // lines can look like this:
 | 
			
		||||
                        // From https://git.mimbach49.de/GerhardHoffmann/customer_281
 | 
			
		||||
                        //   41ec581..5d25ac3  master     -> origin/master
 | 
			
		||||
                        //   ff10f57..43530a1  zg1/zone1  -> origin/zg1/zone1
 | 
			
		||||
                        //   6ed893f..5d9882c  zg1/zone2  -> origin/zg1/zone2
 | 
			
		||||
                        //   4384d17..77045d8  zg1/zone3  -> origin/zg1/zone3
 | 
			
		||||
                        //   89d2812..36a0d74  zg1/zone5  -> origin/zg1/zone5
 | 
			
		||||
                        bool found = false;
 | 
			
		||||
                        for (int i=0; i < lines.size(); ++i) {
 | 
			
		||||
                            if (lines.at(i).contains(m_branchName)) {
 | 
			
		||||
                                found = true;
 | 
			
		||||
                                // 409f198..6c22726  zg1/zone1  -> origin/zg1/zone1
 | 
			
		||||
                                static QRegularExpression re("(^\\s*)([0-9A-Fa-f]+..[0-9A-Fa-f]+)(.*$)");
 | 
			
		||||
                                QRegularExpressionMatch match = re.match(lines.at(i));
 | 
			
		||||
                                if (match.hasMatch()) {
 | 
			
		||||
                                    if (re.captureCount() == 3) { // start with full match (0), then the other 3 matches
 | 
			
		||||
                                        QString const matchCaptured = match.captured(2);
 | 
			
		||||
                                        worker()->CONSOLE(QStringList(matchCaptured)) << Worker::UPDATE_STEP::UPDATE_REPOSITORY;
 | 
			
		||||
                                        return matchCaptured;
 | 
			
		||||
                                    } else {
 | 
			
		||||
                                        QStringList lst(QString("(wrong capture count (%1)").arg(re.captureCount()));
 | 
			
		||||
                                        worker()->GUI(lst) << (worker()->CONSOLE(lst) << Worker::UPDATE_STEP::UPDATE_REPOSITORY_FAILURE);
 | 
			
		||||
                                    }
 | 
			
		||||
                                } else {
 | 
			
		||||
                                    emit m_worker->showErrorMessage("git pull",
 | 
			
		||||
                                        QString("(wrong cap-count (%1)").arg(re.captureCount()));
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user