С помощью svn я смог запускать команды в файлах в кассе, не имея при этом cd
в этой проверке. Например:
# Located in /tmp, running svn operation on /home/d5ve/checkout
[email protected]:/tmp> svn add /home/d5ve/checkout/myfile.txt
[email protected]:/tmp> svn diff /home/d5ve/checkout/myfile.txt
[email protected]:/tmp> svn commit /home/d5ve/checkout/myfile.txt
Когда я пытаюсь выполнить этот рабочий процесс с помощью git, я получаю сообщение об ошибке:
# Located in /tmp, attempting git operation on /home/d5ve/checkout2
[email protected]:/tmp> git add /home/d5ve/checkout2/myfile.txt
fatal: Not a git repository (or any of the parent directories): .git
Я пробовал использовать флаги --git-dir
и --work-tree
, но, похоже, это тоже не сработало.
Любые предложения git люди? Я часто использую этот рабочий процесс и очень скучаю при использовании git.
UPDATE 2016 Текущий правильный ответ на этот вопрос - использовать флаг -C
для git, который был введен в версии 1.8.5 в 2013 году. См. qaru.site/info/159031/...
ОБНОВЛЕНИЕ: Основываясь на ответе lunaryorn ниже, я создал простой perl script, который выдает расположение каталога .git из путей к файлу и устанавливает условия GIT_WORK_TREE и GIT_DIR переменные для команды.
Пожалуйста, взгляните на: http://github.com/d5ve/rgit
ИСПОЛЬЗОВАНИЕ: rdit COMMAND [ARGS]
В основном просто замените git на rgit в команде, и вы можете запускать команды извне репозитория.
cd /tmp
rgit diff /home/d5ve/checkout1
rgit add /home/d5ve/checkout1/rgit.pl
rgit commit /home/d5ve/checkout1/