break;
        }
        case EDIT_TODO:
-               ret = edit_todo_list(flags);
+               ret = edit_todo_list(the_repository, flags);
                break;
        case SHOW_CURRENT_PATCH: {
                struct child_process cmd = CHILD_PROCESS_INIT;
 
        }
 }
 
-int edit_todo_list(unsigned flags)
+int edit_todo_list(struct repository *r, unsigned flags)
 {
        struct strbuf buf = STRBUF_INIT;
        const char *todo_file = rebase_path_todo();
 
        strbuf_release(&buf);
 
-       transform_todos(the_repository, flags | TODO_LIST_SHORTEN_IDS);
+       transform_todos(r, flags | TODO_LIST_SHORTEN_IDS);
 
        if (strbuf_read_file(&buf, todo_file, 0) < 0)
                return error_errno(_("could not read '%s'."), todo_file);
        if (launch_sequence_editor(todo_file, NULL, NULL))
                return -1;
 
-       transform_todos(the_repository, flags & ~(TODO_LIST_SHORTEN_IDS));
+       transform_todos(r, flags & ~(TODO_LIST_SHORTEN_IDS));
 
        return 0;
 }
 
 #ifndef REBASE_INTERACTIVE_H
 #define REBASE_INTERACTIVE_H
 
+struct strbuf;
+struct repository;
+
 void append_todo_help(unsigned edit_todo, unsigned keep_empty,
                      struct strbuf *buf);
-int edit_todo_list(unsigned flags);
+int edit_todo_list(struct repository *r, unsigned flags);
 
 #endif