--- a/Allura/allura/controllers/repository.py
+++ b/Allura/allura/controllers/repository.py
@@ -127,7 +127,7 @@
downstream=dict(
project_id=c.project._id,
mount_point=c.app.config.options.mount_point,
- commit_id=c.app.repo.commit(kw['source_branch']).object_id)
+ commit_id=c.app.repo.commit(kw['source_branch'])._id)
with c.app.repo.push_upstream_context():
mr = M.MergeRequest.upsert(
downstream=downstream,
@@ -200,10 +200,9 @@
for p_oid in ci.parent_ids:
children[p_oid].append(oid)
result = []
-
for row, oid in enumerate(topo_sort(children, parents, dates, head_ids)):
ci = commits_by_id[oid]
- url=c.app.repo.url_for_commit(Object(object_id=oid))
+ url=c.app.repo.url_for_commit(Object(_id=oid))
msg_split = ci.message.splitlines()
if msg_split:
msg = msg_split[0]
@@ -266,11 +265,11 @@
email=commit.authored.email,
),
url=commit.url(),
- id=commit.object_id,
+ id=commit._id,
committed_date=commit.committed.date,
authored_date=commit.authored.date,
message=commit.message,
- tree=commit.tree.object_id,
+ tree=commit.tree._id,
committer=dict(
name=commit.committed.name,
email=commit.committed.email,
@@ -408,7 +407,7 @@
def log(self, limit=None, page=0, count=0, **kw):
limit, page, start = g.handle_paging(limit, page)
revisions = c.app.repo.log(
- branch=self._commit.object_id,
+ branch=self._commit._id,
offset=start,
limit=limit)
c.log_widget = self.log_widget
@@ -451,14 +450,19 @@
filename = h.really_unicode(
unquote(
request.environ['PATH_INFO'].rsplit('/')[-1]))
- if filename and filename in self._tree.object_id_index and self._tree.is_blob(filename):
- return self.FileBrowserClass(
- self._commit,
- self._tree,
- filename), rest
+ if filename:
+ try:
+ obj = self._tree[filename]
+ except KeyError:
+ raise exc.HTTPNotFound()
+ if isinstance(obj, M.repo.Blob):
+ return self.FileBrowserClass(
+ self._commit,
+ self._tree,
+ filename), rest
elif rest == ('index', ):
rest = (request.environ['PATH_INFO'].rsplit('/')[-1],)
- tree = self._tree.get_tree(next)
+ tree = self._tree[next]
if tree is None:
raise exc.HTTPNotFound
return self.__class__(
@@ -532,11 +536,10 @@
diff=diff)
def topo_sort(children, parents, dates, head_ids):
- to_visit = set(head_ids)
+ to_visit = sorted(list(set(head_ids)), key=lambda x: dates[x])
visited = set()
while to_visit:
- next = max(to_visit, key=lambda x: dates[x])
- to_visit.remove(next)
+ next = to_visit.pop()
if next in visited: continue
visited.add(next)
yield next
@@ -544,6 +547,6 @@
for c in children[p]:
if c not in visited: break
else:
- to_visit.add(p)
+ to_visit.append(p)
on_import()