Discussion:
Wildcard bug? Or user error?
Nathan Hartman
2018-09-02 21:10:41 UTC
Permalink
Has there been a recent change to how wildcards (the asterisk '*') is
treated under Windows?

I am using command line client 1.10.2 r1835932 as installed with
TortoiseSVN 1.10.1, Build 28295 - 64 Bit , 2018/07/15 12:14:12, on
Windows 10 Home 1803 build 17134.254.

I've encountered weirdness with wildcards several times today, so I
just tried in a clean freshly checked-out copy:

E:\workspace\processor>svn rm *.hconfig
svn: E200005: Use --force to override this restriction (local modifications
may be lost)
svn: E200005: 'E:\workspace\processor\a' is not under version control

There is no file or directory named 'a' here; however many files in
this directory have names that begin with the letter 'a'.
Furthermore, when working in the command line earlier today, it
appeared that the names printed in the error messages were truncated
versions of filenames. In this case the filename was truncated to
just one character but I think I saw more characters in other
filenames earlier (not 100% sure on this point).

Other (possibly useful) information: There are no files whose names
differ only in case. The filenames do not contain spaces (nor do any
of the paths, whether in the repo or my working copy). There are no
properties set on this directory or any of its files. Also, I tried
similar operations on freshly checked out copies of other areas of
the repo and the same phenomenon is manifesting. I don't recall ever
seeing this before.

Thoughts?
Johan Corveleyn
2018-09-03 15:10:36 UTC
Permalink
Post by Nathan Hartman
Has there been a recent change to how wildcards (the asterisk '*') is
treated under Windows?
I am using command line client 1.10.2 r1835932 as installed with
TortoiseSVN 1.10.1, Build 28295 - 64 Bit , 2018/07/15 12:14:12, on
Windows 10 Home 1803 build 17134.254.
I've encountered weirdness with wildcards several times today, so I
E:\workspace\processor>svn rm *.hconfig
svn: E200005: Use --force to override this restriction (local modifications may be lost)
svn: E200005: 'E:\workspace\processor\a' is not under version control
There is no file or directory named 'a' here; however many files in
this directory have names that begin with the letter 'a'.
Furthermore, when working in the command line earlier today, it
appeared that the names printed in the error messages were truncated
versions of filenames. In this case the filename was truncated to
just one character but I think I saw more characters in other
filenames earlier (not 100% sure on this point).
Other (possibly useful) information: There are no files whose names
differ only in case. The filenames do not contain spaces (nor do any
of the paths, whether in the repo or my working copy). There are no
properties set on this directory or any of its files. Also, I tried
similar operations on freshly checked out copies of other areas of
the repo and the same phenomenon is manifesting. I don't recall ever
seeing this before.
Thoughts?
My first reaction is that this might be unrelated to svn, but merely
to Windows (or some Windows library). I wouldn't know what, but to
rule out that svn has anything to do with it, try something like 'dir
*.hconfig' in that directory.
--
Johan
Nathan Hartman
2018-09-03 20:30:03 UTC
Permalink
Post by Nathan Hartman
Post by Nathan Hartman
I've encountered weirdness with wildcards several times today, so I
E:\workspace\processor>svn rm *.hconfig
svn: E200005: Use --force to override this restriction (local
modifications may be lost)
Post by Nathan Hartman
svn: E200005: 'E:\workspace\processor\a' is not under version control
(snip)
Post by Nathan Hartman
My first reaction is that this might be unrelated to svn, but merely
to Windows (or some Windows library). I wouldn't know what, but to
rule out that svn has anything to do with it, try something like 'dir
*.hconfig' in that directory.
Thank you for your reply.

This behavior appears consistent everywhere. For example (I am
working in a different directory now):
E:\workspace\BSP>dir *.h
Volume in drive E is WORK
Volume Serial Number is D28A-433E

Directory of E:\workspace\BSP

09/03/2018 04:12 PM 828 BSP-Global.h
09/03/2018 04:12 PM 568 BSP-Main.h
09/03/2018 04:12 PM 632 DigitalInputs.h
09/03/2018 04:12 PM 8,528 DigitalInputsAutoGen.h
09/03/2018 04:12 PM 731 DigitalOutputs.h
09/03/2018 04:12 PM 10,073 DigitalOutputsAutoGen.h
09/03/2018 04:12 PM 502 DmaChannels.h
7 File(s) 21,862 bytes
0 Dir(s) 250,642,432 bytes free

Okay... Now:

E:\workspace\BSP>svn rm *.h
svn: E200005: Use --force to override this restriction (local modifications
may be lost)
svn: E200005: 'E:\workspace\BSP\B' is not under version control

Like before, it seems to find only the first letter of the filename.

Now if I go over to my Mac...

$ ls -1 *.h
BSP-Global.h
BSP-Main.h
DigitalInputs.h
DigitalInputsAutoGen.h
DigitalOutputs.h
DigitalOutputsAutoGen.h
DmaChannels.h

$ svn rm *.h
D BSP-Global.h
D BSP-Main.h
D DigitalInputs.h
D DigitalInputsAutoGen.h
D DigitalOutputs.h
D DigitalOutputsAutoGen.h
D DmaChannels.h

Caveat: My Mac is running svn 1.8.19; the misbehaving Windows machine
is running 1.10.2.

