We need to handle the "T" status from git. Currently we error:
Traceback (most recent call last):
File "/var/local/allura/Allura/allura/tasks/repo_tasks.py", line 47, in clone
cloned_from_url)
File "/var/local/allura/Allura/allura/model/repository.py", line 533, in init_as_clone
self.refresh(notify=False, new_clone=True)
File "/var/local/allura/Allura/allura/model/repository.py", line 663, in refresh
refresh_repo(self, all_commits, notify, new_clone)
File "/var/local/allura/Allura/allura/model/repo_refresh.py", line 122, in refresh_repo
compute_lcds(ci, model_cache, lcid_cache)
File "/var/local/allura/Allura/allura/model/repo_refresh.py", line 544, in compute_lcds
_compute_lcds(tree, model_cache)
File "/var/local/allura/Allura/allura/model/repo_refresh.py", line 554, in _compute_lcds
lcd = LastCommit._build(tree)
File "/var/local/allura/Allura/allura/model/repository.py", line 1573, in _build
prev_lcd_cid = cls._prev_commit_id(tree.commit, path)
File "/var/local/allura/Allura/allura/model/repository.py", line 1537, in _prev_commit_id
if not commit.parent_ids or path in commit.added_paths:
File "/var/local/env-allura/lib/python2.7/site-packages/Ming-0.4.7-py2.7.egg/ming/utils.py", line 18, in __get__
result = obj.__dict__[self.__name__] = self._func(obj)
File "/var/local/allura/Allura/allura/model/repository.py", line 1241, in added_paths
for path in self.paged_diffs()['added']:
File "/var/local/allura/Allura/allura/model/repository.py", line 1170, in paged_diffs
diffs = self.repo.paged_diffs(self._id, start, end)
File "/var/local/allura/Allura/allura/model/repository.py", line 514, in paged_diffs
return self._impl.paged_diffs(commit_id, start, end)
File "/var/local/allura/ForgeGit/forgegit/model/git_repo.py", line 702, in paged_diffs
}[status]
KeyError: 'T'
fix on branch db/8001
To test, make a commit in which you change a text file to a symlink or vice versa. Changing a file to a directory doesn't work. A gitsubmodule would probably trigger it too. Push that commit and view it.