diff options
Diffstat (limited to 'Source/CTest/cmCTestGIT.h')
-rw-r--r-- | Source/CTest/cmCTestGIT.h | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/Source/CTest/cmCTestGIT.h b/Source/CTest/cmCTestGIT.h new file mode 100644 index 0000000..ade430f --- /dev/null +++ b/Source/CTest/cmCTestGIT.h @@ -0,0 +1,57 @@ +/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying + file Copyright.txt or https://cmake.org/licensing for details. */ +#ifndef cmCTestGIT_h +#define cmCTestGIT_h + +#include "cmConfigure.h" // IWYU pragma: keep + +#include "cmCTestGlobalVC.h" + +#include <iosfwd> +#include <string> + +class cmCTest; + +/** \class cmCTestGIT + * \brief Interaction with git command-line tool + * + */ +class cmCTestGIT : public cmCTestGlobalVC +{ +public: + /** Construct with a CTest instance and update log stream. */ + cmCTestGIT(cmCTest* ctest, std::ostream& log); + + ~cmCTestGIT() override; + +private: + unsigned int CurrentGitVersion; + unsigned int GetGitVersion(); + std::string GetWorkingRevision(); + bool NoteOldRevision() override; + bool NoteNewRevision() override; + bool UpdateImpl() override; + + std::string FindGitDir(); + std::string FindTopDir(); + + bool UpdateByFetchAndReset(); + bool UpdateByCustom(std::string const& custom); + bool UpdateInternal(); + + bool LoadRevisions() override; + bool LoadModifications() override; + + // "public" needed by older Sun compilers +public: + // Parsing helper classes. + class CommitParser; + class DiffParser; + class OneLineParser; + + friend class CommitParser; + friend class DiffParser; + friend class OneLineParser; +}; + +#endif |