Это может быть очень простой вопрос, хотя все ответы, которые я мог найти для него, были «установить git» или «находиться в каталоге git». Насколько я вижу, оба из них уже решены, но моя проблема сохраняется. Хотя решение может быть тривиально решено путем отказа от поведения по умолчанию без ввода данных, мне любопытно, какое неясное (или основное) поведение вызывает это.
Вопрос [Git через Пакет]
Допустим, у меня есть git-репо в "C: \ RepoBase", среди прочих возможных, но это main репо, к которому я хочу по умолчанию. Не обсуждая дальнейшие функции, сценарий будет либо CD в место, указанное в качестве ввода, либо в путь по умолчанию, если ввод не предоставлен, а затем перейдет к получению имени текущего коммита заголовка.
:: Go to the repo in question
if [%1]==[] (
cd C:\RepoBase
) else (
cd %1
)
:: Get name of current branch
FOR /F "tokens=*" %%g IN (
'call git rev-parse --abbrev-ref HEAD'
) do (
SET CurrentBranch=%%g
)
Это решение работает . Однако, если я хочу получить несущественное преимущество от использования имени пути, в который я перешел позже, без необходимости повторного использования условного выражения, даже несмотря на то, что было бы возможно получить имя каталога после перехода в него, Я пытаюсь установить переменную для использования в качестве пути. Это делает CD в каталог нормально, но из того же места, что и вышеприведенный фрагмент, вызовы git из приведенного ниже фрагмента приводят к «не распознанному». Почему?
:: Go to the repo in question
SET PATH=%1
if [%1]==[] (
SET PATH=C:\RepoBase
)
cd "%PATH%"
:: Get name of current branch
FOR /F "tokens=*" %%g IN (
'call git rev-parse --abbrev-ref HEAD'
) do (
SET CurrentBranch=%%g
)