diff --git a/git/git_client.cpp b/git/git_client.cpp index 2709df7..2f95643 100644 --- a/git/git_client.cpp +++ b/git/git_client.cpp @@ -68,7 +68,11 @@ bool GitClient::gitCloneCustomerRepository() { Note: git v2.18 does not support treeless clones: --filter=tree:0. */ - QString gitCommand("git clone --filter=blob:none "); + + // Note: for some reason it is necessary to pass "--progress ---v", + // otherwise QProcess returns an error of 128 = 0x80 for the command. + + QString gitCommand("git clone --progress -vvv --filter=blob:none "); gitCommand += m_repositoryPath; Command c(gitCommand); @@ -79,26 +83,32 @@ bool GitClient::gitCloneCustomerRepository() { QString const result = c.getCommandResult(); if (!result.isEmpty()) { // Cloning into 'customer_281'...\n - static QRegularExpression re("(^\\s*Cloning\\s+into\\s+[']\\s*)(.*)(\\s*['].*$)"); - QRegularExpressionMatch match = re.match(result); - if (match.hasMatch()) { - if (re.captureCount() == 3) { // start with full match (0), then the other 3 matches - QString const &customerNr = match.captured(2).trimmed(); - if (customerNr == m_customerNr) { - qInfo() << "CLONING" << m_repositoryPath << "OK"; - return true; + int customer = -1; + int cloning = result.indexOf("Cloning", 0, Qt::CaseInsensitive); + if (cloning != -1) { + customer = result.indexOf("customer_", cloning, Qt::CaseInsensitive); + if (customer != -1) { + QString customerNr = result.mid(customer); + static constexpr char const ch = '\''; + int i = customerNr.indexOf(QChar(ch)); + if (i != -1) { + if ((customerNr = customerNr.mid(0, i)) == m_customerNr) { + qInfo() << "CLONING" << m_repositoryPath << "OK"; + return true; + } + Utils::printCriticalErrorMsg( + QString("ERROR CLONE RESULT HAS WRONG CUSTOMER-NR. (%1 != %2) CLONE_RESULT=%3") + .arg(customerNr) + .arg(m_customerNr) + .arg(result)); + return false; } - Utils::printCriticalErrorMsg( - QString("ERROR CLONE RESULT HAS WRONG CUSTOMER-NR. rcc=%1 customer=%2 CLONE_RESULT=%3") - .arg(re.captureCount()) - .arg(customerNr) - .arg(result)); - return false; } } Utils::printCriticalErrorMsg( - QString("ERROR CLONE RESULT HAS WRONG FORMAT. rcc=%1 CLONE_RESULT=%2") - .arg(re.captureCount()) + QString("ERROR CLONE RESULT HAS WRONG FORMAT. CLONING=%1 CUSTOMER=%2 CLONE_RESULT=%3") + .arg(cloning) + .arg(customer) .arg(result)); return false; }