///////////////////////////////////////////////////////////////////////////////// // // Copyright (C) 2018- Equinor ASA // // ResInsight is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY // WARRANTY; without even the implied warranty of MERCHANTABILITY or // FITNESS FOR A PARTICULAR PURPOSE. // // See the GNU General Public License at // for more details. // ///////////////////////////////////////////////////////////////////////////////// #include "RiaGitDiff.h" #include "cafUtils.h" #include #include // Disable deprecation warning for QProcess::start() #ifdef _MSC_VER #pragma warning( disable : 4996 ) #endif //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- RiaGitDiff::RiaGitDiff( const QString& pathToDiffTool ) : m_pathToGitTool( pathToDiffTool ) { reset(); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- RiaGitDiff::~RiaGitDiff() { } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RiaGitDiff::reset() { m_lastError = ErrorType::IC_NO_ERROR; m_errorMsg.clear(); m_errorDetails.clear(); m_diffOutput.clear(); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- bool RiaGitDiff::executeDiff( const QString& baseFolder ) { reset(); QString fullFilePath = "git"; if ( !m_pathToGitTool.isEmpty() ) { fullFilePath = m_pathToGitTool + "/" + fullFilePath; } QString incomingCurrentPath = QDir::currentPath(); QDir::setCurrent( baseFolder ); QString args = "diff"; QString completeCommand = QString( "\"%1\" %2" ).arg( fullFilePath ).arg( args ); // Launch process and wait QProcess proc; proc.start( completeCommand ); proc.waitForFinished( 30000 ); QDir::setCurrent( incomingCurrentPath ); QProcess::ProcessError procError = proc.error(); if ( procError != QProcess::UnknownError ) { m_lastError = ErrorType::SEVERE_ERROR; m_errorMsg = "Error running 'git' tool process"; m_errorDetails = completeCommand; return false; } QByteArray stdOut = proc.readAllStandardOutput(); m_diffOutput = stdOut; return true; } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- RiaGitDiff::ErrorType RiaGitDiff::error() const { return m_lastError; } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- QString RiaGitDiff::errorMessage() const { return m_errorMsg; } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- QString RiaGitDiff::errorDetails() const { return m_errorDetails; } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- QString RiaGitDiff::diffOutput() const { return m_diffOutput; }