evolve: support successors of ancestor of orphan with multiple roots
The previous code checked that the set of successors has a single root.
However, there’s no reason to require that in general.
Example:
o 6
|
o 5
|\
| o 4
| |
o | 3
|/
| * 2
| |
| x 1
|/
o 0
1 is obsoleted by 3, 4 and 6. We are considering the case when 2 gets evolved.
The roots are [3, 4] and the heads are [6]. Before the change, the user was
asked which destination to choose, but there was only one choice (6). After the
change, 6 is chosen as the destination.
import sys
formatted_args = []
UNSAFE_CHARACTERS = [" ", "!", "\"", "#", "$", "&", "'", "(", ")", "*", ",", ";", "<", ">", "?", "[", "\\", "]", "^", "`", "{", "|", "}", ":", "~", "/"]
def find_unsafe(arg):
for unsafe in UNSAFE_CHARACTERS:
if unsafe in arg:
return True
return False
for arg in sys.argv[1:]:
if find_unsafe(arg):
formatted_args.append('"%s"' % arg)
else:
formatted_args.append(arg)
print("$ " + " ".join(formatted_args))