Есть ~/work/project и ~/Dropbox/, в котором project → ~/work/project
В самом ~/work/project папка .git вынесена в ~/work/project-git
Так вот, как без создания симлинка можно по прежнему вызывать git в ~/work/project?
Симлинк использовать нельзя так как дропбокс скопирует все содержимое. Может, ему можно как-то сказать не делать этого?
Ответ
адресоваться к каталогу с хранилищем (если он находится не в каталоге .git в корне проекта) можно разными способами.
в вашем случае подойдёт адресация с помощью файла .git, описанная, например, в этом ответе
покажу на примере:
рабочую копию (workdir) вы хотите держать в каталоге /путь/к/проекту
а само хранилище (gitdir) хотите держать в каталоге /путь/к/хранилищу
сделайте текущим каталог /путь/к/проекту
$ cd /путь/к/проекту
инициализируйте хранилище:
для программы git версии 1.7.5 или выше
$ git --separate-git-dir /путь/к/хранилищу init
в каталоге /путь/к/хранилищу будет создано полноценное хранилище со всеми необходимыми файлами/каталогами: branches, config, description и т.д., а в текущем каталоге будет создан файл .git с «отсылкой» к месторасположению хранилища, такого содержания:
gitdir: /путь/к/хранилищу
для программы git версии ниже 1.7.5 надо будет проделать описанное в полу-ручном режиме:
$ git --git-dir=/путь/к/хранилищу --work-tree=. init
$ echo "gitdir: /путь/к/хранилищу" > .git
для случая, если хранилище уже существует в каталоге .git в корне вашего проекта, потребуются такие действия:
сделайте текущим каталог /путь/к/проекту
$ cd /путь/к/проекту
установите явно в конфигурации хранилища путь к рабочему каталогу:
$ git config core.worktree /путь/к/проекту
переместите каталог .git в нужное место с нужным именем (целевой каталог /путь/к/хранилищу не должен существовать в этот момент, иначе файлы/каталоги хранилища попадут в /путь/к/хранилищу/.git):
$ mv .git /путь/к/хранилищу
создайте файл .git в текущем каталоге:
$ echo "gitdir: /путь/к/хранилищу" > .git
Комментариев нет:
Отправить комментарий