diff options
Diffstat (limited to 'bn_django/git_browse/models.py')
| -rw-r--r-- | bn_django/git_browse/models.py | 36 | 
1 files changed, 16 insertions, 20 deletions
diff --git a/bn_django/git_browse/models.py b/bn_django/git_browse/models.py index 315365a..c914cac 100644 --- a/bn_django/git_browse/models.py +++ b/bn_django/git_browse/models.py @@ -2,13 +2,6 @@ from django.db import models  from django.conf import settings  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' @@ -23,11 +16,14 @@ if ADMIN_URL[-1] == '/':  # Create your models here.  class Repository(models.Model): -    path = models.FilePathField("relative path to repository", \ -            path=GITBROWSE_BASE,recursive=True,match="^.*\.git$",unique=True, \ +#    path = models.FilePathField("relative path to repository", \ +#            path=GITBROWSE_BASE,recursive=True,match="\.git$",unique=True, \ +#            blank=False) +    path = models.CharField("path to git dir", maxlength=386, unique=True,\ +            blank=False, default="/srv/git/") +    name = models.CharField(_("name"), maxlength=80, unique=True) +    slug = models.SlugField("short description of repo", unique=True,\              blank=False) -    name = models.CharField(_("name"), maxlength=80) -    slug = models.SlugField(prepopulate_from=("path",),unique=True)      git_version = models.CharField(_("git version"), maxlength=100, \              default="git version 1.4.4", blank=True, \              help_text="Output of \'git --version\'") @@ -46,29 +42,27 @@ class Repository(models.Model):      def getGITPREFIX(self):          """returns the glued together combination of GITCOMMAND and             GITBROWSE_BASE needed to call git commands on this repository""" -        return 'cd ' + str(GITBROWSE_BASE) + str(self.slug) + '; ' \ -            + str(GITCOMMAND) + ' --git-dir=' + str(GITBROWSE_BASE) \ -            + str(self.slug) + '/.git ' +        return 'cd ' + str(self.path) + '; ' + str(GITCOMMAND) + ' --git-dir='\ +            + str(self.path)      def scan(self):          import os          GITPREFIX = self.getGITPREFIX()          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') +        for h in os.listdir(self.path + '/refs/heads/'): +            f = open(self.path + '/refs/heads/' + h,'r')              heads[h.strip()] = f.readline().strip()              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') +        for t in os.listdir(self.path + '/refs/tags/'): +            f = open(self.path + '/refs/tags/' + t,'r')              tags[t.strip()] = f.readline().strip()              f.close()          return (GITPREFIX, heads, tags)      def shortlog(self):          import commands -        GITPREFIX = 'cd ' + GITBROWSE_BASE + self.slug + '; ' + GITCOMMAND \ -                + ' --git-dir=' + GITBROWSE_BASE + self.slug + '/.git ' +        GITPREFIX = self.getGITPREFIX()          logtxt = commands.getoutput(GITPREFIX \                  + ' log --relative-date --max-count=6 | cat')          log_items = logtxt.split('\ncommit ') @@ -195,6 +189,8 @@ class Commit(models.Model):          raw = raw.splitlines()          if len(raw) < 3: return           self.treehash = raw[0].split()[-1].strip() +        if not raw[1].startswith('parent'): +            raw.insert(1, 'parent  ')          self.parenthash = raw[1][6:].strip()          self.author = raw[2].split()[1]          self.author_date = time.ctime(int(raw[2].split()[-2]))  | 
