XARGS на Windows: нет такого файла или каталога

1279
gerrod

Я хотел повторно синхронизировать теги в моем локальном git-репозитории с тегами на нашем удаленном сервере, используя этот ответ, предоставленный в StackOverflow :

git tag -l | xargs git tag -d git fetch --tags 

У меня мерзавца для окон портативными установлен, который включает в себя xargsот Findutils для Windows, (как это лучшее, что я могу сказать).

Когда я запускаю первую часть команды, все, что я получаю, это:

xargs: git: Нет такого файла или каталога

Если я изменю команду для запуска:

git tag -l | xargs echo 

Это правильно "повторяет" теги для меня. Итак, мой единственный вывод: xargs по какой-то причине не может разрешить исполняемые файлы по пути.

Как я могу заставить xargs правильно выполнить то, что ему передали (не прибегая к передаче полного пути к git.exe?)

2
Вы когда-нибудь решали эту проблему? Я вижу то же самое itslittlejohn 6 лет назад 0
Нет, никогда не доходил до сути: - | gerrod 6 лет назад 0
Выполнение точной команды в git bash работало нормально, так что я пошел с этим. ¯ \ _ (ツ) _ / ¯ itslittlejohn 6 лет назад 0

1 ответ на вопрос

1
Chris Oldwood

Я использую порт Gnu на Windows инструментов Unix и получаю похожую проблему, но сообщение об ошибке всегда Invalid argument, например

> printf "Hello World!" | xargs printf "%s %s" xargs: printf: Invalid argument 

Похоже, что одним из решений является использование «общеизвестного» дополнительного уровня косвенности, например оболочки, такой как cmd.exe, фактически, для вызова команды:

> printf "Hello World!" | xargs cmd /c printf "%s %s" Hello World!