             (original-filemarks (svn-status-line-info->filemark original))
             (original-propmarks (svn-status-line-info->propmark original)))
         (cond
-         ((or (eq original-filemarks 77)  ;;original has local mods: maybe do `svn mv --force'
-              (eq original-propmarks 77)) ;;original has local prop mods: maybe do `svn mv --force'
-          (if (yes-or-no-p (format "%s has local modifications; use `--force' to really move it? "
-                                   original-name))
-              (svn-run nil t 'mv "mv" "--force" "--" original-name dest)
-            (message "Not moving %s" original-name)))
-         ((eq original-filemarks 63) ;;original is unversioned: maybe do plain `mv'
-          (if (yes-or-no-p (format "%s is unversioned.  Use plain `mv -i %s %s'? "
-                                   original-name original-name dest))
-              (call-process "mv" nil (get-buffer-create "*svn-process*") nil "-i" original-name dest)
-            (message "Not moving %s" original-name)))
-
-         ((eq original-filemarks 65) ;;original has `A' mark (eg it was `svn add'ed, but not committed)
-          (message "Not moving %s (try committing it first)" original-name))
-
-         ((eq original-filemarks 32) ;;original is unmodified: can use `svn mv'
-          (svn-run nil t 'mv "mv" "--" original-name dest))
-
-         ;;file is conflicted in some way?
+         ((or (eq original-filemarks 77)  ;local mods: maybe do `svn mv --force'
+              (eq original-propmarks 77)) ;local prop mods: maybe do `svn mv --force'
+          (if (yes-or-no-p
+               (format "%s has local modifications; use `--force' to really move it? "
+                       original-name))
+              (svn-status-run-mv-cp command original-name dest t)
+            (message "Not acting on %s" original-name)))
+         ((eq original-filemarks 63) ;original is unversioned: use fallback
+          (if (yes-or-no-p (format "%s is unversioned.  Use `%s -i -- %s %s'? "
+                                   original-name fallback original-name dest))
+              (call-process fallback nil (get-buffer-create "*svn-process*") nil
+                            "-i" "--" original-name dest)
+            ;;new files created by fallback are not in *svn-status* now,
+            ;;TODO: so call (svn-status-update) here?
+            (message "Not acting on %s" original-name)))
+
+         ((eq original-filemarks 65) ;;`A' (`svn add'ed, but not committed)
+          (message "Not acting on %s (commit it first)" original-name))
+
+         ((eq original-filemarks 32) ;original is unmodified: can proceed
+          (svn-status-run-mv-cp command original-name dest))
+
+         ;;file has some other mark (eg conflicted)
          (t
-          (if (yes-or-no-p (format "The status of %s looks scary.  Risk moving it anyway? " original-name))
-              (svn-run nil t 'mv "mv" "--" original-name dest)
-            (message "Not moving %s" original-name))))))
-        (svn-status-update)))
+          (if (yes-or-no-p
+               (format "The status of %s looks scary.  Risk moving it anyway? "
+                       original-name))
+              (svn-status-run-mv-cp command original-name dest)
+            (message "Not acting on %s" original-name))))))
+    (svn-status-update)))
+
+(defun svn-status-run-mv-cp (command original destination &optional force)
+  "Actually run svn mv or svn cp.
+This is just to prevent duplication in `svn-status-prompt-and-act-on-files'"
+  (if force
+      (svn-run nil t (intern command) command "--force" "--" original-name dest)
+    (svn-run nil t (intern command) command "--" original-name dest))
+;;;TODO: use something like the following instead of calling svn-status-update
+;;;      at the end of svn-status-mv-cp.
+;;   (let ((output (svn-status-parse-ar-output))
+;;         newfile
+;;         buffer-read-only) ; otherwise insert-line-in-status-buffer fails
+;;     (dolist (new-file output)
+;;       (when (eq (cadr new-file) 'added-wc)
+;;         ;; files with 'wc-added action do not exist in *svn-status*
+;;         ;; buffer yet, so give each of them their own line-info
+;;         ;; TODO: need to insert the new line-info in a sensible place, ie in the correct directory! [svn-status-filename-to-buffer-position-cache might help?]
+
+;;         (svn-insert-line-in-status-buffer
+;;          (svn-status-make-line-info (car new-file)))))
+;;     (svn-status-update-with-command-list output))
+  )
 
 (defun svn-status-revert ()
   "Run `svn revert' on all selected files.

                             (overlay-get overlay 'svn-info))))
        svn-info)
    ;; different mode, means called not from the *svn-status* buffer
    '((nil nil) 32 nil "." 0 0 "" nil nil nil nil)))


(defun svn-status-get-file-list (use-marked-files)

;; * checkout (co)             implemented
;; * cleanup                   implemented
;; * commit (ci)               implemented
;; * copy (cp)                 implemented
;; * delete (del, remove, rm)  implemented
;; * diff (di)                 implemented
;; * export                    implemented
