Signed-off-by: Yann Dirson <redacted>
---
stgit/commands/rebase.py | 4 ++++
t/t2200-rebase.sh | 12 ++++++++++++
2 files changed, 16 insertions(+), 0 deletions(-)
diff --git a/stgit/commands/rebase.py b/stgit/commands/rebase.py
index d132b60..2f0e660 100644
--- a/stgit/commands/rebase.py
+++ b/stgit/commands/rebase.py
@@ -52,6 +52,10 @@ def func(parser, options, args):
check_conflicts()
check_head_top_equal()
+ # ensure an exception is raised before popping on non-existent target
+ if git_id(args[0]) == None:
+ raise GitException, 'Unknown revision: %s' % git_id
+
applied = prepare_rebase(real_rebase=True, force=options.force)
rebase(args[0])
post_rebase(applied, options.nopush, options.merged)diff --git a/t/t2200-rebase.sh b/t/t2200-rebase.sh
index 882572c..c142e08 100755
--- a/t/t2200-rebase.sh
+++ b/t/t2200-rebase.sh
@@ -31,4 +31,16 @@ test_expect_success \
test `stg applied | wc -l` = 1
'
+test_expect_failure \
+ 'Attempt rebase to non-existing commit' \
+ '
+ stg rebase not-a-ref
+ '
+
+test_expect_success \
+ 'Check patches were re-applied' \
+ '
+ test $(stg applied | wc -l) = 1
+ '
+
test_done