* gitview: Use git ls-remote to find the tag and branch details
@ 2006-02-22 16:07 Aneesh Kumar K.V
0 siblings, 0 replies; only message in thread
From: Aneesh Kumar K.V @ 2006-02-22 16:07 UTC (permalink / raw)
To: git, Junio C Hamano, aneesh.kumar
[-- Attachment #1: Type: text/plain, Size: 0 bytes --]
[-- Attachment #2: 0002-gitview-Use-git-ls-remote-to-find-the-tag-and-branch-details.txt --]
[-- Type: text/plain, Size: 2707 bytes --]
From: Junio C Hamano <junkio@cox.net>
This fix the below bug
Junio C Hamano <junkio@cox.net> writes:
>
> It does not work in my repository, since you do not seem to
> handle branch and tag names with slashes in them. All of my
> topic branches live in directories with two-letter names
> (e.g. ak/gitview).
Also use ${GIT_DIR} directly so that it works with below environment setup
GIT_DIR=/home/opensource/Test\ Output/git-devel/.git
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@gmail.com>
---
contrib/gitview/gitview | 54 ++++++++++++-----------------------------------
1 files changed, 14 insertions(+), 40 deletions(-)
ecd82bdd8399b84ada1f4fc0c720a88ae0735a94
diff --git a/contrib/gitview/gitview b/contrib/gitview/gitview
index 0e52c78..76a1b67 100755
--- a/contrib/gitview/gitview
+++ b/contrib/gitview/gitview
@@ -56,20 +56,6 @@ def show_date(epoch, tz):
return time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(secs))
-def get_sha1_from_tags(line):
- fp = os.popen("git cat-file -t " + line)
- entry = string.strip(fp.readline())
- fp.close()
- if (entry == "commit"):
- return line
- elif (entry == "tag"):
- fp = os.popen("git cat-file tag "+ line)
- entry = string.strip(fp.readline())
- fp.close()
- obj = re.split(" ", entry)
- if (obj[0] == "object"):
- return obj[1]
- return None
class CellRendererGraph(gtk.GenericCellRenderer):
"""Cell renderer for directed graph.
@@ -467,32 +453,20 @@ class GitView:
respective sha1 details """
self.bt_sha1 = { }
- git_dir = os.getenv("GIT_DIR")
- if (git_dir == None):
- git_dir = ".git"
-
- #FIXME the path seperator
- ref_files = os.listdir(git_dir + "/refs/tags")
- for file in ref_files:
- fp = open(git_dir + "/refs/tags/"+file)
- sha1 = get_sha1_from_tags(string.strip(fp.readline()))
- try:
- self.bt_sha1[sha1].append(file)
- except KeyError:
- self.bt_sha1[sha1] = [file]
- fp.close()
-
-
- #FIXME the path seperator
- ref_files = os.listdir(git_dir + "/refs/heads")
- for file in ref_files:
- fp = open(git_dir + "/refs/heads/" + file)
- sha1 = get_sha1_from_tags(string.strip(fp.readline()))
- try:
- self.bt_sha1[sha1].append(file)
- except KeyError:
- self.bt_sha1[sha1] = [file]
- fp.close()
+ ls_remote = re.compile('^(.{40})\trefs/([^^]+)(?:\\^(..))?$');
+ fp = os.popen('git ls-remote "${GIT_DIR:-.git}"')
+ while 1:
+ line = string.strip(fp.readline())
+ if line == '':
+ break
+ m = ls_remote.match(line)
+ if not m:
+ continue
+ (sha1, name) = (m.group(1), m.group(2))
+ if not self.bt_sha1.has_key(sha1):
+ self.bt_sha1[sha1] = []
+ self.bt_sha1[sha1].append(name)
+ fp.close()
def construct(self):
--
1.2.0-dirty
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2006-02-22 16:07 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-02-22 16:07 gitview: Use git ls-remote to find the tag and branch details Aneesh Kumar K.V
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).