Anton Shepelev wrote on Sat, 28 Mar 2020 00:41 +00:00:
> Daniel Shahaf:
> > Tilde is also special to some shells, at least in the sh/csh
> > «~username» syntax and in zsh's «foo~bar» syntax (also part of
> > EXTENDED_GLOB);
>
> That is why I proposed a double `~' -- not perfect, of course, but
> I think none of the major shells will expand it. Of course, if I
> were designing it from scratch I should try to pick a single ASCII
> character that none of the common shells treat as special. I am not
> even sure that such a character exists, does it?
>
Period, comma, colon, underscore, plus, opening curly brace, forward
slash, closing square bracket(?), and multi-character sequences of
these.
> > An --option sounds a little too specialized to me. Also, it's a
> > form of action at a distance (the positional arguments and the
> > --option's presence would be coupled), whereas the ^/ syntax is
> > self-contained.
>
> Also true, but depends on one's viewpoint. I viewed
> `svn cp --remote' as a command acting upon the remote repository
> and `svn cp' as a command acting upon the working directory. In
> other words -- as a remote and a local command: two different
> commands with different interpretation of their arguments. Although
> this view is factally wrong,
Yeah, Subversion's convention is the other way around: arguments are
interpreted as URLs iff they look like URLs. This is true throughout
the CLI as well as in the API (e.g., svn_client_copy_source_t::path,
despite its name).
> it helps me understand SVN better, because local operations and
> sever-side operations are in my opinion very different, even though
> they fall into the same categories of copy, delete, move, &c. They are
> like different implementations of the same interface, but I divagate.
They _are_ different implementations of the same interface…
But anyway, if you want a command that takes local filenames and copies
remote files, couldn't you just write one? Using the URL flavours of
«svn cp» is racy (they won't throw out-of-date errors if something
changed between BASE and HEAD), but there are two sound alternatives:
1. This:
#!/bin/sh
svn cp -- "$1" "$2"
svn ci -- "$2"
svn up -r0 -- "$2"
2. «svnmucc -r».
Cheers,
Daniel
Received on 2020-03-28 06:48:15 CET