Implemented:
bool branchExistsRemotely(); Check if branch exists in remote customer-repository. bool branchExistsLocally(); Check if branch exists locally in customer-repository. bool gitPullNewBranches(); In case the remote branch exists, but not the corresponding local one, then fetch the remote-branch.
This commit is contained in:
parent
8b2fcb25db
commit
b81120f8dc
@ -6,6 +6,7 @@
|
||||
#include <QRegularExpression>
|
||||
#include <QDebug>
|
||||
#include <QDir>
|
||||
#include <QStringList>
|
||||
|
||||
|
||||
GitClient::GitClient(QString const &customerNrStr,
|
||||
@ -290,6 +291,100 @@ bool GitClient::gitFsck() {
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
bool GitClient::branchExistsRemotely() {
|
||||
bool remoteBranchExists = false;
|
||||
if (QDir(m_customerRepository).exists()) {
|
||||
qInfo() << "BRANCH NAME" << m_branchName;
|
||||
QString const cmd = QString("git ls-remote --exit-code --heads origin %1").arg(m_branchName);
|
||||
Command c(cmd);
|
||||
if (c.execute(m_customerRepository)) {
|
||||
// expected result: c16c833c8778c1b3691a74afee5a469177e4e69b refs/heads/zg1/zone1000
|
||||
QString const s = c.getCommandResult().trimmed();
|
||||
|
||||
|
||||
if (!s.isEmpty()) {
|
||||
// the result is only one line
|
||||
if ((remoteBranchExists = s.contains(m_branchName)) == true) {
|
||||
qCritical() << "(" << __func__ << ":" << __LINE__ << ") branch"
|
||||
<< m_branchName << "EXISTS REMOTELY. (" << s << ")";
|
||||
}
|
||||
} else {
|
||||
Utils::printCriticalErrorMsg(QString("EMPTY RESULT FOR CMD %1").arg(cmd));
|
||||
}
|
||||
} else {
|
||||
Utils::printCriticalErrorMsg(QString("FAILED TO EXEC '%1'").arg(cmd));
|
||||
}
|
||||
}
|
||||
return remoteBranchExists;
|
||||
}
|
||||
|
||||
bool GitClient::branchExistsLocally() {
|
||||
Command c("git branch -l");
|
||||
if (c.execute(m_customerRepository)) {
|
||||
QString const s = c.getCommandResult().trimmed();
|
||||
if (!s.isEmpty()) {
|
||||
QStringList lines = Update::split(s, '\n');
|
||||
if (!lines.empty()) {
|
||||
for (int i=0; i < lines.size(); ++i) {
|
||||
QString line = lines.at(i);
|
||||
// expected: * [new branch] zg1/zone12 -> origin/zg1/zone12"
|
||||
if (line.contains(m_branchName)) {
|
||||
if (m_worker) {
|
||||
QStringList lst(QString("BRANCH-NAME %1 CONTAINED IN RESULT %2").arg(m_branchName).arg(s));
|
||||
m_worker->CONSOLE(lst) << Worker::UPDATE_STEP::PULL_NEW_BRANCH;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if (m_worker) {
|
||||
QStringList lst(QString("BRANCH-NAME %1 NOT CONTAINED IN RESULT %2").arg(m_branchName).arg(s));
|
||||
m_worker->CONSOLE(lst) << Worker::UPDATE_STEP::PULL_NEW_BRANCH_FAILURE;
|
||||
}
|
||||
|
||||
} else {
|
||||
if (m_worker) {
|
||||
QStringList lst(QString("'git branch -l' RETURNED NO LINES"));
|
||||
m_worker->CONSOLE(lst) << Worker::UPDATE_STEP::PULL_NEW_BRANCH_FAILURE;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (m_worker) {
|
||||
QStringList lst(QString("'git branch -l' RETURNED EMPTY RESULT"));
|
||||
m_worker->CONSOLE(lst) << Worker::UPDATE_STEP::PULL_NEW_BRANCH_FAILURE;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (m_worker) {
|
||||
QStringList lst(QString("FAILED TO EXEC 'git branch -l'"));
|
||||
m_worker->CONSOLE(lst) << Worker::UPDATE_STEP::PULL_NEW_BRANCH_FAILURE;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool GitClient::gitPullNewBranches() {
|
||||
|
||||
if (QDir(m_customerRepository).exists()) {
|
||||
Command c("git pull");
|
||||
if (c.execute(m_customerRepository)) {
|
||||
QString const s = c.getCommandResult().trimmed();
|
||||
// expected: Already up-to-date.
|
||||
if (!s.isEmpty()) {
|
||||
QStringList lst;
|
||||
QString msg(QString("GIT-PULL-NEW-BRANCH. RESULT=%1").arg(s));
|
||||
if (m_worker) {
|
||||
m_worker->CONSOLE(lst) << Worker::UPDATE_STEP::PULL_NEW_BRANCH;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
Hat sich nichts geaendert, so werden auch keine Commits <>..<> angezeigt
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user