1#include "GitStashes.h"
2
3#include <GitBase.h>
4
5#include <QLogger.h>
6
7using namespace QLogger;
8
9GitStashes::GitStashes(const QSharedPointer<GitBase> &gitBase)
10 : mGitBase(gitBase)
11{
12}
13
14QVector<QString> GitStashes::getStashes()
15{
16 QLog_Debug("Git", QString("Getting stashes"));
17
18 const auto cmd = QString("git stash list");
19
20 QLog_Trace("Git", QString("Getting stashes: {%1}").arg(cmd));
21
22 const auto ret = mGitBase->run(cmd);
23
24 QVector<QString> stashes;
25
26 if (ret.success)
27 {
28 const auto tagsTmp = ret.output.split("\n");
29
30 for (const auto &tag : tagsTmp)
31 if (tag != "\n" && !tag.isEmpty())
32 stashes.append(tag);
33 }
34
35 return stashes;
36}
37
38GitExecResult GitStashes::pop() const
39{
40 QLog_Debug("Git", QString("Poping the stash"));
41
42 const auto cmd = QString("git stash pop");
43
44 QLog_Trace("Git", QString("Poping the stash: {%1}").arg(cmd));
45
46 const auto ret = mGitBase->run(cmd);
47
48 return ret;
49}
50
51GitExecResult GitStashes::stash()
52{
53 QLog_Debug("Git", QString("Stashing changes"));
54
55 const auto cmd = QString("git stash");
56
57 QLog_Trace("Git", QString("Stashing changes: {%1}").arg(cmd));
58
59 const auto ret = mGitBase->run(cmd);
60
61 return ret;
62}
63
64GitExecResult GitStashes::stashBranch(const QString &stashId, const QString &branchName)
65{
66 QLog_Debug("Git", QString("Creating a branch from stash: {%1} in branch {%2}").arg(stashId, branchName));
67
68 const auto cmd = QString("git stash branch %1 %2").arg(branchName, stashId);
69
70 QLog_Trace("Git", QString("Creating a branch from stash: {%1}").arg(cmd));
71
72 const auto ret = mGitBase->run(cmd);
73
74 return ret;
75}
76
77GitExecResult GitStashes::stashDrop(const QString &stashId)
78{
79 QLog_Debug("Git", QString("Droping stash: {%1}").arg(stashId));
80
81 const auto cmd = QString("git stash drop -q %1").arg(stashId);
82
83 QLog_Trace("Git", QString("Droping stash: {%1}").arg(cmd));
84
85 const auto ret = mGitBase->run(cmd);
86
87 return ret;
88}
89
90GitExecResult GitStashes::stashClear()
91{
92 QLog_Debug("Git", QString("Clearing stash"));
93
94 const auto cmd = QString("git stash clear");
95
96 QLog_Trace("Git", QString("Clearing stash: {%1}").arg(cmd));
97
98 const auto ret = mGitBase->run(cmd);
99
100 return ret;
101}
102