-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathraventreeitem.cpp
More file actions
65 lines (51 loc) · 2.61 KB
/
raventreeitem.cpp
File metadata and controls
65 lines (51 loc) · 2.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include "raventreeitem.h"
RavenTreeItem::RavenTreeItem(QObject *parent) : QObject(parent) {}
RavenTreeItem::~RavenTreeItem() {
qDeleteAll(children);
children.clear();
}
bool RavenTreeItem::checkIfFileDeleted(git_status_t status) {
if (status == GIT_STATUS_WT_DELETED || status == GIT_STATUS_INDEX_DELETED)
return true;
// file is new to index but deleted in working directory
if (status == (GIT_STATUS_INDEX_NEW | GIT_STATUS_WT_DELETED))
return true;
// file exists in index but deleted in working directory
if (status == (GIT_STATUS_INDEX_MODIFIED | GIT_STATUS_WT_DELETED))
return true;
// file is new to working directory but deleted in index
if (status == (GIT_STATUS_INDEX_DELETED | GIT_STATUS_WT_NEW))
return true;
return false;
}
RavenTreeItem::RavenTreeCategory RavenTreeItem::getTreeCategoryByStatus(git_status_t status) {
bool uncommitted = status == GIT_STATUS_WT_NEW || status == GIT_STATUS_WT_MODIFIED ||
status == GIT_STATUS_WT_DELETED || status == GIT_STATUS_WT_TYPECHANGE ||
status == GIT_STATUS_WT_RENAMED || status == GIT_STATUS_WT_UNREADABLE;
// Could be a new file that was staged and it contains some uncommitted changes.
if (status == (GIT_STATUS_INDEX_NEW | GIT_STATUS_WT_MODIFIED)) {
// qDebug() << "(GIT_STATUS_INDEX_NEW|GIT_STATUS_WT_MODIFIED)";
return RavenTreeCategory::BOTH;
}
// Could be a new file that was staged but it is now deleted in working directory
if (status == (GIT_STATUS_INDEX_NEW | GIT_STATUS_WT_DELETED)) {
// qDebug() << "(GIT_STATUS_INDEX_NEW|GIT_STATUS_WT_DELETED)";
return RavenTreeCategory::BOTH;
}
// Could be a new file that was staged but it is renamed in working directory
if (status == (GIT_STATUS_INDEX_NEW | GIT_STATUS_WT_RENAMED)) {
// qDebug() << "(GIT_STATUS_INDEX_NEW|GIT_STATUS_WT_RENAMED)";
return RavenTreeCategory::BOTH;
}
// Could be a file already staged and modified but it contains some uncommitted changes
if (status == (GIT_STATUS_INDEX_MODIFIED | GIT_STATUS_WT_MODIFIED)) {
// qDebug() << "(GIT_STATUS_INDEX_MODIFIED|GIT_STATUS_WT_MODIFIED)";
return RavenTreeCategory::BOTH;
}
// Could be a file already staged and modified but it is now deleted in working directory
if (status == (GIT_STATUS_INDEX_MODIFIED | GIT_STATUS_WT_DELETED)) {
// qDebug() << "(GIT_STATUS_INDEX_MODIFIED|GIT_STATUS_WT_DELETED)";
return RavenTreeCategory::BOTH;
}
return uncommitted ? RavenTreeCategory::UNCOMMITTED : RavenTreeCategory::STAGING;
}