如果您指定掩码:
svn add *.cs
这不会进入子文件夹。
尝试了参数的所有变体depth:
svn add *.cs --depth=empty --force
svn add *.cs --depth=files --force
svn add *.cs --depth=immediates --force
svn add *.cs --depth=infinity --force
不工作:
svn: warning: W155010: 'D:\SvnNetKrv\*.cs' not found
svn: E200009: Could not add all targets because some targets don't exist
svn: E200009: Illegal target for the requested operation
如果您指定:
svn add *
所有子文件夹中的所有文件都会被占用。
为什么?如何确保所有文件*.cs(只有它们,因为只需要源代码)进入 SVN?
该表达式包含一个通配符,在执行svn
*.cs命令之前将被替换,并且只包括当前文件夹中包含 name 的文件,以及包含 name 的子包,例如:.cs.cs子文件夹中的所有文件都属于该掩码
*,因为所有子文件夹也属于该掩码。指定包含源文件的子文件夹,例如:
通配符的替换由 shell 处理,而不是由正在执行的命令处理,在本例中为svn。因此,什么通配符 -
*, ? [, ]等等。- 它们的更换方式取决于所使用的外壳。在常规操作系统上,这些是sh、bash等,在其他操作系统上是CMD、PowerShell或bash(如果安装了Cygwin、MinGW等)。如果您使用不同的解释器,即使在同一系统上,也不要期望同一命令的相同行为。如果有很多带有源的子文件夹,并且需要递归查找所有要添加到svn的文件,那么解决方案也取决于使用的命令解释器。
例如,在 CMD 中这样的地方(在批处理脚本中,使用循环变量
%%f):