Index: llvm/utils/git-svn/git-llvm =================================================================== --- llvm/utils/git-svn/git-llvm +++ llvm/utils/git-svn/git-llvm @@ -26,6 +26,11 @@ import time assert sys.version_info >= (2, 7) +try: + exec("import __builtin__") # To avoid IDE's grammar check +except ImportError: + import builtins + try: dict.iteritems except AttributeError: @@ -99,6 +104,21 @@ sys.exit(1) +def ask_confirm(prompt): + # Python 2/3 compatibility + try: + input = eval("__builtin__.raw_input") + except NameError: + input = builtins.input + + while True: + query = input('%s (y/n): ' % (prompt)) + if query == '' or not query[0].lower() in ['y','n']: + print('Expect y or n!') + continue + return query[0].lower() == 'y' + + def split_first_path_component(d): # Assuming we have a git path, it'll use slashes even on windows...I hope. if '/' in d: @@ -427,6 +447,12 @@ 's' if len(revs) != 1 else '', '\n'.join(' ' + git('show', '--oneline', '--quiet', c) for c in revs))) + + # Ask confirmation if multiple commits are about to be pushed + if len(revs) != 1: + if not ask_confirm("Are you sure?"): + die("Aborting") + for r in revs: clean_svn(svn_root) svn_push_one_rev(svn_root, r, git_to_svn_mapping, dry_run)