2016-12-30 24 views
-1

Я использую Git 2.8 на своем Mac, но настроил привязку GIt postrecieve на моей производственной машине (Ubuntu Linux), чтобы я мог вносить изменения из своего репозитория и развертывать их на своей удаленной машине. Для этого я запустил эти команды на удаленной машинеЕсть ли способ, которым я могу настроить свой репозиторий Git на моем производстве, чтобы не сохранять историю?

mkdir ~/appname_production 
    cd ~/appname_production 
    git init --bare 

Затем я создал Крючки/пост-получить файл со следующими данными ...

#!/bin/bash 

GIT_DIR=/home/deploy/appname_production 
WORK_TREE=/home/deploy/appname 
export appname_DATABASE_USER='rails' 
export appname_DATABASE_PASSWORD=‘password’ 

export RAILS_ENV=production 
. ~/.bash_profile 

while read oldrev newrev ref 
do 
    if [[ $ref =~ .*/master$ ]]; 
    then 
     echo "Master ref received. Deploying master branch to production..." 
     mkdir -p $WORK_TREE 
     git --work-tree=$WORK_TREE --git-dir=$GIT_DIR checkout -f 
     mkdir -p $WORK_TREE/shared/pids $WORK_TREE/shared/sockets $WORK_TREE/shared/log 

     # start deploy tasks 
     cd $WORK_TREE 
     bundle install 
     rake db:create 
     rake db:migrate 
     rake db:seed 
     rake tmp:cache:clear 
     rake assets:clobber 
     rake assets:precompile 
     sudo restart puma-manager 
     sudo service nginx restart 
     sudo service unicorn restart 
     # end deploy tasks 
     echo "Git hooks deploy complete" 
    else 
     echo "Ref $ref successfully received. Doing nothing: only the master branch may be deployed on this server." 
    fi 
done 

На моей локальной машине, из моего каталога проекта, Я побежал

git remote add production [email protected]_server_public_IP:appname_production 

и поэтому, когда я бегу

git push production master 

локально, мой проект развертывается на удаленном компьютере и развертывается. Мой вопрос: мне нужна только последняя версия (голова?) На моем удаленном компьютере, когда я нажимаю, и мне не нужно сохранять историю git на удаленной машине (главным образом потому, что я хочу сохранить дисковое пространство). Есть ли способ настроить мой репозиторий git на моем удаленном компьютере, чтобы он не сохранял все предыдущие коммиты/историю? Обратите внимание, что удаленная машина не является репозиторием git (то есть в gitlabs).

+2

Если вы не хотите историю на пульте дистанционного управления, зачем вообще использовать git? Просто доставьте tarball желаемого контента. Вы можете сгенерировать его с помощью 'git archive' (или просто создать его с помощью tar). –

ответ

0

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

Gitlabs does support hooks, так что вы должны иметь возможность установить там крюк, который будет толкать развертывание, продолжающееся в действии, которую вы можете определить. У вас может быть даже отдельный пульт управления на gitlab только для производственных развертываний, у которых будет этот крючок. Такой крючок может инициировать действия, которые у вас есть на вашем рабочем сервере, с добавлением мелкой проверки git на prod-сервере, если это то, что вы хотите.

Git сам по себе не является инструментом развертывания, даже если вы можете взломать все до такой степени, как вы это делали.

 Смежные вопросы

  • Нет связанных вопросов^_^