<br>The main problem with the UI, particularly as it relates to the mv command, is that it is not clear to the user what has and&nbsp; what has not happened.&nbsp; <br><br>Commands either succeed or they don&#39;t.&nbsp; In the situations that they don&#39;t succeed, they typically (that is to say, in my experience) fail in one of two ways:<br>
1.&nbsp; When the command exits, nothing has changed from before the command was issued<br>2.&nbsp; The command continues to execute and reports errors as they occur - while also reporting successes as they occur under normal successful operation.<br>
<br>bzr mv really doesn&#39;t operate like any of that, particularly as it relates to failure.&nbsp; In the case that it succeeds, the successes are cached and then printed just prior to end of execution.&nbsp; But if it fails, it just fails with an error message - no indication that there is any successes and no information about the state of everything else.&nbsp; <br>
<br>This lack of indication/information is particularly dissonant to the bzr mv command because under normal operation, successes are reported - so users are inclined to think that if there is information to report beyond just failure, bzr would report it.&nbsp; <br>
<br>I modified bzr mv to behave as a&nbsp; modified second failure option because I prefer formatted and organized output over random success and failure messages.&nbsp; I know that as unix users we&#39;re use to the kind of reporting you get with a recursive grep or find or ls (i.e. reports on successes, reports on failures, as they happen) - but while I&#39;m use to it, I still find it incredibly annoying.&nbsp; Aside from knowing that it&#39;s working, I don&#39;t really care to know about the status of each and every file until the end - and then I want it organized because all I really care about is failure.<br>
<br>Either way, I don&#39;t think it&#39;s a good idea for failures to end the command - and certainly not without full reporting of successes and failures (and, I suppose also, non-attempts).<br><br>So, I see at present three options for improving the UI for this command:<br>
1. Report successes as they occur, end execution at first failure, and in the event of failure, report both failure and non-attempts<br>2. Report successes as they occur, report failures as they occur, and do not end execution upon failure<br>
3. Cache successes and failures until the end of execution and then report all attempts, grouped according to success and failure<br><br>4. A last option to consider is to mirror more closely the standard mv command.&nbsp; Messing with unix mv, I see:<br>
$ touch a<br>$ touch d<br>$ mkdir dir<br>$ mv a b c d dir<br>mv: cannot stat `b&#39;: No such file or directory<br>mv: cannot stat `c&#39;: No such file or directory<br>$ ls dir<br>a&nbsp;&nbsp;&nbsp; d<br><br>So in emulating more closely unix mv behavior, we could turn off success reporting for bzr mv, attempt to move all files in the argument list, and only report errors of those that fail.<br>
<br>Are there other options that should be considered?&nbsp; If not, then what option would the bzr team prefer.<br><br>--Spencer<br><br><div class="gmail_quote">On Wed, Feb 27, 2008 at 2:19 PM, Alexander Belchenko &lt;<a href="mailto:bialix@ukr.net">bialix@ukr.net</a>&gt; wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Alexander Belchenko has voted comment.<br>
Status is now: Waiting<br>
Comment:<br>
Your approach is not comfortable for me. I&#39;d like to either fix original<br>
bug by printing information about each rename immediately, so user will<br>
see what done and where command failed.<br>
<br>
I think your patch needs more discussion about intended UI for this use<br>
case.<br>
<div><div></div><div class="Wj3C7c"><br>
For details, see:<br>
<a href="http://bundlebuggy.aaronbentley.com/request/%3C64ab70ac0802041811u61752e66l3a04f025336390ae%40mail.gmail.com%3E" target="_blank">http://bundlebuggy.aaronbentley.com/request/%3C64ab70ac0802041811u61752e66l3a04f025336390ae%40mail.gmail.com%3E</a><br>

<br>
</div></div></blockquote></div><br>