Мне нужно защитить репо; Может ли кто-нибудь указать мне учебник о том, как добиться этого на машинах Windows?
Что именно вы подразумеваете под "безопасными репо"? Просто иметь дело с тем, что сервер выставлен в интернет? SSH должно быть достаточно для вас в этом случае. Если бы это был только ты, я, вероятно, не стал бы беспокоиться о чем-то таком, как gitolite - просто создай пустой репозиторий на сервере и не делай его доступным, кроме как через SSH. Я не уверен, какой совет по настройке вам нужен - вам просто нужно иметь возможность подключиться по ssh к компьютеру и получить доступ к пути к хранилищу.
Должна ли папка .git находиться в общедоступном каталоге http или это плохая практика в отношении безопасности?
Вам решать, хотите ли вы, чтобы ваш производственный сайт действительно был хранилищем. Это облегчает работу, но вы захотите настроить свой веб-сервер так, чтобы он не предоставлял доступ к каталогу .git. Если вы параноик, вы также можете развернуть его без репозитория, хотя, например, с использованием git archive . Идея состоит в том, чтобы просто скопировать копию текущей версии в данный каталог.
Я рассчитывал работать с настройкой SSH, так как HTTP медленный и небезопасный. Какие другие рекомендуемые варианты у меня есть?
SSH и HTTPS - это два протокола git-передачи, которые необходимо учитывать, если вам нужна безопасность; нет никакой причины смотреть за их пределы. SSH должен быть намного проще в настройке и работе. (Git поддерживает несколько других протоколов, но все они либо не предназначены для безопасного использования, либо просто не так широко используются.)
Не лучше ли использовать патчи или объединить стабильную / протестированную ветку с моим выделенным сервером?
Полагаю, вы спрашиваете о месте производства здесь, так как упоминаете проверенную ветку. Это, конечно, зависит от того, есть ли у вас репозиторий для рабочего сайта или это просто извлеченная копия всего содержимого. В первом случае нет абсолютно никаких причин использовать патчи. Просто потяните в производственный репозиторий:
cd /path/to/production-site
git pull /path/to/testing-site stable-branch
Если ваш производственный сайт не является хранилищем, я, вероятно, сделаю что-то вроде этого:
# check out a copy of the updated version
git archive --format=tar --prefix=new-site HEAD | (cd /var/www && tar xf -)
# swap it into place
mv /var/www/site /var/www/old-site
mv /var/www/new-site /var/www/site
rm -rf /var/www/old-site
Я, очевидно, парень из Linux, поэтому эти инструкции могут потребовать небольшой модификации для Windows, но идея должна быть довольно ясной.