Generating merge diff fails to resolve delete/delete conflict
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
turnip |
Fix Released
|
High
|
Thiago F. Pappacena |
Bug Description
We ran into OOPS-18c97ad3b730e2b3f26dcf2cd39a4638 while generating a preview diff for a merge proposal: the situation was that some files had been renamed in the source branch, and then that renaming and some related changes were split out to a separate merge proposal and landed separately. The traceback on the turnip side was:
Traceback (most recent call last):
File "/srv/turnip/
self.
File "/srv/turnip/
respiter = self.wsgi(environ, resp.start_
File "/srv/turnip/
response = self.invoke_
File "/srv/turnip/
response = handle_
File "/srv/turnip/
response = view_callable(exc, request)
File "/srv/turnip/
result = view(context, request)
File "/srv/turnip/
response = handler(request)
File "/srv/turnip/
response = view_callable(
File "/srv/turnip/
return view(context, request)
File "/srv/turnip/
return view(context, request)
File "/srv/turnip/
return view(context, request)
File "/srv/turnip/
result = view(context, request)
File "/srv/turnip/
response = view(request)
File "/srv/turnip/
response = view_()
File "/srv/turnip/
return func(self, self.repo_store, name)
File "/srv/turnip/
sha1_
File "/srv/turnip/
conflicts = _add_conflicted
File "/srv/turnip/
index.
File "/srv/turnip/
check_
File "/srv/turnip/
raise IOError(message)
IOError: index does not contain lib/lp/
Further investigation revealed that I'd never added a specific test case for delete/delete conflicts (perhaps I had a hard time working out how to provoke one?), and so the code to handle them is very likely broken.
Related branches
- Colin Watson (community): Approve
-
Diff: 117 lines (+61/-22)3 files modifiedturnip/api/store.py (+24/-21)
turnip/api/tests/test_api.py (+36/-0)
turnip/api/tests/test_helpers.py (+1/-1)
Changed in turnip: | |
status: | Triaged → In Progress |
Changed in turnip: | |
assignee: | nobody → Thiago F. Pappacena (pappacena) |
Changed in turnip: | |
status: | In Progress → Fix Committed |
Changed in turnip: | |
status: | Fix Committed → Fix Released |