[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#69532: mv's new -x option should be made orthogonal to -t/-T/default
From: |
Paul Eggert |
Subject: |
bug#69532: mv's new -x option should be made orthogonal to -t/-T/default |
Date: |
Wed, 20 Mar 2024 16:56:32 -0700 |
User-agent: |
Mozilla Thunderbird |
On 3/20/24 15:53, Bernhard Voelker wrote:
$ echo 1 > a
$ mkdir d
$ echo 2 > d/a
$ src/mv -v --exchange a a a d
renamed 'a' -> 'd/a'
renamed 'a' -> 'd/a'
renamed 'a' -> 'd/a'
$ cat a
2
$ src/mv -v --exchange a a a d
renamed 'a' -> 'd/a'
renamed 'a' -> 'd/a'
renamed 'a' -> 'd/a'
$ cat a
1
$ src/mv -v --exchange a a a a d
renamed 'a' -> 'd/a'
renamed 'a' -> 'd/a'
renamed 'a' -> 'd/a'
renamed 'a' -> 'd/a'
$ cat a
1
Yes, that's the expected behavior for this contrived case. Just as one
would get odd behavior if one did the same thing without --exchange.
I remember some implementation where mv(1) really was just a rename(2),
which failed when crossing file systems. Was it some HP-UX or Solaris mv(1)?
I doubt it. Even 7th Edition 'mv' (1979) fell back on 'cp' when the link
syscall failed (this was before 'rename' existed).
My point is that "exchange" is a different functionality.
Yes, but it's closely related. Arguably --backup is also a different
functionality too (and arguably --exchange is simply an alternative
backup scheme!) but 'mv' has --backup.
- How large is the useful overlap with the existing code of mv(1)?
Not much: no traditional rename nor copy.
I don't follow this point. The code change was fairly small, which
indicates there was a lot of overlap with existing functionality.
- How large is the useful overlap with the existing options/modes of mv(1)?
- exchange contradicts --backup,
That could be fixed for regular files, if there's a need, by backing up
the destination via 'link' before exchanging. For directories it's
admittedly a problem, but that's also the case for plain 'mv' (or for
'cp' or 'ln', for that matter) so there's not much new here.
- exchange is not useful together with options working with a regular
rename of copy, at least: --update, -Z, -n.
It should work with --update and -Z. -n of course is logically
incompatible, but this not the only set of logically incompatible
options (e.g., -t vs -T).
- not sure if exchange works well together with -f.
What problems do you see there?
why does exchange not work to exchange a regular with a
directory file?
It works. I don't see a problem there.
$ touch a
$ mkdir d
$ ./mv -T --exchange a d
$ ls -ld a d
drwxr-xr-x. 2 eggert eggert 4096 Mar 20 16:52 a
-rw-r--r--. 1 eggert eggert 0 Mar 20 16:52 d
Finally, the test cases are very sparse:
Feel free to add some. :-)
- bug#69532: mv's new -x option should be made orthogonal to -t/-T/default, (continued)
- bug#69532: mv's new -x option should be made orthogonal to -t/-T/default, Pádraig Brady, 2024/03/05
- bug#69532: mv's new -x option should be made orthogonal to -t/-T/default, Karel Zak, 2024/03/05
- bug#69532: mv's new -x option should be made orthogonal to -t/-T/default, Masatake YAMATO, 2024/03/05
- bug#69532: mv's new -x option should be made orthogonal to -t/-T/default, Paul Eggert, 2024/03/17
- bug#69532: mv's new -x option should be made orthogonal to -t/-T/default, Pádraig Brady, 2024/03/17
- bug#69532: mv's new -x option should be made orthogonal to -t/-T/default, Pádraig Brady, 2024/03/17
- bug#69532: mv's new -x option should be made orthogonal to -t/-T/default, Paul Eggert, 2024/03/20
- bug#69532: mv's new -x option should be made orthogonal to -t/-T/default, Bernhard Voelker, 2024/03/20
- bug#69532: mv's new -x option should be made orthogonal to -t/-T/default, Paul Eggert, 2024/03/20
- bug#69532: mv's new -x option should be made orthogonal to -t/-T/default, Bernhard Voelker, 2024/03/20
- bug#69532: mv's new -x option should be made orthogonal to -t/-T/default,
Paul Eggert <=
- bug#69532: mv's new -x option should be made orthogonal to -t/-T/default, Bernhard Voelker, 2024/03/21
- bug#69532: mv's new -x option should be made orthogonal to -t/-T/default, Paul Eggert, 2024/03/22
- bug#69532: mv's new -x option should be made orthogonal to -t/-T/default, Bernhard Voelker, 2024/03/23
- bug#69532: mv's new -x option should be made orthogonal to -t/-T/default, Karel Zak, 2024/03/22
- bug#69532: mv's new -x option should be made orthogonal to -t/-T/default, Bernhard Voelker, 2024/03/23
- bug#69532: mv's new -x option should be made orthogonal to -t/-T/default, Rob Landley, 2024/03/20
- bug#69532: mv's new -x option should be made orthogonal to -t/-T/default, Rob Landley, 2024/03/05
bug#69532: mv's new -x option should be made orthogonal to -t/-T/default, Petr Malat, 2024/03/05