Any other thoughts?
Branko Čibej
2018-09-03 22:31:06 UTC
Permalink
Post by Nathan Hartman
Post by Nathan Hartman
Post by Nathan Hartman
I've encountered weirdness with wildcards several times today, so I
E:\workspace\processor>svn rm *.hconfig
svn: E200005: Use --force to override this restriction (local
modifications may be lost)
Post by Nathan Hartman
svn: E200005: 'E:\workspace\processor\a' is not under version control
(snip)
Post by Nathan Hartman
My first reaction is that this might be unrelated to svn, but merely
to Windows (or some Windows library). I wouldn't know what, but to
rule out that svn has anything to do with it, try something like 'dir
*.hconfig' in that directory.
Thank you for your reply.
This behavior appears consistent everywhere. For example (I am
E:\workspace\BSP>dir *.h
Volume in drive E is WORK
Volume Serial Number is D28A-433E
Directory of E:\workspace\BSP
09/03/2018 04:12 PM 828 BSP-Global.h
09/03/2018 04:12 PM 568 BSP-Main.h
09/03/2018 04:12 PM 632 DigitalInputs.h
09/03/2018 04:12 PM 8,528 DigitalInputsAutoGen.h
09/03/2018 04:12 PM 731 DigitalOutputs.h
09/03/2018 04:12 PM 10,073 DigitalOutputsAutoGen.h
09/03/2018 04:12 PM 502 DmaChannels.h
7 File(s) 21,862 bytes
0 Dir(s) 250,642,432 bytes free
E:\workspace\BSP>svn rm *.h
svn: E200005: Use --force to override this restriction (local modifications may be lost)
svn: E200005: 'E:\workspace\BSP\B' is not under version control
Like before, it seems to find only the first letter of the filename.
Now if I go over to my Mac...
$ ls -1 *.h
BSP-Global.h
BSP-Main.h
DigitalInputs.h
DigitalInputsAutoGen.h
DigitalOutputs.h
DigitalOutputsAutoGen.h
DmaChannels.h
$ svn rm *.h
D BSP-Global.h
D BSP-Main.h
D DigitalInputs.h
D DigitalInputsAutoGen.h
D DigitalOutputs.h
D DigitalOutputsAutoGen.h
D DmaChannels.h
Caveat: My Mac is running svn 1.8.19; the misbehaving Windows machine
is running 1.10.2.
Any other thoughts?
These cases are, believe it or not, completely different. On your Mac,
the shell expands the wildcards. On Windows, Subversion is linked with a
library that's shipped with Visual Studio (setargv.obj) that expands the
wildcards in the arguments. It looks like something strange is happening
during that wildcard expansion.

It would be best to report this to whoever built the Subversion
binaries; it might be that their setargv.obj is corrupt somehow.

In any case, there's no code in Subversion proper for expanding
wildcards in the command-line arguments.

-- Brane
Nathan Hartman
2018-09-04 01:32:08 UTC
Permalink
Post by Branko Čibej
These cases are, believe it or not, completely different. On your Mac,
the shell expands the wildcards. On Windows, Subversion is linked with a
library that's shipped with Visual Studio (setargv.obj) that expands the
wildcards in the arguments. It looks like something strange is happening
during that wildcard expansion.
It would be best to report this to whoever built the Subversion
binaries; it might be that their setargv.obj is corrupt somehow.
In any case, there's no code in Subversion proper for expanding
wildcards in the command-line arguments.
Thank you for explaining this.

The cli tools were installed with TortoiseSVN. I'll look into this further
and if it appears to be coming from Tortoise I'll report it there.
Perhaps other Tortoise users are not using the command line...
Nathan Hartman
2018-09-06 14:22:34 UTC
Permalink
Post by Branko Čibej
These cases are, believe it or not, completely different. On your Mac,
the shell expands the wildcards. On Windows, Subversion is linked with a
library that's shipped with Visual Studio (setargv.obj) that expands the
wildcards in the arguments. It looks like something strange is happening
during that wildcard expansion.
It would be best to report this to whoever built the Subversion
binaries; it might be that their setargv.obj is corrupt somehow.
In any case, there's no code in Subversion proper for expanding
wildcards in the command-line arguments.
Just to keep this list in the loop, in case someone else stumbles
upon this, Stefan of Tortoise fame has confirmed your suspicion:
There is a bug in the (at this time) latest Windows SDK, version
10.0.17134.0, that causes the first matching filename to be
truncated to one character.

An upcoming Windows Update is supposed to fix it.

Here is the link Stefan provided:

https://developercommunity.visualstudio.com/content/problem/289637/setargvobj-is-broken-in-the-latest-windows-sdk.html
Branko Čibej
2018-09-06 14:50:45 UTC
Permalink
Post by Branko Čibej
These cases are, believe it or not, completely different. On your Mac,
the shell expands the wildcards. On Windows, Subversion is linked with a
library that's shipped with Visual Studio (setargv.obj) that expands the
wildcards in the arguments. It looks like something strange is happening
during that wildcard expansion.
It would be best to report this to whoever built the Subversion
binaries; it might be that their setargv.obj is corrupt somehow.
In any case, there's no code in Subversion proper for expanding
wildcards in the command-line arguments.
Just to keep this list in the loop, in case someone else stumbles
There is a bug in the (at this time) latest Windows SDK, version
10.0.17134.0, that causes the first matching filename to be
truncated to one character.
An upcoming Windows Update is supposed to fix it.
https://developercommunity.visualstudio.com/content/problem/289637/setargvobj-is-broken-in-the-latest-windows-sdk.html
"Nice." Especially since, to fix the problem, they'll have to rebuild
the Subversion binaries.

-- Brane

Loading...