diff options
Diffstat (limited to 'bn_django')
-rw-r--r-- | bn_django/git_browse/models.py | 35 | ||||
-rw-r--r-- | bn_django/git_browse/templates/git_browse/tree_table | 4 | ||||
-rw-r--r-- | bn_django/git_browse/views.py | 16 | ||||
-rw-r--r-- | bn_django/git_wiki/models.py | 2 |
4 files changed, 51 insertions, 6 deletions
diff --git a/bn_django/git_browse/models.py b/bn_django/git_browse/models.py index c914cac..2af2c98 100644 --- a/bn_django/git_browse/models.py +++ b/bn_django/git_browse/models.py @@ -106,6 +106,37 @@ class Tree(models.Model): def get_admin_url(self): return "%s/code/tree/%s/" % (ADMIN_URL, self.id) + def update(self): + import commands + if (not self.id): return + + self.id = self.id.strip() + tree_ls = commands.getoutput(GITPREFIX + ' ls-tree --full-name ' \ + + self.id) + tree_objs = list() + blob_objs = list() + for line in tree_ls.splitlines(): + l = line.split() + if len(l) < 4: + continue + if l[1] == 'tree': + t = Tree(id=l[2]) + t.path = ' '.join(l[3:]) + if self.path and self.path != '/': + t.path = self.path + '/' + t.path + t.name = t.path + tree_objs.append(t) + if l[1] == 'blob': + i = Item(id=l[2]) + i.path = ' '.join(l[3:]) + if self.path and self.path != '/': + i.path = self.path + '/' + i.path + i.name=i.path + blob_objs.append(i) + self.tree_objs = tree_objs + self.blob_objs = blob_objs + self.all_objs = tree_objs + blob_objs + def tree_from_str(s): s = s.split(); if len(s) != 4: return @@ -183,8 +214,6 @@ class Commit(models.Model): self.id = self.id.strip() raw = commands.getoutput(GITPREFIX + ' cat-file -p ' + self.id) - self.rawdiff = commands.getoutput(GITPREFIX + ' diff ' + self.id \ - +' | cat') raw = raw.splitlines() if len(raw) < 3: return @@ -196,6 +225,8 @@ class Commit(models.Model): self.author_date = time.ctime(int(raw[2].split()[-2])) self.committer = raw[3].split()[1] self.committer_date = time.ctime(int(raw[3].split()[-2])) + self.rawdiff = commands.getoutput(GITPREFIX + ' diff ' \ + + self.parenthash + ' ' + self.id + ' | cat') if len(raw) > 4: for l in raw[4:]: self.comment += str(l) + '\n' diff --git a/bn_django/git_browse/templates/git_browse/tree_table b/bn_django/git_browse/templates/git_browse/tree_table index a472283..7f67fe9 100644 --- a/bn_django/git_browse/templates/git_browse/tree_table +++ b/bn_django/git_browse/templates/git_browse/tree_table @@ -1,6 +1,6 @@ -{% if tree_objs %} +{% if all_objs %} <table class="gitbrowser"> - {% for o in tree_objs %} + {% for o in all_objs %} <tr> <td class="objtype"> {{o.type}}</td> <td class="filemode"> diff --git a/bn_django/git_browse/views.py b/bn_django/git_browse/views.py index e953d26..1f1b03c 100644 --- a/bn_django/git_browse/views.py +++ b/bn_django/git_browse/views.py @@ -48,9 +48,21 @@ def view_tree(request, repo, hash=None,branch=None): if len(l) < 4: continue if l[1] == 'tree': - tree_objs.append(tree_from_str(line)) + t = Tree(id=l[2]) + t.path = ' '.join(l[3:]) + #if self.path and self.path != '/': + # t.path = self.path + '/' + t.path + t.name = t.path + t.type = 'tree' + tree_objs.append(t) if l[1] == 'blob': - tree_objs.append(blob_from_str(line)) + i = Blob(id=l[2]) + i.path = ' '.join(l[3:]) + #if self.path and self.path != '/': + # i.path = self.path + '/' + i.path + i.name=i.path + i.type = 'blob' + blob_objs.append(i) return render_to_response('git_browse/tree.html', dict(object=therepo, diff --git a/bn_django/git_wiki/models.py b/bn_django/git_wiki/models.py index f0a7e9c..83a275b 100644 --- a/bn_django/git_wiki/models.py +++ b/bn_django/git_wiki/models.py @@ -151,6 +151,8 @@ class Commit(models.Model): self.author_date = time.ctime(int(raw[1].split()[-2])) self.committer = raw[2].split()[1] self.committer_date = time.ctime(int(raw[2].split()[-2])) + self.rawdiff = commands.getoutput(GITPREFIX + ' diff ' \ + + self.parenthash + ' ' + self.id + ' | cat') if len(raw) > 3: for l in raw[3:]: self.comment += str(l) + '\n' |