私のMacでGit 2.8を使用していますが、私のリポジトリから変更をプッシュしてリモートマシンに配布できるように、私の生産マシン(Ubuntu Linux)にGIt postrecieveフックを設定しました。これを行うには、私は、私のプロジェクトディレクトリから、...私は、次のデータとのフック/ポスト受信ファイルを作成し私の生産現場で私の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にあります)。
リモートで履歴が必要ない場合は、gitを使用する理由は何ですか?必要なコンテンツのtarballを配信するだけです。あなたは 'git archive'を使ってそれを生成することができます(または単に' tar'を使って作成することができます)。 –