GIT post-receive checkout без корневой папки

Я новичок в git, пытаюсь выяснить, как обновлять веб-сайт при каждом нажатии, выполняя проверку в корневом веб-каталоге. Я искал stackru и нашел только темы о том, как клонировать, а это не то, что я хочу. На данный момент я настроил свои локальные и удаленные репозитории и хук после получения:

#!/bin/sh
GIT_WORK_TREE=/path/to/website/httpdocs git checkout -f

Моя проблема в том, что корневая папка проекта включена в оформление заказа... когда я помещаю содержимое в удаленное хранилище, у меня получается что-то вроде

/path/to/website/httpdocs/project_root/index.php

То, что я хотел бы достичь, это иметь

/path/to/website/httpdocs/index.php

Как я могу опустить корневую папку проекта при проверке?

1 ответ

Решение

Если:

  • / path / to / website / httpdocs - это git-репо
  • /path/to/project_root - это git-репозиторий (т.е. .git каталог)

Тогда вы можете использовать в своем post-receive крюк:

git --git-dir=/path/to/project_root/.git --work-tree=/path/to/website/httpdocs checkout -f

Но если вы настаиваете на project_root, это скорее пустое хранилище, в этом случае его корневой каталог должен называться /project_root.git и post-receive крючок будет выглядеть так:

git --git-dir=/path/to/project_root.git --work-tree=/path/to/website/httpdocs checkout -f

В любом случае, project_root должен быть корнем git репо.


Комментарии к choppingblock блоку:

похоже, что проблема вызвана подключаемым модулем eclipse git (EGit), который автоматически создает корневую папку с именем проекта.
Теперь я обошел его, изменив путь к webroot от /path/to/website/httpdocs в /path/to/website/httpdocs/project_root,

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