* [PATCH qgit] Show remote branch in orange tag mark
@ 2007-02-04 9:30 Marco Costalba
0 siblings, 0 replies; only message in thread
From: Marco Costalba @ 2007-02-04 9:30 UTC (permalink / raw)
To: GIT list; +Cc: Pavel Roskin
Teach qgit about remote branches and show them with an orange
background in tag mark indicator.
Signed-off-by: Marco Costalba <mcostalba@gmail.com>
---
src/git.cpp | 12 ++++++++++++
src/git.h | 12 +++++++-----
src/git_startup.cpp | 5 +++++
src/listview.cpp | 3 +++
4 files changed, 27 insertions(+), 5 deletions(-)
diff --git a/src/git.cpp b/src/git.cpp
index 33834d5..08b3309 100644
--- a/src/git.cpp
+++ b/src/git.cpp
@@ -182,6 +182,9 @@ const QStringList Git::getRefName(SCRef sha,
RefType type, QString* curBranch) c
else if (type == BRANCH)
return rf.branches;
+ else if (type == RMT_BRANCH)
+ return rf.remoteBranches;
+
else if (type == REF)
return rf.refs;
@@ -214,6 +217,9 @@ const QString Git::getRefSha(SCRef refName,
RefType type, bool askGit) {
else if ((any || type == BRANCH) && rf.branches.contains(refName))
return it.key();
+ else if ((any || type == RMT_BRANCH) && rf.remoteBranches.contains(refName))
+ return it.key();
+
else if ((any || type == REF) && rf.refs.contains(refName))
return it.key();
@@ -257,6 +263,9 @@ const QStringList Git::getAllRefNames(uint mask,
bool onlyLoaded) {
if (mask & BRANCH)
appendNamesWithId(names, it.key(), (*it).branches, onlyLoaded);
+ if (mask & RMT_BRANCH)
+ appendNamesWithId(names, it.key(), (*it).remoteBranches, onlyLoaded);
+
if (mask & REF)
appendNamesWithId(names, it.key(), (*it).refs, onlyLoaded);
@@ -283,6 +292,9 @@ const QString Git::getRevInfo(SCRef sha) {
const QString cap(type & CUR_BRANCH ? "Head: " : "Branch: ");
refsInfo = cap + getRefName(sha, BRANCH).join(" ");
}
+ if (type & RMT_BRANCH)
+ refsInfo.append(" Remote branch: " + getRefName(sha,
RMT_BRANCH).join(" "));
+
if (type & TAG)
refsInfo.append(" Tag: " + getRefName(sha, TAG).join(" "));
diff --git a/src/git.h b/src/git.h
index 48f4e06..5b174ab 100644
--- a/src/git.h
+++ b/src/git.h
@@ -51,11 +51,12 @@ public:
enum RefType {
TAG = 1,
BRANCH = 2,
- CUR_BRANCH = 4,
- REF = 8,
- APPLIED = 16,
- UN_APPLIED = 32,
- ANY_REF = 63
+ RMT_BRANCH = 4,
+ CUR_BRANCH = 8,
+ REF = 16,
+ APPLIED = 32,
+ UN_APPLIED = 64,
+ ANY_REF = 127
};
void checkEnvironment();
@@ -155,6 +156,7 @@ private:
Reference() : type(0) {}
uint type;
QStringList branches;
+ QStringList remoteBranches;
QString currentBranch;
QStringList tags;
QStringList refs;
diff --git a/src/git_startup.cpp b/src/git_startup.cpp
index 6b34460..84e62a5 100644
--- a/src/git_startup.cpp
+++ b/src/git_startup.cpp
@@ -172,6 +172,11 @@ bool Git::getRefs() {
cur->type |= CUR_BRANCH;
cur->currentBranch = curBranchName;
}
+ } else if (refName.startsWith("refs/remotes/") &&
!refName.endsWith("HEAD")) {
+
+ cur->remoteBranches.append(refName.mid(13));
+ cur->type |= RMT_BRANCH;
+
} else if (!refName.endsWith("HEAD")) {
cur->refs.append(refName);
diff --git a/src/listview.cpp b/src/listview.cpp
index bfc2a7d..80043e9 100644
--- a/src/listview.cpp
+++ b/src/listview.cpp
@@ -635,6 +635,9 @@ void ListViewItem::paintTagMarks(int col) {
if (rt & Git::BRANCH)
addBranchPixmap(&newPm);
+ if (rt & Git::RMT_BRANCH)
+ addRefPixmap(&newPm, git->getRefName(_sha, Git::RMT_BRANCH), ORANGE);
+
if (rt & Git::TAG)
addRefPixmap(&newPm, git->getRefName(_sha, Git::TAG), Qt::yellow);
--
1.5.0-rc3.GIT
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2007-02-04 9:30 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-02-04 9:30 [PATCH qgit] Show remote branch in orange tag mark Marco Costalba
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).