--- a/Allura/allura/controllers/repository.py
+++ b/Allura/allura/controllers/repository.py
@@ -33,7 +33,7 @@
 from allura.lib.widgets import form_fields as ffw
 from allura.controllers.base import DispatchIndex
 from allura.lib.diff import HtmlSideBySideDiff
-
+from paste.deploy.converters import asbool
 from .base import BaseController
 
 log = logging.getLogger(__name__)
@@ -427,22 +427,17 @@
 
     @expose('jinja:allura:templates/repo/tarball.html')
     def tarball(self, **kw):
-        if tg.config.get('scm.repos.tarball.enable', 'false') != 'true':
+        if not asbool(tg.config.get('scm.repos.tarball.enable', False)):
             return
-        c.app.repo.set_tarball_status(self._revision, None)
-        shortname = c.app.repo.project.shortname
-        mount_point = c.app.repo.app.config.options.mount_point
-        filename = '%s-%s-%s.tar' % (shortname, mount_point, self._revision)
-        if (os.path.isfile(os.path.join(c.app.repo.tarball_path, filename)) and
-                (c.app.repo.get_tarball_status(self._revision) == 'ready')):
+        if (c.app.repo.get_tarball_status(self._revision) == 'ready'):
             redirect(c.app.repo.tarball_url(self._revision))
-        else:
+        elif (c.app.repo.get_tarball_status(self._revision) == None):
             allura.tasks.repo_tasks.tarball.post(revision=self._revision)
-        return dict(commit=self._commit)
+        return dict(commit=self._commit, revision=self._revision)
 
     @expose('json:')
     def tarball_status(self):
-        if tg.config.get('scm.repos.tarball.enable', 'false') != 'true':
+        if not asbool(tg.config.get('scm.repos.tarball.enable', False)):
             return
         return dict(status=c.app.repo.get_tarball_status(self._revision))
 
@@ -493,7 +488,8 @@
             tree=self._tree,
             path=self._path,
             parent=self._parent,
-            tool_subscribed=tool_subscribed)
+            tool_subscribed=tool_subscribed,
+            tarball_enable = asbool(tg.config.get('scm.repos.tarball.enable', False)))
 
     @expose()
     def _lookup(self, next, *rest):