aboutsummaryrefslogtreecommitdiffstats
path: root/bn_django/git_browse/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'bn_django/git_browse/models.py')
-rw-r--r--bn_django/git_browse/models.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/bn_django/git_browse/models.py b/bn_django/git_browse/models.py
index 765fe02..be097f8 100644
--- a/bn_django/git_browse/models.py
+++ b/bn_django/git_browse/models.py
@@ -5,6 +5,13 @@ try:
GITBROWSE_BASE = settings.GITBROWSE_BASE
except AttributeError:
GITBROWSE_BASE='/home'
+if GITBROWSE_BASE[-1] != '/':
+ GITBROWSE_BASE += '/'
+
+try:
+ GITCOMMAND = settings.GITCOMMAND
+except AttributeError:
+ GITCOMMAND='git'
try:
ADMIN_URL = settings.ADMIN_URL
@@ -34,6 +41,24 @@ class Repository(models.Model):
def get_admin_url(self):
return "%s/code/repository/%s/" % (ADMIN_URL, self.slug)
+ def scan(self):
+ import os
+
+ GITPREFIX = 'cd ' + GITBROWSE_BASE + self.slug + '; ' + GITCOMMAND \
+ + ' --git-dir=' + GITBROWSE_BASE + self.slug + '/.git '
+ heads = dict()
+ for h in os.listdir(GITBROWSE_BASE + self.slug + '/.git/refs/heads/'):
+ f = open(GITBROWSE_BASE + self.slug + '/.git/refs/heads/' + h,'r')
+ heads[h] = f.readline()
+ f.close
+ tags = dict()
+ for t in os.listdir(GITBROWSE_BASE + self.slug + '/.git/refs/tags/'):
+ f = open(GITBROWSE_BASE + self.slug + '/.git/refs/tags/' + t,'r')
+ tags[t] = f.readline()
+ f.close
+
+ return (GITPREFIX, heads, tags)
+
class Tree(models.Model):
repo = models.ForeignKey(Repository)
mode = models.CharField("file mode/permissions", blank=False,maxlength=4)