diff --git a/mercurial/fancyopts.py b/mercurial/fancyopts.py
index 6e040f6c2c9ce1b961a77ab6834c228009f4e673_bWVyY3VyaWFsL2ZhbmN5b3B0cy5weQ==..88803a69b24ac0ea4298470b70a67043a61a2ff2_bWVyY3VyaWFsL2ZhbmN5b3B0cy5weQ== 100644
--- a/mercurial/fancyopts.py
+++ b/mercurial/fancyopts.py
@@ -9,7 +9,10 @@
     for s, l, d, c in options:
         pl = l.replace('-', '_')
         map['-'+s] = map['--'+l] = pl
-        state[pl] = d
+        if isinstance(d, list):
+            state[pl] = d[:]
+        else:
+            state[pl] = d
         dt[pl] = type(d)
         if (d is not None and d is not True and d is not False and
             not callable(d)):