Как передать буквальную звездочку в svn propset в командной строке Windows и файле bat - PullRequest
0 голосов
/ 18 февраля 2020

Цель состоит в том, чтобы установить следующее свойство svn в файле .bat:

Properties on 'logs':
  svn:ignore
    *

Команда должна быть svn propset svn:ignore * logs, но звездочку нужно как-то экранировать. Я не хочу добавлять текущий список файлов. Я действительно хочу игнорировать все файлы в каталоге журналов, не игнорируя сам каталог журналов.

Однако я не могу понять, как правильно экранировать звездочку в получить буквальную звездочку в свойстве svn.

  • '*' приводит к тому, что строка '*' (с кавычками) будет установлена ​​в качестве значения, которое не игнорирует файлы вообще
  • "*" или ^* по-прежнему расширяет звездочку, заставляя svn установить свойство (с именем файла в текущем каталоге) во всех каталогах.
  • \* или "\*" вызывает SVN для поиска (или всех?) Файлов в root диска C: по какой-то причине
  • %* приводит к значению %*

Я не могу придумать какой-либо другой способ убежать от персонажа в файле летучей мыши.

1 Ответ

0 голосов
/ 24 апреля 2020

Я могу придумать два других способа попробовать, но, к сожалению, я не могу проверить их сам без дальнейших церемоний ...

  1. Может быть, это двойная карета ^^ ** ​​1005 *

  2. Вы можете попытаться исправить это, передав звездочку в качестве переменной внутри вашего пакетного файла. Пример:

@echo off
[...]
set asterisk=*
call svn propset svn:ignore %asterisk% logs
[...]

Это должно предотвратить расширение звездочки, поскольку переменная% asterisk% уже должна быть развернута, и нет второго прохода расширения, если вы не активировали ENABLEDELAYEDEXPANSION где-то в ваш командный сеанс (с cmd.exe /V:ON или SETLOCAL).

Замечание по поводу вашей попытки с \*: мне кажется, что такое поведение git полностью, поскольку \ означает root каталог текущего диска в UNIX / LINUX. И svn интерпретирует подстановочные знаки как реализованные в fnmatch в таких системах [см. Красное руководство по svn: ignore]. По сути, это работает и в Windows. cd \ выведет вас на первый уровень диска, а dir \*.* выведет список файлов на первом уровне, независимо от того, где вы находитесь в подкаталогах.

Надеюсь, это поможет. Удачи в вашем проекте :) 1026 *

...