Проверка файлов git вне репозитория

есть ли возможность "выезда" на место вне репозитория? Что я имею в виду это клон ветки без ".git " directory.

например: используйте git для управления веб-сайтом. Вы редактируете некоторые файлы, фиксируете и копируете файлы на веб-сервер через WebDAV. WebDAV-path будет расположением вне репозитория, которое не должно содержать ".мерзавец."

возможно, это не та проблема, для которой был построен git, но возможно ли это?

20
задан slhck
27.12.2022 5:59 Количество просмотров материала 3524
Распечатать страницу

2 ответа

Да, это, безусловно, возможно.

допустим, у меня есть "голый" репозиторий с именем /srv/production.git на целевой системе/сервере.

о системе назначения я могу использовать команду cd /srv/production.git; GIT_WORK_TREE=/srv/production-www/ git checkout -f

если я нахожусь в непокрытом репозитории, команда немного отличается. Допустим, у меня есть не голая respository на /srv/testing. Чтобы проверить, что я буду использовать cd /srv/testing/.git; GIT_WORK_TREE=/srv/production-www/ git checkout -f

на самом деле на моей системе я даже автоматизировать это в пост-коммит Хук в мою production.git хранилище. Поэтому, когда вы нажимаете на production.git последняя версия автоматически извлечь в веб-корень.

#!/bin/sh
#
# An example hook script that is called after a successful
# commit is made.
#
# To enable this hook, rename this file to "post-commit".

GIT_WORK_TREE=/srv/production-www/ git checkout -f
# ... misc other commands to verify permissions are set correctly.

если ваш единственный доступ к удаленной системе webdav, это, конечно, должно быть возможно, чтобы написать после фиксации крюк, который будет извлекать на хост webdav, либо непосредственно, либо во временном месте, которое вы можете сценарий загрузки.

17
отвечен Zoredache 2022-12-28 13:47

если вы просто хотите файлов, вы можете использовать git archive. Обычно он записывает в архив, как tarballs или ZIP, но вы можете трубы его также:

git archive master | tar -x -C /some/path

здесь master очевидно, что это ветвь, которую вы хотите архивировать, и /some/path будет содержать только файлы .git или .gitignore.


или вы можете использовать git checkout-index который более похож на "извлечение" файлов:

git checkout-index -f -a --prefix=/some/path/

здесь -a вариант говорит git чтобы проверить все файлы. Префикс будет добавлен к выходным данным. Кто-то же написал обертка вокруг этого дать git export.

5
отвечен slhck 2022-12-28 16:04

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх