Download raw body.
"no commits to rebase" when rebasing on the initial commit
apparently 'got rebase' fails when rebasing directly on top of the initial repository. Test below simulates it, uncomment the un-indented lines to make it pass. this seems due to this bit --- got/got.c +++ got/got.c @@ -11226,11 +11226,8 @@ cmd_rebase(int argc, char *argv[]) parent_ids = got_object_commit_get_parent_ids(commit); pid = STAILQ_FIRST(parent_ids); - if (pid == NULL) { - error = got_error(GOT_ERR_EMPTY_REBASE); - goto done; - } - error = collect_commits(&commits, commit_id, &pid->id, + error = collect_commits(&commits, commit_id, + pid ? &pid->id : commit_id, yca_id, got_worktree_get_path_prefix(worktree), GOT_ERR_REBASE_PATH, repo); got_object_commit_close(commit); and that change makes the test pass, but makes test_rebase_no_commits_to_rebase pass too which is not good. My testcase is fundamentally the opposite of no_commits_to_rebase. no idea how to go from here :( Thanks! Omar Polo diff /home/op/w/gotd commit - 0d98195bc8c97f44f5635b97b8020dd934f677f0 path + /home/op/w/gotd blob - f87f1d9e51fc63c6ebf7cc957f15ec52ddd15420 file + regress/cmdline/rebase.sh --- regress/cmdline/rebase.sh +++ regress/cmdline/rebase.sh @@ -1885,6 +1885,42 @@ test_parseargs "$@" test_done "$testroot" "$ret" } +test_rebase_one_commit() { + local testroot=`test_init rebase_one_commit` + + if ! got checkout $testroot/repo $testroot/wt >/dev/null; then + test_done "$testroot" 1 + return 1 + fi + +# decomment to make it work: +#echo "modified alpha" >$testroot/wt/alpha +#(cd $testroot/wt && got commit -m 'edit alpha on master') >/dev/null + + (cd $testroot/wt && got branch newbranch) >/dev/null + + echo "modified alpha on newbranch" >$testroot/wt/alpha + (cd $testroot/wt && got commit -m 'edit alpha') >/dev/null + (cd $testroot/wt && got update) >/dev/null + local commit=`git_show_branch_head $testroot/repo newbranch` + + (cd $testroot/wt && got rebase master) >$testroot/stderr \ + 2> /dev/null + + echo "Forwarding refs/heads/master to commit $commit" \ + >$testroot/stderr.expected + echo "Switching work tree to refs/heads/master" \ + >> $testroot/stderr.expected + + if ! cmp -s $testroot/stderr.expected $testroot/stderr; then + diff -u $testroot/stderr.expected $testroot/stderr + test_done "$testroot" 1 + return 1 + fi + + test_done "$testroot" 0 +} + test_parseargs "$@" run_test test_rebase_basic run_test test_rebase_ancestry_check @@ -1906,3 +1942,4 @@ run_test test_rebase_out_of_date2 run_test test_rebase_nonbranch run_test test_rebase_umask run_test test_rebase_out_of_date2 +run_test test_rebase_one_commit
"no commits to rebase" when rebasing on the initial commit