File indexing completed on 2025-03-09 05:11:41
0001 /* 0002 SPDX-FileCopyrightText: 2021 Hamed Masafi <hamed.masfi@gmail.com> 0003 0004 SPDX-License-Identifier: GPL-3.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include "gitgraphlane.h" 0010 #include "interfaces.h" 0011 #include "libkommit_export.h" 0012 #include "reference.h" 0013 #include "signature.h" 0014 0015 #include <QDateTime> 0016 #include <QSharedPointer> 0017 #include <QString> 0018 #include <QVector> 0019 0020 #include <git2/types.h> 0021 0022 namespace Git 0023 { 0024 0025 class Tree; 0026 class LIBKOMMIT_EXPORT Commit : public ITree 0027 { 0028 public: 0029 enum CommitType { NormalCommit, InitialCommit, ForkCommit, MergeCommit }; 0030 0031 Commit(); 0032 Commit(git_commit *commit); 0033 ~Commit(); 0034 0035 Q_REQUIRED_RESULT QSharedPointer<Signature> author() const; 0036 Q_REQUIRED_RESULT QSharedPointer<Signature> committer() const; 0037 Q_REQUIRED_RESULT const QString &message() const; 0038 Q_REQUIRED_RESULT const QString &subject() const; 0039 Q_REQUIRED_RESULT const QString &body() const; 0040 Q_REQUIRED_RESULT const QString &commitHash() const; 0041 Q_REQUIRED_RESULT const QStringList &parents() const; 0042 Q_REQUIRED_RESULT const QString &branch() const; 0043 Q_REQUIRED_RESULT const QString &extraData() const; 0044 Q_REQUIRED_RESULT CommitType type() const; 0045 Q_REQUIRED_RESULT const QVector<GraphLane> &lanes() const; 0046 Q_REQUIRED_RESULT const QStringList &children() const; 0047 Q_REQUIRED_RESULT const QString &commitShortHash() const; 0048 0049 Q_REQUIRED_RESULT QSharedPointer<Reference> reference() const; 0050 0051 QSharedPointer<Tree> tree() const override; 0052 0053 Q_REQUIRED_RESULT git_commit *gitCommit() const; 0054 0055 Q_REQUIRED_RESULT QDateTime commitTime() const; 0056 0057 private: 0058 git_commit *mGitCommit{nullptr}; 0059 QSharedPointer<Signature> mAuthor; 0060 QSharedPointer<Signature> mCommitter; 0061 QString mMessage; 0062 QString mSubject; 0063 QString mBody; 0064 QString mCommitHash; 0065 QString mCommitShortHash; 0066 QStringList mParentHash; 0067 QString mBranch; 0068 QString mExtraData; 0069 CommitType mType; 0070 QVector<GraphLane> mLanes; 0071 QStringList mChildren; 0072 QSharedPointer<Reference> mReference; 0073 QDateTime mCommitTime; 0074 0075 friend class LogList; 0076 friend class Manager; 0077 friend class LogsModel; 0078 }; 0079 0080 }