Почему имя ветви не может содержать символ «пробел»?

Я попробовал:

git branch "MyProj/bin/ ignored"

и получил:

fatal: 'MyProj/bin/ ignored' is not a valid branch name.

Страница man git-branch указывает на git-check-ref -format man-страница, чтобы получить действительные правила для правильного имени ветки.

Конечно же, причиной вышеуказанной фатальной ошибки, по-видимому, является включение пробела.

Любая идея, почему в наше время пробелы все еще исключаются из названия ветви (я бы ожидал его, например, в древнем CVS, но в Git?)

Какие могут быть веские технические причины? за что?

57
задан 26 August 2012 в 17:10

1 ответ

Поскольку использование путей правильно в сценариях оболочки трудно. От связанного git check-ref-format сама страница справочника:

Эти правила помогают основанным на сценарии оболочки инструментам проанализировать ссылочные имена, расширение пути оболочкой, когда ссылочное имя используется закрывшее кавычки (по ошибке) и также избегает неоднозначностей в определенных ссылочных выражениях имени (видит gitrevisions (7)):

См. также Имена файлов и Пути в Shell: Как сделать это Правильно :

основная проблема состоит в том, что сегодня большей части Unix - нравится, позволяют именам файлов включать почти любые байты . Это включает новые строки, вкладки, символ ESC (включая escape-последовательности, которые могут выполнить команды при отображении), другие управляющие символы, пробелы (где угодно!), ведя тире (-), метасимволы оболочки и последовательности байта, которые представляет в виде строки aren’t легальный UTF-8.

...

Однако этот дефект в подобных Unix ядрах (позволяющий опасные имена файлов) объединения с дополнительными слабыми местами на языке Оболочки Bourne, делая еще более трудным в оболочке правильно обработать имена файлов и пути. Я думаю, что оболочка является разумным языком для коротких сценариев, когда правильно используется, но чрезмерное разрешение имен файлов превращает легкие задачи в easily-done-wrong задачи.

0
ответ дан 1 November 2019 в 17:12

Другие вопросы по тегам:

Похожие вопросы: